VF程序汇总
VF程序命令语句大全
VF程序命令语句大全VF常用命令和函数大全五、命令语句大全五、命令语句大全在下一行显示表达式串在当前行显示表达式串@... 将数据按用户设定的格式显示在屏幕上或在打印机上打印ACCEPT 把一个字符串赋给内存变量APPEND 给数据库文件追加记录APPEND FROM 从其它库文件将记录添加到数据库文件中AVERAGE 计算数值表达式的算术平均值BROWSE 全屏幕显示和编辑数据库记录CALL 运行内存中的二进制文件CANCEL 终止程序执行,返回圆点提示符CASE 在多重选择语句中,指定一个条件CHANGE 对数据库中的指定字段和记录进行编辑CLEAR 清洁屏幕,将光标移动到屏幕左上角CLEAR ALL 关闭所有打开的文件,释放所有内存变量,选择1号工作区CLEAR FIELDS 清除用SET FIELDS TO命令建立的字段名表CLEAR GETS 从全屏幕READ中释放任何当前GET语句的变量CLEAR MEMORY 清除当前所有内存变量CLEAR PROGRAM 清除程序缓冲区CLEAR TYPEAHEAD 清除键盘缓冲区CLOSE 关闭指定类型文件CONTINUE 把记录指针指到下一个满足LOCATE命令给定条件的记录,在LOCATE 命令后出现。
无LOCATE则出错COPY TO 将使用的数据库文件复制另一个库文件或文本文件COPY FILE 复制任何类型的文件COPY STRUCTURE EXTENED TO 当前库文件的结构作为记录,建立一个新的库文件COPY STRUCTURE TO 将正在使用的库文件的结构复制到目的库文件中COUNT 计算给定范围内指定记录的个数CREATE 定义一个新数据库文件结构并将其登记到目录中CREATE FROM 根据库结构文件建立一个新的库文件CREATE LABEL 建立并编辑一个标签格式文件CREATE REPORT 建立宾编辑一个报表格式文件DELETE 给指定的记录加上删除标记DELETE FILE 删除一个未打开的文件DIMENSION 定义内存变量数组DIR 或 DIRECTORY 列出指定磁盘上的文件目录DISPLAY 显示一个打开的库文件的记录和字段DISPLAY FILES 查阅磁盘上的文件DISPLAY HISTORY 查阅执行过的命令DISPLAY MEMORY 分页显示当前的内存变量DISPLAY STATUS 显示系统状态和系统参数DISPLAY STRUCTURE 显示当前数据库文件的结构DO 执行FoxBase程序DO CASE 程序中多重判断开始的标志DO WHILE 程序中一个循环开始的标志EDIT 编辑数据库字段的内容EJECT 使打印机换页的命令,将PROW()函数和PCOL()函数值置为0ELSE 在IF...ENDIF结构中提供另一个条件选择路线ENDCASE 终止多重判断ENDDO 程序中一个循环体结束的标志ENDIF 判断体IF...ENDIF结构结束标志ERASE 从目录中删除指定文件EXIT 在循环体内执行退出循环的命令FIND 将记录指针移动到第一个含有与给定字符串一致的索引关键字的记录上FLUSH 清除所有的磁盘存取缓冲区GATHER FROM 将数组元素的值赋予数据库的当前记录中GO/GOTO 将记录指针移动到指定的记录号HELP 激活帮助菜单,解释FoxBASE+的命令IF 在IF...ENDIF结构中指定判断条件INDEX 根据指定的关键词生成索引文件INPUT 接受键盘键入的一个表达式并赋予指定的内存变量INSERT 在指定的位置插入一个记录JOIN 从两个数据库文件中把指定的记录和字段组合成另一个库文件KEYBOARD 将字符串填入键盘缓冲区LABEL FROM 用指定的标签格式文件打印标签LIST 列出数据库文件的记录和字段LIST FILES 列出磁盘当前目录下的文件LIST HISTORY 列出执行过的命令LIST MEMORY 列出当前内存变量及其值LIST STATUS 列出当前系统状态和系统参数LIST STRUCTURE 列出当前使用的数据库的库结构LOAD 将汇编语言程序从磁盘上调入内存LOCATE 将记录指针移动到对给定条件为真的记录上LOOP 跳过循环体内LOOP与ENDDO之间的所有语句,返回到循环体首行MENU TO 激活一组@...PROMPT命令定义的菜单MODIFY COMMAND 进入FoxBASE+系统的字处理状态,并编辑一个ASCII码文本文件(如果指定文件名以.PRG为后缀,则编辑一个FoxBASE+命令文件)MODIFY FILE 编辑一个一般的ASCII码文本文件MODIFY LABEL 建立并编辑一个标签(.LBL)文件MODIFY REPORT 建立并编辑一个报表格式文件(.FRM)文件MODIFY STRUCTURE 修改当前使用的库文件结构NOTE/* 在命令文件(程序)中插入一行注释(本行不被执行)ON 根据指定条件转移程序执行OTHERWISE 在多重判断(DO CASE)中指定除给定条件外的其它情况PACK 彻底删除加有删除标记的记录PARAMETERS 指定子过程接受主过程传递来的参数所存放的内存变量PRIVATE 定义内存变量的属性为局部性质PROCEDURE 一个子过程开始的标志PUBLIC 定义内存变量为全局性质QUIT 关闭所有文件并退出FoxBASE+READ 激活GET语句,并正式接受在GET语句中输入的数据RECALL 恢复用DELETE加上删除标记的记录REINDEX 重新建立正在使用的原有索引文件RELEASE 清除当前内存变量和汇编语言子程序RENAME 修改文件名REPLACE 用指定的数据替换数据库字段中原有的内容REPORT FORM 显示数据报表RESTORE FROM 从内存变量文件(.MEM)中恢复内存变量RESTORE SCREEN 装载原来存储过的屏幕映象RESUME 使暂停的程序从暂停的断点继续执行RETRY 从当前执行的子程序返回调用程序,并从原调用行重新执行RETURN 结束子程序,返回调用程序RUN/!在FoxBASE+中执行一个操作系统程序SAVE TO 把当前内存变量及其值存入指定的磁盘文件(.MEM)SAVE SCREEN 将当前屏幕显示内容存储在指定的内存变量中SCATTER 将当前数据库文件中的数据移到指定的数组中SEEK 将记录指针移到第一个含有与指定表达式相符的索引关键字的记录SELECT 选择一个工作区SET 设置FoxBASE+控制参数SET ALTERNATE ON/OFF 设置传送/不传送输出到一个文件中SET ALTERNATE TO 建立一个存放输出的文件SET BELL ON/OFF 设置输入数据时响铃/不响铃SET CARRY ON/OFF 设置最后一个记录复制/不复制到添加的记录中SET CENTURY ON/OFF 设置日期型变量要/不要世纪前缀SET CLEAR ON/OFF 设置屏幕信息能/不能被清除SET COLOR ON/OFF 设置彩色/单色显示SET COLOR TO 设置屏幕显示色彩SET CONFIRM ON/OFF 设置在全屏幕编辑方式中,要求/不要求自动跳到下一个字段SET CONSOLE ON/OFF 设置将输出传送/不传送到屏幕SET DATE 设置日期表达式的格式SET DEBUG ON/OFF 设置传送/不传送ECHO的输出到打印机上SET DECIMALS TO 设置计算结果需要显示的小数位数SET DEFAULT TO 设置默认的驱动器SET DELETED ON/OFF 设置隐藏/显示有删除标记的记录SET DELIMITER TO 为全屏幕显示字段和变量设置定界符SET DELIMITER ON/OFF 选择可选的定界符SET DEVICE TO SCREEN/PRINT 将@...SAY命令的结果传送到屏幕/打印机SET DOHISTORY ON/OFF 设置存/不存命令文件中的命令到历史记录中SET ECHO ON/OFF 命令行回送到屏幕或打印机SET ESCAPE ON/OFF 允许ESCAPE退出/继续命令文件的执行SET EXACT ON/OFF 在字符串的比较中,要求/不要求准确一致SET EXACLUSIVE ON/OFF 设置数据库文件的共享SET FIELDS ON/OFF 设置当前打开的数据库中部分/全部字段为可用SET FIELDS TO 指定打开的数据库中可被访问的字段SET FILTER TO 在操作中将数据库中所有不满足给定条件的记录排除SET FIXED ON/OFF 固定/不固定显示的小数位数SET FORMAT TO 打开指定的格式文件SET FUNCTION 设置F1-F9功能键值SET HEADING ON/OFF 设置LIST或DISPLAY时,显示/不显示字段名SET HELP ON/OFF 确定在出现错误时,是否给用户提示SET HISTORY ON/OFF 决定是/否把命令存储起来以便重新调用SET HISTORY TO 决定显示历史命令的数目SET INDEX TO 打开指定的索引文件SET INTENSITY ON/OFF 对全屏幕操作实行/不实行反转显示SET MARGIN TO 设置打印机左页边SET MEMOWIDTH TO 定义备注型字段输出宽度和REPORT命令隐含宽度SET MENU ON/OFF 确定在全屏幕操作中是否显示菜单SET MESSAGE TO 定义菜单中屏幕底行显示的字符串SET ODOMETER TO 改变TALK命令响应间隔时间SET ORDER TO 指定索引文件列表中的索引文件SET PATH TO 为文件检索指定路径SET PRINT ON/OFF 传送/不传送输出数据到打印机SET PRINTER TO 把打印的数据输送到另一种设备或一个文件中SET PROCEDURE TO 打开指定的过程文件SET RELATION TO 根据一个关键字表达式连接两个数据库文件SET SAFETY ON/OFF 设置保护,在重写文件时提示用户确认SET SCOREBORAD ON/OFF 设置是/否在屏幕的第0行上显示FoxBASE+的状态信息SET STATUS ON/OFF 控制是/否显示状态行SET STEP ON/OFF 每当执行完一条命令后,暂停/不暂停程序的执行SET TALK ON/OFF 是否将命令执行的结果传送到屏幕上SET TYPEAHEAD TO 设置键盘缓冲区的大小SET UNIQUE ON/OFF 在索引文件中出现相同关键字的第一个/所有记录SKIP 以当前记录指针为准,前后移动指针SORT TO 根据数据库文件的一个字段或多个字段产生一个排序的库文件STORE 赋值语句SUM 计算并显示数据库记录的一个表达式在某范围内的和SUSPEND 暂停(挂起)程序的执行TEXT...ENDTEXT 在屏幕上当前光标位置显示...的文本数据块TOTAL TO 对预先已排序的文件产生一个具有总计的摘要文件TYPE 显示ASCII码文件的内容UNLOCK 解除当前库文件对记录和文件的加锁操作UPDATE 允许对一个数据库进行成批修改USE 带文件名的USE命令打开这个数据文件。
VFP常用命令函数程序汇总
常用命令函数程序汇总一、主要命令:1、CREATE 文件名作用:建立一个以.dbf为扩展名的新表。
在命令中不加文件名或问号系统也会弹出对话框,要求用户输入想要建立的表名。
2、MODIFY STRUCTURE作用:显示表文件结构,并允许修改此表的结构。
只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
3、APPEND作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
若为APPEND [BLANK]是指在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。
无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
4、INSERT作用:在表文件中间插入一个新记录。
若为INSERT [BEFORE] [BLANK],则INSERT表示在当前记录后插入一记录;INSERT BEFORE 在当前记录前插入一记录;INSERT BEFORE BLANK 在当前记录前插入一空记录。
5、BROWSE作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。
若为BROWSE [FIELDS <字段名表>],则表示看到所列字段名的字段内容。
6、USE作用:打开(USE 文件名)和关闭表文件(USE)。
说明:前一个命令用来打开<文件名>指定的表文件,该表如有备注型字段,则同时打开相应的备注文件(.fpt文件);后一个命令关闭当前打开的表文件。
7、LIST和DISPLAY作用:显示表(.dbf)的内容、结构或状态。
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>][TO PRINT|TO FILE <文件>]LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>]LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>]说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行操作,范围包括:RECORD n第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记录、ALL所有的记录。
vf路政管理系统-程序清单
程序清单一、主界面程序清单初始化数据set escape onset default to .set century onset escape onset date to ymdpublic daxie(10)daxie(1)="零"daxie(2)="壹"daxie(3)="贰"daxie(4)="叁"daxie(5)="肆"daxie(6)="伍"daxie(7)="陆"daxie(8)="柒"daxie(9)="捌"daxie(10)="玖"SELE 1use 表1二、票据处理程序清单系统变量:public wan,qian,bai,shi,yuan,jiao,fen,yuefen,shiwan查找按钮:go toplocate for 车辆行驶证号=alltrim(thisform.text1.value) &&thisform.text1.refreshthisform.经营许可证号1.value=经营许可证号thisform.经营许可证号1.refreshthisform.吨位1.refreshthisform.交费日期1.refreshthisform.起交费月份1.refreshthisform.止交费月份1.refreshthisform.结算方式1.refreshthisform.收款人.refreshthisform.制票人.refreshif eof()=messagebox("您所要查找的记录未找到!",64)endif保存按钮:交费日期=thisform.交费日期1.value起交费月份=thisform.起交费月份1.value止交费月份=thisform.止交费月份1.value结算方式=thisform.结算方式1.value制票人=thisform.制票人.value收款人=thisform.收款人.valuereplace 定额管理费with 14.00replace 工本费with 1.00yjje=定额管理费*吨位*(val(止交费月份)-val(起交费月份)+0.01)*100 replace 应交金额with yjjeprintno=recno()shiwan=int(应交金额/100000)wan=int((应交金额-100000*shiwan)/10000)qian=int((应交金额-100000*shiwan-10000*wan)/1000)bai=int((应交金额-100000*shiwan-10000*wan-1000*qian)/100)shi=int((应交金额-100000*shiwan-10000*wan-1000*qian-100*bai)/10)yuan=int(应交金额-100000*shiwan-10000*wan-1000*qian-100*bai-10*shi) jiao=int((应交金额-abs(应交金额))/0.1)fen=int((应交金额-abs(应交金额)-0.1*jiao)/0.01)yuefen=alltrim(起交费月份-"--"-止交费月份)b=messagebox("是否打印?",292)if b=6report form 票据record printno to printer &&previewendif三、查询程序清单1、按车辆类型查询:public cllxcllx=alltrim(thisform.text1.value)sele 1go topdo form 车类显示thisform.release2、按车辆行驶证号查询:public clxszhclxszh=alltrim(thisform.text1.value)sele 1go topdo form 车证显示thisform.release3、按吨位查询:public dwdw=val(alltrim(thisform.text1.value))sele 1go topdo form 吨位显示thisform.release四、统计程序清单1、按单位统计:set escape onuse 统计表in 0select 统计表zapselect 表1set order to 单位go topts=0dunwei=0do while .not. eof()danwei=单位cheliang=车辆类型ts1=1ts=ts+1dunwei1=吨位dunwei=dunwei+吨位syjl1=审验纪录1syjl2=审验纪录2syjl3=审验纪录3skipselect 统计表append blankreplace 单位with danwei,车辆类型with cheliang,台数with ts1,吨位with dunwei1,审验纪录1 with syjl1,审验纪录2 with syjl2,审验纪录3 with syjl3select 表1enddoselect 统计表append blankreplace 单位with "总计",台数with ts,吨位with dunwei do form 单位统计name 统计select 统计表useselect 表12、按经营范围统计sele 6zapjyfw=alltrim(thisform.经营范围.value)append from 表1 for 经营范围=alltrim(thisform.经营范围.value) sele 7zapsele 6set order to 单位go topts=0dunwei=0do while .not. eof()danwei=单位cheliang=车辆类型ts1=1ts=ts+1dunwei1=吨位dunwei=dunwei+吨位syjl1=审验纪录1syjl2=审验纪录2syjl3=审验纪录3skipselect 经营统计append blankreplace 单位with danwei,车辆类型with cheliang,台数with ts1,吨位with dunwei1,审验纪录1 with syjl1,审验纪录2 with syjl2,审验纪录3 with syjl3select 经营范围enddoselect 经营统计append blankreplace 单位with "总计",台数with ts,吨位with dunweiselect 经营统计usesele 经营范围useselect 表1do form 范围统计thisform.release3、按吨位统计sele 6zapjyfw=val(thisform.吨位.value)append from 表1 for 吨位=val(thisform.吨位.value)sele 7zapsele 6set order to 单位go topts=0dunwei=0do while .not. eof()danwei=单位cheliang=车辆类型ts1=1ts=ts+1dunwei1=吨位dunwei=dunwei+吨位syjl1=审验纪录1syjl2=审验纪录2syjl3=审验纪录3skipselect 经营统计append blankreplace 单位with danwei,车辆类型with cheliang,台数with ts1,吨位with dunwei1,审验纪录1 with syjl1,审验纪录2 with syjl2,审验纪录3 with syjl3select 经营范围enddoselect 经营统计append blankreplace 单位with "总计",台数with ts,吨位with dunweiselect 经营统计usesele 经营范围useselect 表1do form 统计吨位thisform.release五、系统功能程序清单1、备份数据:if messagebox("确实要备份数据吗?",65,"备份")=1SELE 表1USECOPY FILE 表1.CDX TO .\BACKUP\表1.CDXCOPY FILE 表1.DBF TO .\BACKUP\表1.DBF=messagebox("备份数据成功",64,"成功")SELE 1USE 表1ENDIF2、恢复数据:if messagebox("这项操作将会覆盖您现有的数据,确实要恢复数据吗?",65,"恢复")=1SELE 1USECOPY FILE c:\备份\表1.CDX TO c:\zgyz\表1.CDXCOPY FILE c:\备份\表1.DBF TO c:\zgyz\表1.DBF=MESSAGEBOX("恢复数据成功!",64,"成功")USE 表1ENDIF3、修改密码:if messagebox("确定要修改密码吗?",65,"确认")=1if thisform.text1.value=密码if thisform.text2.value=thisform.text3.valuereplace 密码with thisform.text2.value=messagebox("修改密码成功",64,"成功")else=messagebox("新密码输入错误",48,"错误")endifelse=messagebox("密码不符!",64,"错误") endifendif。
VF工厂稽核程序Factory Audit Procedure
VF’s Factory Audit Procedure For Vendors, Factories, Buyers, and Agents VF 工厂稽核程序致供应商、工厂、采购方和代理商VF Corporation policyVF公司政策❑Conducting Factory Compliance Audits to monitor every facility that is involved in the manufacture of a VF branded product, and brands for which VFCorporation is licensed to produce.通过实施工厂遵章审核来监督每个生产VF品牌产品和VF公司授权生产的品牌的工厂。
❑Include all cutting facilities, sewing plants, screen printers, embroiderers, laundries, and packaging locations.包括所有裁断、缝纫、丝印、绣花、洗衣和包装区域。
❑Will also conduct Life Safety Audits at all facilities contracted by VF that are engaged in the production of Textiles, Leather, and Polymer (soles and foot beds).也将在所有VF授权的纺织品、皮革制品和聚合物(鞋底和鞋垫)生产工厂推行生命安全评估。
Rule规则Production 产品Violation Result 违反的结果Absolutely no production can be produced in a facility until a factory inspection has taken place.没有经过审核的工厂,绝不可能生产VF 的产品。
VF典型程序实例
《省二级考试__ VF程序实例》应对等级考试笔试和上机程序的程序实例基本(十一大类):一、多工作区、Replace、copy to .二、累加、累乘三、双重循环:金字塔问题等四、排序五、循环查询:locate\seek六、循环插入新记录七、子程序和参数传递\变量的作用域八、@行,列say ... get ... default ...read字幕问题九、scatter/gather十、数组(结合排序)十一、综合题一、多工作区、Replace、copy to .例题1: 涉及set relation to有如下表:(1) XS.DBF(学号C(8),姓名C(8),性别C(2),班级C(9),出生日期D,走读L)(2) CJ.DBF(学号C(8),课程名C(20),成绩N(5,1))说明:一个学生可以选择多门课程。
请编写一个完整的程序,该程序能完成以下功能:1、将表XS.DBF和表CJ.DBF建立关联,并显示出所有男同学的姓名以及他们所选课程的课程名2、将XS.DBF表中所有班级为“2002级2班”的同学信息拷贝到新表STUDENT.DBF中,STUDENT .DBF只含有学号、姓名、性别、走读四个字段3、将姓名为“王小平”的同学的所有成绩提高10%CLEARCLOSE ALLSELE 2USE CJINDEX ON 学号TO XHSELE 1USE XSSET RELA TION TO 学号INTO BSET SKIP TO BLIST FOR 性别='男' FIELDS 姓名,B.课程名COPY TO STUDENT FOR 班级='2002级2班' FIELDS 学号,姓名,性别,走读replace b.成绩with b.成绩*1.1 for a.姓名="王小平"例题2: 涉及update下面有两张表:总分表:ZF.DBF学号姓名语文数学总分110 张三114 李四119 王二成绩表:CJ.DBF学号语文数学110 67 65114 89 67119 78 95按照成绩表的成绩修改总分表的成绩,并计算出总分表的总分字段参考答案:CLOSE ALLSELE 2USE CJINDEX ON 学号TAG XHCJSELE 1USE ZFINDEX ON 学号TAG XHZFUPDA ON 学号FROM B REPL 语文WITH B.语文,数学WITH B.数学REPL ALL 总分WITH 语文+数学LIST例题3: 涉及join with:将STUDENT.DBF 和学生成绩.DBF 连接成新文件NEW.DBF表1: student(学号c(4),姓名c(8),性别L,出生日期D,高考成绩N(5,2)) 表2: 学生成绩(学号c(4),课程号C(3),分数N(2))SELECT 1USE STUDENTSELECT 2USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号;FIEL 学号,A.姓名,A.性别,A.出生日期,课程号,分数USE NEWLIST如果再增加一张表,三表相连:表3: 课程(课程号C(3),课程名称C(10))SELECT 1USE STUDENTSELECT 2USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号SELE 1USE NEWSELE 2USE 课程JOIN WITH A TO STU FOR 课程号=A.课程号USE STULIST******************************************************************************* 二、累加、累乘例1:累加:求1~100的和SUM=0FOR I=1 TO 100SUM=SUM+IENDFOR?’1~100的总和为:’,SUM使用DO WHILE 实现:SUM=0I=1DO WHILE I<101SUM=SUM+II=I+1ENDDO?’1~100的总和为:’,SUM例2:累乘:求n!clearINPUT "求n!,请输入n的值:" TO NMUL=1FOR I=1 TO nMUL=MUL*IENDFOR?n,’的值为:’,MUL例3:输入n的值,求1+1/2!+1/3!+1/4!+….+1/n! (阶乘n!=1*2*3*4....*(n-1)*n )CLEARSUM=_①_MUL=_②_INPUT "请输入n的值:" TO NFOR i=1 TO NFOR j=1 TO iMUL=MUL*__③__ENDFORSUM= SUM+____④_____ENDFOR?'求得的总和为: ',SUM答案:1: 0 2: 1 3: j 4: 1/mul注意:外循环是累加,内循环是累乘******************************************************************************* 三、双重循环:金字塔问题等看书阅读:1、P159页:例4.392、P160页:例4.403、求1-100间所有的质数CLEAR?’2、3是质数’FOR I=4 TO 100FOR J=2 TO INT(SQRT(I))IF MOD(I,J)=0EXITENDIFENDFORIF J> INT(SQRT(I))?I,’是质数’ENDIFENDFOR4、运行XY.PRG程序后,将在屏幕上显示如下乘法表:1) 12) 2 43) 3 6 94) 4 8 12 165) 5 10 15 20 256) 6 12 18 24 30 367) 7 14 21 28 35 42 498) 8 16 24 32 40 48 56 649) 9 18 27 36 45 54 63 72 81请对下面的程序填空:* * * 计算乘法XY.PRG * * *CLEARFOR J=1 TO 9?STR(J,2)+') 'FOR ______________?? ______________ENDFOR?ENDFORRETURN第一空K=1 TO J 第二空STR(J*k,6)5、排序问题******************************************************************************* 四、排序输入10个数,将它们从小到大排列分析: 用i代表趟数,j代表次数(1)10个数要比较9趟(2)每趟要比较的次数为: 10-趟数(3)每次比较:如果当前数a(j)大于本次比较的最后一个数a(10+1-i)那么就交换,否则不交换cleardime a(10)?'输入10个数: 'for i=1 to 10input "请输入: " to a(i)endforfor i=1 to 9for j=1 to 10-iif a(j)>a(10-i+1)t=a(10-i+1)a(10-i+1)=a(j)a(j)=tendifendforlist memo like a另外可以参看书:P162-163页例 4.45******************************************************************************* 五、查询:locate\seek有下列表:book(书名C(20),作者C(8),出版日期D,内容简介M)编写程序:查询关于foxpro 的图书.USE BOOKLOCA TE FOR ‘foxpro’$ 书名IF ! FOUND()?’没有关于foxpro的图书’ELSEDO WHILE ! EOF()CLEAR?书名,作者,出版日期?内容介绍W AIT “是否继续查找?(Y/N)”TO MIF M$’nN’EXITENDIFCONTINUEENDDO?”全部显示完成”ENDIF注意:关键地方在于1、什么地方用locate,什么地方用continue2、if .. exit .. endif3、do while not 的条件使用Locate查找出所有入校总分在580及以上的所有同学信息clearuse 学生locate for 入校总分>=580do while .not. eof()dispcontinuenddocancel******************************************************************************* 六、循环插入新记录编写程序,对于学生.dbf能够在程序末尾循环插入新记录CLEARCLOSE ALLUSE 学生DO WHILE .T.APPE BLANK@5,20 SA Y '学号' GET 学号@5,40 SA Y '姓名' GET 姓名@7,20 SA Y '性别' GET 性别@7,30 SA Y '出生年月' GET 出生年月@9,20 SA Y '入校总分' GET 入校总分READW AIT '你想继续插入新记录吗?(Y/N) : ' TO XIF X='N' OR X='n'EXITENDIFCLEARENDDOCLEARLISTCLOSE ALL类似:编写程序,该程序能够顺序修改表学生.DBF中的所有数据。
VF经典题 程序题汇总
231 1 若某整数平方等于某两个正整数平方之和的正整数称为弦数。
例如:由于3^2+4^2=5^2,则5为弦数,求[100,200]之间最大的弦数。
130 2011232 2 求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。
试问这样的整数解中|x|+|y|的最大值是多少? 323 2011233 3 若两素数之差为2 ,则称两素数为双胞胎数,问[31,600]之间有多少对双胞胎数。
21 2011234 1 若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。
求[1,500]之间有多少个多因子完备数。
5 2012235 2 求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。
试问这样的整数解中x+y的最大值是多少? 314 2012236 3 一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p 为逆向超级素数。
例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。
试求[100,999]之内的所有逆向超级素数的个数。
39 2012237 1 若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。
求[1,200]之间有多少个多因子完备数。
4 2013238 2 四位数的各位数字的平方和等于100,问其中最大的一个是多少? 9331 2013239 3 设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的最大四位数abcd的值。
VFP常用命令和程序命令
VFP常用命令和程序命令一、主要命令:1、CREATE作用:建立一个新的表。
格式:CREATE [<文件>|?]2、MODIFY STRUCTURE作用:显示表文件结构,并允许修改此表的结构。
格式:MODIFY STRUCTURE3、APPEND作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
格式:APPEND [BLANK]4、INSERT作用:在表文件中间插入一个新记录。
格式:INSERT [BEFORE] [BLANK]说明:INSERT 在当前记录后插入一记录;INSERT BEFORE 在当前记录前插入一记录;INSERT BEFORE BLANK 在当前记录前插入一空记录。
5、BROWSE作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。
格式:BROWSE6、USE作用:打开和关闭表文件。
格式:USE [<文件名>]7、LIST和DISPLAY作用:显示表(.dbf)的内容、结构或状态。
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>] [TO PRINT|TO FILE <文件>]LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>]LIST|DISPLAY STA TUS [TO PRINT|TO FILE <文件>]说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行操作,范围包括: RECORD n 第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记录、ALL所有的记录。
不选范围则隐含范围为ALL;FIELDS后跟字段名,字段名与字段名之间用逗号分隔。
WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;FOR后的条件查找所有满足条件的记录。
vf所有命令
表(.dbf)数据库(.dbc)表单(.scx)标签(.lbx)菜单(.mnx)项目(.pjx)报表(.frx)程序(.prg)文本文件(.txt)select ... from ... where....update ...set... where....delete ....from ...where...insert....into....value.....? 在下一行显示表达式串 ?? 在当前行显示表达式串 @... 将数据按用户设定的格式显示在屏幕上或在打印机上打印 ACCEPT 把一个字符串赋给内存变量APPEND 给数据库文件追加记录 APPEND FROM 从其它库文件将记录添加到数据库文件中 A VERAGE 计算数值表达式的算术平均值 BROWSE 全屏幕显示和编辑数据库记录 CALL 运行内存中的二进制文件 CANCEL 终止程序执行,返回圆点提示符 CASE 在多重选择语句中,指定一个条件 CHANGE 对数据库中的指定字段和记录进行编辑 CLEAR 清洁屏幕,将光标移动到屏幕左上角 CLEARALL 关闭所有打开的文件,释放所有内存变量,选择1号工作区 CLEAR FIELDS 清除用SET FIELDS TO命令建立的字段名表 CLEAR GETS 从全屏幕READ中释放任何当前GET语句的变量 CLEAR MEMORY 清除当前所有内存变量 CLEARPROGRAM 清除程序缓冲区 CLEAR TYPEAHEAD 清除键盘缓冲区 CLOSE 关闭指定类型文件 CONTINUE 把记录指针指到下一个满足LOCATE命令给定条件的记录,在LOCATE命令后出现。
无LOCATE则出错 COPY TO 将使用的数据库文件复制另一个库文件或文本文件 COPY FILE 复制任何类型的文件 COPYSTRUCTURE EXTENED TO 当前库文件的结构作为记录,建立一个新的库文件 COPYSTRUCTURE TO 将正在使用的库文件的结构复制到目的库文件中 COUNT 计算给定范围内指定记录的个数 CREATE 定义一个新数据库文件结构并将其登记到目录中 CREATE FROM 根据库结构文件建立一个新的库文件 CREATE LABEL 建立并编辑一个标签格式文件 CREATE REPORT 建立宾编辑一个报表格式文件 DELETE 给指定的记录加上删除标记 DELETE FILE 删除一个未打开的文件 DIMENSION 定义内存变量数组 DIR 或DIRECTORY 列出指定磁盘上的文件目录 DISPLAY 显示一个打开的库文件的记录和字段 DISPLAY FILES 查阅磁盘上的文件 DISPLAY HISTORY 查阅执行过的命令 DISPLAY MEMORY 分页显示当前的内存变量 DISPLAY STATUS 显示系统状态和系统参数 DISPLAY STRUCTURE 显示当前书库文件的结构 DO 执行FoxBase程序 DO CASE 程序中多重判断开始的标志 DO WHILE 程序中一个循环开始的标志 EDIT 编辑数据库字段的内容 EJECT 使打印机换页的命令,将PROW()函数和PCOL()函数值置为0 ELSE 在IF...ENDIF结构中提供另一个条件选择路线 ENDCASE 终止多重判断 ENDDO 程序中一个循环体结束的标志 ENDIF 判断体IF...ENDIF结构结束标志 ERASE 从目录中删除指定文件 EXIT 在循环体内执行退出循环的命令 FIND 将记录指针移动到第一个含有与给定字符串一致的索引关键字的记录上 FLUSH 清除所有的磁盘存取缓冲区 GA THER FROM 将数组元素的值赋予数据库的当前记录中 GO/GOTO 将记录指针移动到指定的记录号 HELP 激活帮助菜单,解释FoxBASE+的命令 IF 在IF...ENDIF结构中指定判断条件 INDEX 根据指定的关键词生成索引文件 INPUT 接受键盘键入的一个表达式并赋予指定的内存变量 INSERT 在指定的位置插入一个记录 JOIN 从两个数据库文件中把指定的记录和字段组合成另一个库文件 KEYBOARD 将字符串填入键盘缓冲区 LABEL FROM 用指定的标签格式文件打印标签 LIST 列出数据库文件的记录和字段 LIST FILES 列出磁盘当前目录下的文件 LIST HISTORY 列出执行过的命令 LIST MEMORY 列出当前内存变量及其值 LIST STATUS 列出当前系统状态和系统参数 LIST STRUCTURE 列出当前使用的数据库的库结构 LOAD 将汇编语言程序从磁盘上调入内存 LOCATE 将记录指针移动到对给定条件为真的记录上 LOOP 跳过循环体内LOOP与ENDDO之间的所有语句,返回到循环体首行 MENU TO 激活一组@...PROMPT命令定义的菜单 MODIFY COMMAND 进入FoxBASE+系统的字处理状态,并编辑一个ASCII码文本文件(如果指定文件名以.PRG为后缀,则编辑一个FoxBASE+命令文件) MODIFY FILE 编辑一个一般的ASCII码文本文件 MODIFY LABEL 建立并编辑一个标签(.LBL)文件 MODIFY REPORT 建立并编辑一个报表格式文件(.FRM)文件 MODIFY STRUCTURE 修改当前使用的库文件结构 NOTE/* 在命令文件(程序)中插入以行注释(本行不被执行) ON 根据指定条件转移程序执行 OTHERWISE 在多重判断(DO CASE)中指定除给定条件外的其它情况 PACK 彻底删除加有删除标记的记录 PARAMETERS 指定子过程接受主过程传递来的参数所存放的内存变量 PRIVA TE 定义内存变量的属性为局部性质 PROCEDURE 一个子过程开始的标志 PUBLIC 定义内存变量为全局性质 QUIT 关闭所有文件并退出FoxBASE+ READ 激活GET语句,并正是接受在GET语句中输入的数据 RECALL 恢复用DELETE加上删除标记的记录 REINDEX 重新建立正在使用的原有索引文件 RELEASE 清楚当前内存变量和汇编语言子程序 RENAME 修改文件名 REPLACE 用指定的数据替换数据库字段中原有的内容 REPORT FORM 显示数据报表 RESTORE FROM 从内存变量文件(.MEM)中恢复内存变量 RESTORE SCREEN 装载原来存储过的屏幕映象 RESUME 使暂停的程序从暂停的断点继续执行 RETRY 从当前执行的子程序返回调用程序,并从原调用行重新执行 RETURN 结束子程序,返回调用程序 RUN/!在FoxBASE+中执行一个操作系统程序 SA VE TO 把当前内存变量及其值存入指定的磁盘文件(.MEM) SA VE SCREEN 将当前屏幕显示内容存储在指定的内存变量中 SCATTER 将当前数据库文件中的数据移到指定的数组中 SEEK 将记录指针移到第一个含有与指定表达式相符的索引关键字的记录 SELECT 选择一个工作区 SET 设置FoxBASE+控制参数 SET ALTERNATE ON/OFF 设置传送/不传送输出到一个文件中 SET ALTERNATE TO 建立一个存放输出的文件 SET BELL ON/OFF 设置输入数据时响铃/不响铃 SET CARRY ON/OFF 设置最后一个记录复制/不复制到添加的记录中 SET CENTURY ON/OFF 设置日期型变量要/不要世纪前缀 SET CLEAR ON/OFF 设置屏幕信息能/不能被清除 SET COLOR ON/OFF 设置彩色/单色显示 SET COLOR TO 设置屏幕显示色彩 SET CONFIRM ON/OFF 设置在全屏幕编辑方式中,要求/不要求自动跳到下一个字段 SET CONSOLE ON/OFF 设置将输出传送/不传送到屏幕 SET DA TE 设置日期表达式的格式 SET DEBUG ON/OFF 设置传送/不传送ECHO的输出到打印机上 SET DECIMALS TO 设置计算结果需要显示的小数位数 SET DEFAULT TO 设置默认的驱动器 SET DELETED ON/OFF 设置隐藏/显示有删除标记的记录 SET DELIMITER TO 为全屏幕显示字段和变量设置定界符 SET DELIMITER ON/OFF 选择可选的定界符 SET DEVICE TO SCREEN/PRINT 将@...SAY命令的结果传送到屏幕/打印机 SET DOHISTORY ON/OFF 设置存/不存命令文件中的命令到历史记录中 SET ECHO ON/OFF 命令行回送到屏幕或打印机 SET ESCAPE ON/OFF 允许ESCAPE退出/继续命令文件的执行 SET EXACT ON/OFF 在字符串的比较中,要求/不要求准确一致 SET EXACLUSIVE ON/OFF 设置数据库文件的共享 SET FIELDS ON/OFF 设置当前打开的数据库中部分/全部字段为可用 SET FIELDS TO 指定打开的数据库中可被访问的字段 SET FILTER TO 在操作中将数据库中所有不满足给定条件的记录排除 SET FIXED ON/OFF 固定/不固定显示的小数位数 SET FORMAT TO 打开指定的格式文件 SET FUNCTION 设置F1-F9功能键值 SET HEADING ON/OFF 设置LIST或DISPLAY时,显示/不显示字段名 SET HELP ON/OFF 确定在出现错误时,是否给用户提示 SET HISTORY ON/OFF 决定是/否把命令存储起来以便重新调用 SET HISTORY TO 决定显示历史命令的数目 SET INDEX TO 打开指定的索引文件 SET INTENSITY ON/OFF 对全屏幕操作实行/不实行反转显示 SET MARGIN TO 设置打印机左页边 SET MEMOWIDTH TO 定义备注型字段输出宽度和REPORT命令隐含宽度 SET MENU ON/OFF 确定在全屏幕操作中是否显示菜单 SET MESSAGE TO 定义菜单中屏幕底行显示的字符串 SET ODOMETER TO 改变TALK命令响应间隔时间 SET ORDER TO 指定索引文件列表中的索引文件 SET PATH TO 为文件检索指定路径 SET PRINT ON/OFF 传送/不传送输出数据到打印机 SET PRINTER TO 把打印的数据输送到另一种设备或一个文件中 SET PROCEDURE TO 打开指定的过程文件 SET RELATION TO 根据一个关键字表达式连接两个数据库文件 SET SAFETY ON/OFF 设置保护,在重写文件时提示用户确认 SET SCOREBORAD ON/OFF 设置是/否在屏幕的第0行上显示FoxBASE+的状态信息 SET STATUS ON/OFF 控制是/否显示状态行 SET STEP ON/OFF 每当执行完一条命令后,暂停/不暂停程序的执行 SET TALK ON/OFF 是否将命令执行的结果传送到屏幕上 SET TYPEAHEAD TO 设置键盘缓冲区的大小 SET UNIQUE ON/OFF 在索引文件中出现相同关键字的第一个/所有记录 SKIP 以当前记录指针为准,前后移动指针 SORT TO 根据数据库文件的一个字段或多个字段产生一个排序的哭文件 STORE 赋值语句 SUM 计算并显示数据库记录的一个表达式在某范围内的和SUSPEND 暂停(挂起)程序的执行 TEXT...ENDTEXT 在屏幕上当前光标位置显示...的文本数据块 TOTAL TO 对预先已排序的文件产生一个具有总计的摘要文件 TYPE 显示ASCII码文件的内容 UNLOCK 解除当前库文件对记录和文件的加锁操作 UPDATE 允许对一个数据库进行成批修改 USE 带文件名的USE命令打开这个数据库文件。
vf命令
37.cursor 临时表
38.build 连编
二、VF里文件类型
1.项目 .pjx project 2.数据库 .dbc database
3.表 .dbf table 4.菜单 .mnx .mpr menu
5.程序 .prg 6.表单 .scx form
8.update student set 成绩=成绩+10 where 性别="男" 将男生的成绩提高10分
9.delete from student where 性别"女" 册除所有女生的记录
10.alter table student alter 学号 set check left(学号,2="00")
5.group by 条件表达式 对记录进行分组
6.having 筛选条件 选择符合条件的分组
7.order by 关键字 对查询结果按某几个字段进行排序
8.top 数值表达式 对显示表的前几个记录
九.程序结构
1.顺序结构
2.选择结构:(1)if 条件表达式 (2)if 条件表达式 (3)do case
12.stuff 修改字符串 ?stuff("good boy",5.3) "goodgirl&
3.index on 成绩 tag cj descending //按成绩降序建立普通索引,索引标识为cj//
4.index on 性别 tag xb1 unique(唯一索引) //按性别升序建立唯一索引,索引标识为xb1//
5.index on 年龄 tag nl candidate //按年龄升序建立候选索引,索引标识为nl//
VF常用程序
1.查询每门课程的最高分,要求得到的信息包括课程名称和分数,将结果存储到max.dbf表文件(字段名是课程名称和分数)select课程名称,max(成绩) as 分数from score,course;where score.课程编号=course.课程编号group by 课程名称into table max.dbf 2.查询哪些课程有不及格的成绩select distinct 课程名称from score,course where score.课程编号=course.课程编号and 成绩<60 to file new.txt 3.“保存”按钮显示的内容保存到表results中select score.学号,姓名,院系,课程名称,成绩from student,course,score where student.学号=score.学号and score.课程编号=course.课程编号order by score.学号into table results 4.添加一个表控件Grid1,并按学号升序显示学生选课及考试成绩信息(包括字段学号、姓名、院系、课程名、成绩)在属性Recordsource输入:select score.学号,姓名,院系,课程名称,成绩from student,course,score where student.学号=score.学号and score.课程编号=course.课程编号order by score.学号 5.修改“添加”命令按钮click事件,将右边列表框所选项添加到右边的列表框thisform.list2.additem(thisform.list1.value) 修改“移去”click事件,将右边列表框所选项移去(删除)thisform.list2.removeitem(thisform.list2.listindex) 查询右边列表框所列课程的学生的考试成绩(一次包括姓名、课程名称和考试成绩3个字段),并先按课程名称升序,再按考试成绩降序存储到表zonghe.dbf Select姓名,课程名称,考试成绩from student,course,score Where (student.学号=score.学号) and(score.课程编号=course.课程编号)and &cn Order by 课程名称,考试成绩desc into table zonghe.dbf 6.为表“金牌榜”增加一个字段“奖牌总数”(整数型),同时设置有效性规则:奖牌总数>=0 Alter table 金牌榜add 奖牌总数I check 奖牌总数>=0。
VF程序实例
VF程序实例基本(十一大类):一、多工作区、Replace、copy to .二、累加、累乘三、双重循环:金字塔问题等四、排序五、循环查询:locate\seek六、循环插入新记录七、子程序和参数传递\变量的作用域八、@行,列say ... get ... default ...read字幕问题九、scatter/gather十、数组(结合排序)十一、综合题******************************************************************************* 一、多工作区、Replace、copy to .例题1: 涉及set relation to有如下表:(1) XS.DBF(学号C(8),姓名C(8),性别C(2),班级C(9),出生日期D,走读L)(2) CJ.DBF(学号C(8),课程名C(20),成绩N(5,1))说明:一个学生可以选择多门课程。
请编写一个完整的程序,该程序能完成以下功能:1、将表XS.DBF和表CJ.DBF建立关联,并显示出所有男同学的姓名以及他们所选课程的课程名2、将XS.DBF表中所有班级为“2002级2班”的同学信息拷贝到新表STUDENT.DBF中,STUDENT .DBF只含有学号、姓名、性别、走读四个字段3、将姓名为“王小平”的同学的所有成绩提高10%CLEARCLOSE ALLSELE 2USE CJINDEX ON 学号TO XHSELE 1USE XSSET RELATION TO 学号INTO BSET SKIP TO BLIST FOR 性别='男' FIELDS 姓名,B.课程名COPY TO STUDENT FOR 班级='2002级2班' FIELDS 学号,姓名,性别,走读replace b.成绩with b.成绩*1.1 for a.姓名="王小平"例题2: 涉及update下面有两张表:总分表:ZF.DBF学号姓名语文数学总分110 张三114 李四119 王二成绩表:CJ.DBF学号语文数学110 67 65114 89 67119 78 95按照成绩表的成绩修改总分表的成绩,并计算出总分表的总分字段参考答案:CLOSE ALLSELE 2USE CJINDEX ON 学号TAG XHCJSELE 1USE ZFINDEX ON 学号TAG XHZFUPDA ON 学号FROM B REPL 语文WITH B.语文,数学WITH B.数学REPL ALL 总分WITH 语文+数学LIST例题3: 涉及join with:将STUDENT.DBF 和学生成绩.DBF 连接成新文件NEW.DBF表1: student(学号c(4),姓名c(8),性别L,出生日期D,高考成绩N(5,2))表2: 学生成绩(学号c(4),课程号C(3),分数N(2))SELECT 1USE STUDENTSELECT 2USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号;FIEL 学号,A.姓名,A.性别,A.出生日期,课程号,分数USE NEWLIST如果再增加一张表,三表相连:表3: 课程(课程号C(3),课程名称C(10))SELECT 1USE STUDENTSELECT 2USE 学生成绩JOIN WITH A TO NEW FOR 学号=A.学号SELE 1USE NEWSELE 2USE 课程JOIN WITH A TO STU FOR 课程号=A.课程号USE STULIST******************************************************************************* 二、累加、累乘例1:累加:求1~100的和SUM=0FOR I=1 TO 100SUM=SUM+IENDFOR?’1~100的总和为:’,SUM使用DO WHILE 实现:SUM=0I=1DO WHILE I<101SUM=SUM+II=I+1ENDDO?’1~100的总和为:’,SUM例2:累乘:求n!clearINPUT "求n!,请输入n的值:" TO NMUL=1FOR I=1 TO nMUL=MUL*IENDFOR?n,’的值为:’,MUL例3:输入n的值,求1+1/2!+1/3!+1/4!+….+1/n! (阶乘n!=1*2*3*4....*(n-1)*n )CLEARSUM=_①_MUL=_②_INPUT "请输入n的值:" TO NFOR i=1 TO NFOR j=1 TO iMUL=MUL*__③__ENDFORSUM= SUM+____④_____ENDFOR?'求得的总和为: ',SUM答案:1: 0 2: 1 3: j 4: 1/mul注意:外循环是累加,内循环是累乘******************************************************************************* 三、双重循环:金字塔问题等看书阅读:1、P159页:例4.392、P160页:例4.403、求1-100间所有的质数CLEAR?’2、3是质数’FOR I=4 TO 100FOR J=2 TO INT(SQRT(I))IF MOD(I,J)=0EXITENDIFENDFORIF J> INT(SQRT(I))?I,’是质数’ENDIFENDFOR4、运行XY.PRG程序后,将在屏幕上显示如下乘法表:1) 12) 2 43) 3 6 94) 4 8 12 165) 5 10 15 20 256) 6 12 18 24 30 367) 7 14 21 28 35 42 498) 8 16 24 32 40 48 56 649) 9 18 27 36 45 54 63 72 81请对下面的程序填空:* * * 计算乘法XY.PRG * * *CLEARFOR J=1 TO 9?STR(J,2)+') 'FOR ______________?? ______________ENDFOR?ENDFORRETURN第一空K=1 TO J 第二空STR(J*k,6)5、排序问题*******************************************************************************四、排序输入10个数,将它们从小到大排列分析: 用i代表趟数,j代表次数(1)10个数要比较9趟(2)每趟要比较的次数为: 10-趟数(3)每次比较:如果当前数a(j)大于本次比较的最后一个数a(10+1-i)那么就交换,否则不交换cleardime a(10)?'输入10个数: 'for i=1 to 10input "请输入: " to a(i)endforfor i=1 to 9for j=1 to 10-iif a(j)>a(10-i+1)t=a(10-i+1)a(10-i+1)=a(j)a(j)=tendifendforendforlist memo like a另外可以参看书:P162-163页例4.45******************************************************************************* 五、查询:locate\seek有下列表:book(书名C(20),作者C(8),出版日期D,内容简介M)编写程序:查询关于foxpro 的图书.USE BOOKLOCATE FOR ‘foxpro’$ 书名IF ! FOUND()?’没有关于foxpro的图书’ELSEDO WHILE ! EOF()CLEAR?书名,作者,出版日期?内容介绍W AIT “是否继续查找?(Y/N)”TO MIF M$’nN’EXITENDIFCONTINUEENDDO?”全部显示完成”ENDIF注意:关键地方在于1、什么地方用locate,什么地方用continue2、if .. exit .. endif3、do while not 的条件使用Locate查找出所有入校总分在580及以上的所有同学信息clearuse 学生locate for 入校总分>=580do while .not. eof()dispcontinuenddo?'结束'cancel******************************************************************************* 六、循环插入新记录编写程序,对于学生.dbf能够在程序末尾循环插入新记录CLEARCLOSE ALLUSE 学生DO WHILE .T.APPE BLANK@5,20 SAY '学号' GET 学号@5,40 SAY '姓名' GET 姓名@7,20 SAY '性别' GET 性别@7,30 SAY '出生年月' GET 出生年月@9,20 SAY '入校总分' GET 入校总分READW AIT '你想继续插入新记录吗?(Y/N) : ' TO XIF X='N' OR X='n'EXITENDIFCLEARENDDOCLEARLISTCLOSE ALL类似:编写程序,该程序能够顺序修改表学生.DBF中的所有数据。
vf程序设计基础教程知识点总结
vf程序设计基础教程知识点总结VF基础知识点总结第一章数据库基础知识1.基本概念:数据库、数据管理经历的五个阶段、数据库管理系统、数据库应用系统、数据库管理员。
2.数据库系统的组成:硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。
其中数据库管理系统是数据库系统的核心。
3.数据库系统的特点:(1)实现数据共享,减少数据冗余(2)采用特定的数据模型(3)具有较高的数据独立性(4)有统一的数据控制功能4.数据模型:实体间联系的种类:一对一、一对多、多对多。
5.数据模型的三种类型:层次模型、网状模型和关系模型。
6.关系数据库基本术语:关系、元组、属性、域、关键字、外部关键字。
关系的特点7.关系运算:传统的集合运算(并、差、交)另一类是专门的关系运算(选择、投影、连接、等值连接、自然连接)8.VF两种运行方式:菜单方式和交互式方式(命令方式和程序方式)9.所谓项目是指文件、数据、文档和对象的集合,其扩展名为 .pjx。
10.项目管理器包含的选项卡:全部、数据、文档、类、代码、其他11.项目管理器各选项卡所包含的文件有哪些?12.项目管理器可以完成对文件的新建、添加、移去、删除,但不包含重命名。
第二章常量、字符1.常量的种类:数值型、字符型、日期型、日期时间型和逻辑型在书写字符型、日期型、日期时间型和逻辑型需要加定界符2.变量是值能够随时改变的量。
变量名的命名规则:以字母、汉字和下划线开头,后接字母、数字、汉字和下划线构成,不包含有空格3.当内存变量与字段变量同名时,要访问内存变量需加前缀M.(或M-),例如M.姓名4.数组定义的格式 DIMENSION 数组名()、创建数组后,系统自动给每个数组元素赋以逻辑假.F.5.表达式的类型:数值表达式、字符表达式、日期时间表达式和逻辑表达式。
每个表达式的运算规则与结果。
6.运算符 $ 称为子串包含测试,格式字符表达式1 $ 字符表达式27.SET EXACT ON │OFF 的区别与含义。
VF数字化程序及表单设计
数字化程序及表单设计1.(prog1.prg,form1.scx)已知圆半径,求圆面积。
clearinput"请输入圆的半径=" to rif r>0s=pi()*r*r?selse?"输入错误!"endifreturnr=thisform.text1.values=pi()*r*rthisform.text2.value=alltrim(str(s,10,2))4.(prog2.prg,form2.scx)已知三角形三边,求三角形的面积。
S=SQRT(L*(L-A)*(L-B)*(L-C)) ,其中L=(A+B+C)/2clearinput"a=" to ainput"b=" to binput"c=" to cif a>0b>0c>0a+b>ca+c>bb+c>al=(a+b+c)/2s=sqrt(l*(l-a)*(l-b)*(l-c))?selse?"输入错误"Endifa=thisform.text1.valueb=thisform.text2.valuec=thisform.text3.valueif a+b>c and b+c>a and a+c>b and a>0 and b>0 and c>0l=(a+b+c)/2s=sqrt(l*(l-a)*(l-b)*(l-c))endifthisform.text4.value=s5.(prog3.prg,form3.scx)判断某一年是否是闰年。
clearinput"请输入年份:" to yearif year%400=0?year,"年是闰年!"else?year,"年不是润年!"endifreturnyear=thisform.text1.valueif year%400=0thisform.text2.value= "是闰年"elsethisform.text2.value= "不是闰年"endif6.(prog4.prg,form4.scx)判断月份值的春夏秋冬。
VFP程序设计教学课件汇总整本书电子教案全套教学教程完整版电子教案最新
2.1 表的建立与修改
(4)当光标停在备注型或通用型字段的memo或 gen区时,若不想输入数据可按回车键跳过;若 要输入数据,按Ctrl+PgDn或用鼠标双击都能打 开相应的字段编辑窗口。某记录的备注型或通用 型字段非空时,其字段标志首字母将以大写显示, 即显示为Memo或Gen。
退出编辑按Ctrl+W键或单击窗口右上角的 关闭按钮,即可将数据存盘。
1.4 数据模型
层次模型:像一棵倒放的树,这种模型用结点来表示 不同的记录型,结点间的连线则表示记录型之间的联 系,结点之间的关系是1:N。其特点是: 1)仅树根结点无父结点,其层次最高。 2)一个父结点向下可以有多个子结点,但一个子结点 向上只有一个父结点。 3)同层次的节点之间没有联系。
1.4 数据模型
差,记为﹣A ﹣ B
【例】求 R ∪ S, R ∩ S, R ﹣ S
RABC
x 1k x3e y 5k
SA B C
x3e x6e y5k
注意:参加运算的 关系必须是相容的 和可并的,即它们 应有相同的度(属 性个数相等),且 相应的属性值来自 同一个域。
1.4 数据模型
2. 关系运算
选择运算:从一个关系中找出满足给定条件的元组操作, 或者说从一个二维表格中找出满足给定条件的记录的操 作称为选择。
(四)1对.5话V框isual FoxPro 6.0用户界面
典型的对话框由若干按钮和矩形框构成
列表框
文本框、选择框、列表框
单选框、复选框
文本框
复选框 单选框
1.5 Visual FoxPro 6.0用户界面
(2)VFP的界面操作
主要有四种
1 鼠标操作 2 窗口操作 3 菜单操作 4 对话框操作
vf整理代码一
VF 编程常用代码与实例在Visual Foxpro编程中通过VF日历控件,VF日期插件,VF日期控件实现日期输入一、首先建立一个表单,并在表单上选择文本框控件text1二、在表单上插入表单控件:ActiveX 控件(oleControl)---插入控件---日历控件8.0---确定,即可调出日历控件.三、双击表单空白处写各过程运行代码Init属性代码中填写其日历控件隐藏代码:thisform.olecontrol1.visible=.f.Click属性设置,表示单击表单时任一地方隐藏VF日历控件代码thisform.olecontrol1.visible=.f.四、双击VF日历控件,填写其各运行代码设置vf日历控件olecontrol1的After Update过程代码,表示将选择某一日期的日期值赋予文本框thisfomr.text1thisform.text1.value=ttod(this._value)设置日历控件单击Click过程代码,表示选择日期后隐藏控件thisform.olecontrol1.visible=.f.设置VF日期控件Init过程代码:表示打开VF日历控件后取当前年份this.year=year(date())通过以上方法在Visual Foxpro编程中通过VF日历控件或VF日期插件实现日期的点选输入Select语句部分1、SQL:structure query language2、定义:是结构化查询语言,是关系数据库的标准语言,是一种高度非过程化的语言,是数据库后台操作语言,具有非常强大的查询功能,查询时它的核心。
3、基本构成:select 查询什么 from 从哪来 where 查询条件4、三大功能:l 数据查询①.格式:select 字段名/表名/* from 表1 inner join 表2 on 表1主关键字=表2主关键字 where 筛选条件[group by (按……分组)having(限定分组条件)order by(按……排序)②.函数③.值域查询: between…and…④.空值查询:is null⑤.模糊查询:$ (后包前) *(%) ?likel 操作功能①.插入 insert into 表名 value②. 更新 update 表名 set 字段=表达式 where 条件③.删除 delete from 表名 where 条件l 定义功能①.表的定义 creat ***②. 删除表drop table表名删除视图 drop view③.表结构的修改⑴.添加字段:alter table 表名add 字段名类型(长度)⑵.删除字段:alter table 表名 drop 字段名⑶.修改字段:alter table 表名 alter 字段名新类型(长度)⑷.重新命名字段:alter table 表名 rename 旧字段名 to 新字段名⑸.建立有效性规则:alter table 表名(数据库表)alter 字段 set check 字段条件⑹.删除有效性规则:alter table 表名alter 字段 drop check⑺.建立默认值:alter table 表名 alter 字段 set default 条件⑻.删除默认值:alter table 表名 alter 字段 drop default⑼.建立唯一索引:alter table 表名add unique 字段 tag索引名⑽.删除唯一索引:alter table 表名drop unique tag 索引名⑾.建立主索引:alter table 表名add primary key字段 tag索引名⑿.删除主索引:alter table 表名drop primary key字段 tag索引名⒀.建立普通索引:alter table 表名add foreign key字段 tag索引名⒁.删除普通索引:alter table 表名drop foreign key tag索引名5、SQL的六种去向:⑴.将查询结果保存到永久表:into table/dbf 表名⑵.将查询结果保存到临时表:into cursor表名⑶.将查询结果保存到数组:into array 数组名⑷.将查询结果保存到文本文件:to file 文本文件名⑸.将查询结果预览显示:to preview⑹.将查询结果打印:to printer6、约束规则:7、量词查询:some any all (any、some是同义词) * some、any 只有子查询中有一行能使结果为真,则结果为真* all 子查询中所有记录都使结果为真,则结果为真。
VFP命令、函数及程序语句大全.
VFP命令、函数及程序语句大全(1)VFP命令是一种实现对数据库系统进行操作的动词或短语。
VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。
VFP常用命令分类表类别命令建立文件类CREATE,MODIFY,COPY,SAVE等数据库操作类USE,CLOSE,COPY,MODIFY S TRUCTURE等等数据编辑类BROWSE,EDIT,CHANG,REPLACE,UPDATE记录指针操作类GOTO,LOCATE,SEEK,FIND,SKIP等等记录操作类APPEND,DELETE,INSERT数据显示类BROWSE,LIST,DISPLAY等等数据统计类SUM,COUNT,AVERAGE,TOTAL等存变量操作类ACCEPT,INPUT,READ,SAVE程序控制类DO,DO WHILE…ENDDO,IF…ENDIF等系统设置类SET TALK,SET DEFAULT TO等命令格式VFP命令一般由命令动词和控制短语构成。
一般格式:命令动词[FROM<源文件>][TO<目标文件>][记录范围][FOR/WHILE<条件>] [FIELDS<字段名表>][ ]表示可选,<>表示必选, / 表示或选例如:(1)APPEND FROM C:\RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。
从C:\RSDA.DBF 表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。
(2)COUNT FOR 职称="高工"TO GG 统计高工的记录数到内存变量GG。
控制短语规定了对数据库操作的限制条件:1.指向输入输出目标FROM/TOAPPEND FROM,COPY FILE TO <目标文件>2.限制记录范围(SCOPE)ALL 所有记录NEXT<n> 本记录后的第几个记录RECORD<1> 第1个记录REST 当前记录之后所有记录3.选择字段FIELDS<字段表>选择输入/输出的字段。
VF命令汇总
Visual FoxPro程序设计表的基本操作命令汇总与相关例题●指定工作环境:SET DEFAULT TO <工作目录>⏹SET DEFAULT TO f:\mydatabase●建立表结构:CREATE <表名>|?⏹CREATE 学生(定义字段名、字段类型、字段宽度、小数位、索引、是否允许空值NULL)●修改表结构:MODIFY STRUCTURE(修改表结构:增加字段、删除字段、修改字段等)●打开表:USE 表名(1)⏹USE 学生⏹USE 学生 IN 0(2)⏹USE 教师 IN 2 与下面两条意思一样⏹SELECT 2⏹USE教师(3)⏹USE教师 ALIAS teacher(4)⏹USE 学生 ORDER xm &&打开表的同时将主控索引定在姓名上●关闭表: USE(1)⏹USE(2)⏹USE教师IN 1⏹USE 学生IN 2⏹SELECT 2⏹USE IN 1 &&当前在2区,关闭1区中的表⏹●在表尾增加记录:APPEND [BLANK][FROM](1)⏹USE 学生⏹APPEND●在表指定位置增加记录INSERT [BLANK][BEFORE]●(1)⏹USE 学生⏹GO 3⏹INSERT &&将记录加到第三条后(2)⏹USE 学生⏹GO 3⏹INSERT BEFORE &&将记录加到第三条前●编辑修改记录:BROWSE/EDIT/CHANGE,REPLACE … WITH …●按条件浏览记录:LIST/DISPLAY [ALL/NEXT N/RECORD N/REST] FOR/WHILE …(1)⏹USE 学生⏹LIST⏹DISPLAY ALL(2)⏹USE 学生⏹LIST RECORD 2⏹DISPLAY RECORD 2(3)⏹USE 学生⏹GO 3⏹DISPLAY REST &&显示第3至第10条(4)⏹USE 学生⏹Go 8⏹LIST NEXT 2 &&显示第8,9条(5)⏹USE 学生⏹LIST FOR RECNO()<5 &&将表中所有记录读出,再从头过滤,只显示记录号小于5的记录(6)⏹LIST WHILE RECNO()<5 &&将表中前5条记录读出,再从头过滤,只显示记录号小于5的记录(7)⏹LIST NEXT 1与 DISPLAY作用相同●显示表结构:LIST/DISPLAY STRUCTURE●移动记录指针:⏹GO TOP/BOTTOM⏹GO N⏹SKIP [N]●删除记录:⏹DELETE [ALL/NEXT N/RECORD N/REST] FOR …⏹RECALL [ALL/NEXT N/RECORD N/REST] FOR …⏹PACK⏹ZAP●复制命令:⏹COPY TO…(1)⏹USE 学生⏹COPY TO STUDENT⏹COPY TO STUDENT RECORD 1 &&复制第一条记录⏹COPY TO STUDENT REST &&复制从当前记录指针到末尾的记录⏹COPY TO STUDENT FOR 性别=”男”&&复制性别为男的记录(2) 复制记录的同时复制CDX索引文件⏹USE 学生⏹ 3⏹COPY TO st1 REST WITH cdx(3)只复制结构中的部分字段⏹USE 学生⏹COPY STRUCTURE TO st2 FIELDS 学号,姓名,性别●排序⏹SORT TO 文件名ON 字段名[/A|/D][/C] ....[FOR…](1)⏹USE 学生⏹SORT TO 学生姓名 ON 姓名⏹USE 学生姓名⏹LIST(2)先按性别排序,若性别相同按出生日期降序排,⏹USE 学生⏹SORT TO 学生性别 ON 性别,出生日期/D⏹USE 学生性别⏹LIST(3)把李姓学生降序排到文件“李学生.DBF”中⏹USE 学生⏹SORT TO 李学生 ON 姓名/D FOR 姓名=”李”⏹USE 李学生⏹LIST(4)只复制部分字段⏹USE 学生⏹SORT TO 部分学生 ON 姓名/D FIELDS 姓名,出生日期⏹USE 部分学生⏹LIST(5)复制后取所有以“姓”开头的字段⏹USE 学生⏹SORT TO 新学生 ON 姓名 FIELDS LIKE 姓*⏹USE 新学生⏹LIST●索引●建立索引⏹INDEX ON <关键字> TAG <索引名>[UNIQUE][FOR.. ][ASCENDING/DESCENDING][ADDITIVE][CANDIDATE]⏹INDEX ON <关键字> TAG <索引名>[OF<复合索引文件名>][A/D]⏹INDEX ON <关键字> TO <索引文件名>[UNIQUE][COMPACT][ADDITIVE](1) 下列操作建立了四个单索引文件use 学生index on 学号to xhindex on 性别 to xbindex on 入校总分 to rxzfindex on -入校总分 to rxzfd(2)下列操作建立了六五个索引标记,都存放在“学生.CDX”索引文件中u se 学生index on 学号 tag xhindex on 姓名 tag xmindex on 性别 tag xbindex on 入校总分 tag rxzfindex on 入校总分 tag rxzfd descending⏹●设置主控索引⏹SET ORDER TO <索引标记名>|[N](3)对单索引文件,打开表后再打开索引文件use 学生browset index to xb,xh,rxzf &&打开三个单索引文件,且xb为主控索引文件browset order to 3(set order to rxzf)&&将主控索引定位到rxzfbrow(4)use 学生 index xb,xh,rxzf &&打开表的同时打开了三个单索引文件browset order to 3(set order to rxzf)&&将主控索引定位到rxzfbrow(5)对于结构复合索引,当表打开时其索引文件自动打开,只需设置主控索引即可use 学生index on 学号 tag xhindex on 姓名 tag xmindex on 性别 tag xbindex on 入校总分 tag rxzfindex on 入校总分 tag rxzfd descendingset order to xbbrowset order to rxzfdBrowSet order to 0 &&关闭主控索引⏹索引类型普通索引use 学生index on 学号 tag xh唯一索引use 学生index on 学号 tag xh UNIQUE候选索引use 学生index on 学号 tag xh CANDIDATE主索引在数据库中表里面用菜单法建立。
VF命令一览表
VF命令一览表VF命令一览表一、命令e 表名打开表2.List 显示表记录,但不能修改3.browse 浏览表记录,可以修改4.display 显示记录指针指向的记录5.append 追加记录6.append blank 追加空白记录7.insert blank 插入空白记录8.delete 逻辑删除记录,记录前出现星号9.pack 物理删除,将逻辑删除的记录彻底删除10.recall 记录恢复11.zap 删除表里的所有记录12.go n 指向第n条记录13.go top 指向第一条记录14.go bottom 指向最后一条记录15.skip n 往下跳n条记录16.skip -n 往上跳n条记录17.? 从屏幕的下一行的第一列起显示结果18.? ? 从当前行当前列起显示结果e sb copy to sb() 复制sb表给sb()表20.recno() 记录号函数21.bof() 上溢出22.eof() 下溢出23.dimension x(4) 定义数组x,里面有四个元素,其中每个元素的默认值为.F. declare和dimension 相同24.replace 替换25.add 表示增加字段26.distinct 不重复记录27.error 错误28.continue继续29.else if 否则30.column 列31.input 显示数值32.accept 显示字符串33.wait 是弹出的一个信息框34.drop 删除字段或删除表35.otherwise 其它情况36.check 规则37.cursor 临时表38.build 连编二、VF里文件类型1.项目 .pjx project2.数据库 .dbc database3.表 .dbf table4.菜单 .mnx .mpr menu5.程序 .prg6.表单 .scx form7.报表 .frx report 8.查询 .qpr query9.视图 .vue view 10.文件 .txt11.备注型文件 .fpt三、例题1.creat table student(学号 c(6),姓名c(8),性别c(2),年龄n(2)) 创建学生表2.insert into student values("001","张三","男",20) 插入一条学生记录3.alter table student alter 学号 c(8) 将学号字段的宽度改为84.alter table student rename 学号 to 学生编号将学号字段重命名为学生编号5.alter table student drop 年龄将年龄字段删除6.alter table student add 所在院系c(10) 为student表增加一个字段7.select *from student into table xusheng 将表student复制给表xuesheng8.update student set 成绩=成绩+10 where 性别="男" 将男生的成绩提高10分9.delete from student where 性别"女" 册除所有女生的记录10.alter table student alter 学号 set check left(学号,2="00")四、创建、运行与修改1.create database 123 创建数据库123modify database 123 修改数据库123 (注意:alter在SQL中修改表结构)2.modify command 123 修改程序123do 123 运行程序1233.create form 123 创建表单123modify form 123 修改表单123do form123 运行表单1234.create menu 123 创建菜单123modify menu 123 修改菜单123do 123.mpr 运得菜单1235.modify query 123 修改查询123do 123.qpr 运得查询1236.modify report 123 修改报表123report form 123 运行报表1237.drop view 123 删除视图123create view 123 创建视图123 (打开视图用use)五、排序1.sort to nl on 年龄按年龄升序排列,产生一个新表nl2.sort to cj on 成绩/d 按成绩降序排列,产生一个新表cj六、索引1.index on 姓名 tag xm //按姓名升序建立普通索引,索引标识为xm//2.index on 性别tag xb //按性别升序建立普通索引,索引标识为xb//3.index on 成绩 tag cj descending //按成绩降序建立普通索引,索引标识为cj//4.index on 性别 tag xb1 unique(唯一索引) //按性别升序建立唯一索引,索引标识为xb1//5.index on 年龄 tag nl candidate //按年龄升序建立候选索引,索引标识为nl//6.index on 性别+str(成绩) tag xbcj //按性别升序,如性别相同按成绩升序建立普通索引,索引标识为xbcj//7.index on 性别+str(成绩) tag xbcj1 descending //按性别降序,如性别相同按成绩降序建立普通索引,索引标识为xbcj1//8.index on 年龄-成绩/1000000 tag nlcj //按年龄升序,如年龄相同按成绩降序建立普通索引,索引标识为nlcj//9.index on 年龄-成绩/1000000 tag nlcj1 descending //按年龄降序,如年龄相同按成绩升序建立普通索引,索引标识为xbcj1//七. 命令set index to 打开当前的一个或多个索引文件并确定主控索引文件(to后加东西是打开,不加是关闭)set order to 确定主控索引locate 顺序查找满足条件的记录,并且指向它seek 索引查找count 记数命令sum 求和命令average 求平均值命令total 汇总命令max 求最大值min 求最小值八.SQL查询结构1.select 字段列表要显示的字段2.from 表名列表查询涉及到的所有表3.where 条件条件4.into 目标查询结果输出到哪去5.group by 条件表达式对记录进行分组6.having 筛选条件选择符合条件的分组7.order by 关键字对查询结果按某几个字段进行排序8.top 数值表达式对显示表的前几个记录九.程序结构1.顺序结构2.选择结构:(1)if 条件表达式 (2)if 条件表达式 (3)do case语名序列语名序列1 case 条件表达式1endif else 语句序列1语句序列1 case 条件表达式2endif 语句序列2case 条件表达式3语句序列33.循环结构:(1)for (2)do while 条件表达式 (3)scan(扫描)循环体循环体循环体endfor enddo endscanLoop 重新回到循环的最开始 input to x 从键盘输入一个数给变量xexit 结束循环跳出循环 accept to y 从键盘输入一个字符串给变量yset sysmenu to default 退出菜单thisform.release 退出表单thisform.refresh 刷新表单十.函数数值型函数函数名功能例子结果1.abs() 求绝对值 ?abs(-4) 42.sqrt() 求平方根 ?sqrt(4) 23.int() 取整数 ?int(7.5) 74.max() 求最大值 ?max(3,4,5) 55.min() 求最小值 ?min(3,4,5) 36.mod() 取余 ?mod(11,3) 27.round() 四舍五入 ?round(3.1415,3) 3.1428.ceiling() 返回不小于某值 ?ceiling(3.3) 4的最小整数9.floor() 返回不大于指定数的最大整数 ?floor(3.3) 3十一.字符处理函数1.substr() 求子串 ?substr("abcd",2,2) "bc"2.left() 取左串 ?left("abcd",2) "ab"3.right() 取右串 ?right("abcd",2) "cd"4.len() 求串长 ?len("abcd") 45.at() 求一个串在另一个串中出现的位置 ?at("bc","abcd",1) 26.space() 输出空格 ?space(4) " "7.upper() 将小写字母转换成大写字母 ?upper("aBc") "ABC"8.lower() 将大写字母转换成小写字母 ?lower("aBc") "abc"9.val() 将字符串转换为数值 ?val("3.14") 3.1410.str() 将数值转换为字符串 ?str(3.14,5,1) "3.1"11.alltrim() 去掉字符串前面和后面的空格去掉?alltrim("abcd") "abcd"12.stuff 修改字符串 ?stuff("good boy",5.3) "goodgirl&。
vf命令汇总
删除命令是在SELECT查询命令基础上改出来的.
5
CREATE TABLE|DBF表名(字段名类型宽度[,小数位] [NULL|NOT NULL][CHECK规则条件ERROR信息] [DEFAULT默认值] [PRIMARY KEY|UNIQUE] [REFERENCES与之联系的表名[TAG建立联系的索引名]],[FOREIGN KEY索引表达式TAG普通索引名])|FROM ARRAY数组名
移去表
将一个数据库表变成一个自由表
4
SELECT工作区号|表别名
指定工作区命令
SELECT 0:选当前没有使用的最小工作区;同一时刻最多允许打开32767个表
4
SET RELATION TO索引表达式INTO工作区号|表别名
建立关联命令(关联即临时联系)
先在一个工作区打开父表,在另一个工作区打开子表,然后在父表所在的工作区用此命令建立关联.
ON:比较到两个字符串全部结束.先在较短字符串的尾部加上若干外空格,使两个字符串的长度相等,然后再进行比较.
4
CREATE DATABASE [数据库名]
新建数据库
不打开数据库设计器,但是数据库处于打开状态
4
OPEN DATABASE [数据库名] [EXCLUSIVE|SHARED]
打开数据库
只打开数据库,但是数据库设计器不打开EXCLUSIVE:以独占方式打开数据库
格式二:
ALTER TABLE表名ALTER[COLUMN]字段名[NULL|NOT NULL][SET CHECK规则条件ERROR信息] [SET DEFAULT默认值][DROP DEFAULT][DROP CHECK]
格式三:
ALTER TABLE表名[DROP[COLUMN]字段名] [SET CHECK规则条件ERROR信息] [DROP CHECK][ADD PRIMARY|UNIQUE|FOREIGN KEY索引表达式TAG索引名[FOR条件]][DROP PRIMARY|UNIQUE|FOREIGN KEY][RENAME COLUMN字段名TO新字段名]
2021年VFP命令大全
2021年VFP命令大全VFP命令、函数及程序语句大全(一)欧阳光明(2021.03.07)学过VFP(Microsoft Visual FoxPro)的朋友都知道它是微软公司开发的数据库管理系统。
它经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。
本文便以VFP 6.0为例介绍它的命令、函数及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP 的朋友提供复习的好机会。
一主要命令:1、CREATE 作用:建立一个新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下同。
)说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出对话框,要求用户输入想要建立的表名。
在命令中不加文件名或问号系统也会弹出对话框,要求用户输入想要建立的表名。
2、MODIFY STRUCTURE 作用:显示表文件结构,并允许修改此表的结构。
格式:MODIFY STRUCTURE 说明:只有在用USE 命令打开表文件以后,才能显示或修改表文件的结构。
3、APPEND 作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。
无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
4、INSERT 作用:在表文件中间插入一个新记录。
格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录;INSERT BEFORE 在当前记录前插入一记录;INSERT BEFORE BLANK 在当前记录前插入一空记录。
5、BROWSE 作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、数学表达式:1.编写一个求S=1+2+3…+100的程序 Clear S=0For i=1 to 100 S=S+i Endfor ? “S=“,s cancel2.编写程序,其功能是:计算并输出下列多项式的值:n S 14131211+++++=例如,若n=5,则应输出2.283333。
clear s=0input [n=] to n for i=1 to n s=s+1/i endfor ? “S=“,s return3.编写程序,计算表达式:n n S n 1342312+++++=.clear s=0input [n=] to n for i=1 to n s=s+(i+1)/i endfor ? “S=“,s return4.设计完成如下表达式计算的程序:n n S n 211214131211--++-+-=clear s=0input [n=] to ns=s+(1/(2*i-1)-1/(2*i)) endfor ? "s",s return5.编写程序,计算表达式:n S +++++++++++= 321132112111。
set talk off clear s=0input [n=] to n for i=1 to n s=s+1/m(i) endfor ? "s=",s return set talk on function m(k) S=0 for j=1 to kS=S+jendfor return S endfunc6.编写一个求S=1!+2!+3!…+10! Clear S=0For k=1 to 10 S=S+T(k) Endfor ? “S=“,s RETURN FUNCTION T(N) F=1 FOR K=1 to N F=F*KRETURN F ENDFUNC7.请分别将求阶乘的功能设计为自定义函数,并在计算5!-3!+7!时进行调用. clear? T(5)-T(3)+T(7) return function T(n) t=1 for i=1 to n t=t*i endfor return t endfunc8.编写程序,其功能是:计算并输出下列多项式的值:!1!31!21!111n S n +++++=例如,在程序中从键盘给n 输入15,则输出为a=2.718282,注意:要求n 的值大于1但不大于100。
set talk off clear s=1input [n=] to n for i=1 to ns=s+1/T(i)endfor ? "s=",s return function T(k) t=1 for j=1 to k t=t*j endfor return t endfunc9.编写程序,其功能是:计算并输出)321()321()21(1n S ++++++++++=例如,从键盘给n 输入20后,输出为s=534.188884。
注意:要求n 的值大于1但不大于100。
clear s=0input [n=] to n for i=1 to n s=s+T(i) endfor ? "s=",s return function T(k) t=0 for j=1 to k t=t+sqrt(j) endfor return t endfunc10.编写程序,其功能是:计算并输出下列多项式的值:)log()2log()1log(n S +++= ,并输出结果。
例如,若n=20,则S=6.506583。
clear s=0input [n=] to n for i=1 to ns=s+log(i)endfor s=sqrt(s) ? "s=",s return11.编写程序,计算表达式:!!21)(2n x x f xxn ++++= 直到106!-<n x n。
例如x=2.5,则函数值为:12.182494。
set talk off clear input [x=] to x s=0+1 i=1do while x**i/T(i)>10E-6s=s+x**i/T(i) i=i+1enddo? "s=",sset talk onreturnfunction T(k)t=1for j=1 to kt=t*jendforreturn tendfunc12.编写程序,计算表达式:!)!1(!4!3!21)()1()1(112432nnxxfxxxxx nnnn-----+-++-+-+=直到106!-<nx n。
若x=2.5,函数值为:1.917915。
clearinput [x=] to xs=0+1i=1do while x**i/jc(i)>10E-6s=s+((-1)**(i-1))*((x**i)/jc(i))i=i+1enddo? “S=“,sreturnfunction jc(k)t=1for j=1 to kt=t*jendforreturn tendfunc13.编写程序,计算并输出给定10个数的方差:∑∑==⎪⎭⎫⎝⎛-=101101|101|101k kkkXS X(既10个数的平均值)。
例如,给定的10个数为95、89、76、65、88、72、85、81、90、56,输出S=11.730729。
cleardime a(10),b(10)for i=1 to 10input [请输入第]+alltrim(str(i))+[个数:] to a(i)endfors=0for i=1 to 10s=s+a(i)endforp=s/10for i=1 to 10b(i)=abs(a(i)-p)endforss=0for i=1 to 10ss=ss+b(i)endforpp=ss/10? “S=“,s qrt(pp)return二、矩阵相关计算1.编写程序,完成的功能是:实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。
例如用户输入矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321,其转置矩阵为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡963852741,程序输出⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡181410141061062。
clearinput [n=] to ndime a(n,n),b(n,n),c(n,n) for i=1 to nfor j=1 to ninput to a(i,j)endforendforfor i=1 to n for j=1 to n b(j,i)=a(i,j) endfor endfor for i=1 to n for j=1 to n c(i,j)=a(i,j)+b(i,j) endfor endforfor i=1 to n for j=1 to n ?? c(i,j) endfor ? endfor return2.编写程序,完成的功能是:有N×N 矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N =3,有下列矩阵:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321,计算结果为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡91410056001。
clear input [n=] to ndime a(n,n),b(n,n),c(n,n) &&输入矩阵a 的数据 for i=1 to n for j=1 to n input [] to a(i,j) endfor endfor&&转置矩阵a 的数据到矩阵b for i=1 to nfor j=1 to nb(j,i)=a(i,j)endforendforc=0 &&矩阵c的初值都是0&&矩阵c与矩阵a的对角线的值相等for i=1 to nc(i,i)=a(i,i)endfor&&矩阵a与矩阵b的左下三角元素相加,结果放在矩阵c的左下三角元素for i=2 to nfor j=1 to i-1c(i,j)=b(i,j)+a(i,j)endforendfor&&输出矩阵c的元素值for i=1 to nfor j=1 to n?? c(i,j)endfor?endforreturn三、字符串运算1.编写求1到1000中含有数字7的所有数字之和.(提示,利用$,可以判断一个符号是否包含在另外一个符号中)set talk offClearS=0For i=1 to 1000M=STR(i)IF '7' $ MS=S+iEndifEndfor? "S=",Scancelset talk on2.假定输入的字符串中只包含字母和*号。
请编写程序,将该字符串中除尾部的*号之外,其余的*号全部删除。
clearaccept [请输入字符串:] to am=len(a) &&求字符串的字符长度dime b(m) &&定义数组for i=1 to m &&将字符串的每一个字符放入数组b(i)=substr(a,i,1)endforj=0 &&字符串尾部*的个数for i=m to 1 step -1 &&统计字符串尾部*的个数if b(i)=[*]j=j+1elseexitendifendfora=chrtran(a,[*],[])a=a+replicate([*],j)? areturn3.假定输入的字符串中只包含字母和*号。
请编写程序,使字符串尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
clearaccept [请输入字符串:] to ainput [n=] to nm=len(a) &&求字符串的字符长度dime b(m) &&定义数组for i=1 to m &&将字符串的每一个字符放入数组b(i)=substr(a,i,1)endforj=0for i=m to 1 step -1 &&统计字符串尾部*的个数if b(i)=[*]j=j+1elseexitendifendforif j>nk=nelsek=jendifc=[]for i=1 to m-j+kc=c+b(i)endfor? cReturn4.程序的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、…、都应当删除,其它依此类推。