ALL:命令对表中所有记录起作用,即执行时从首记录到末记录,最记录指针停在数据库的末尾。NEXT命令作用于从当前记录开始到当前记录后条记录为止的范围内的记录,最后记录指针指向作用范围内的最后一条记录处。NEXT1表示仅作用于当前记录。Record命令作用于记录号为的记录。TEST命令作用范围从当前记录开始到表的最后一个记录为止
命令中的FOR子句只作用于满足条件的记录。
一、基本命令
1.打开和关闭数据表USE[<数据表名>]当省略选项时为关闭当前数据表CLOSEALL关闭所有数据表
2.选择当前工作区SELECT<工作区号|数据表名|0>功能:选择当前工作区。可以直接选择工作区号,也可通过指定其中已经打开的数据表别名来指定工作区。SELECT0是选择当前未使用的最低编号的工作区
3.增加记录APPENDBLANK在当前表的尾部追加一个空白记录INSERTBLANK在当前表的当前记录之后插入一条空白记录INSERTBLANKBEFORE在当前表的当前记录之前插入一条空白记录注意:在表建立索引后,INSERT的功能与APPEND相同
4.替换字段的值REPLACE[范围]<字段1>WITH<表达式1>[,<字段2>WITH<表达式2>,...<字段n>WITH<表达式n>][FOR]功能:计算表达式的值,并填入指定字段,当范围和条件选项省略时只对当前记录操作。
5.删除记录DELETE[范围][FOR条件]功能:对记录加删除标记(即逻辑删除),当范围和条件选项省略时只对当前记录操作。
RECALL[范围][FOR条件]功能:对记录去除删除标记(即恢复删除),当范围和条件选项省略时只对当前记录操作。
PACK功能:删除带有删除标记的记录
ZAP功能:物理删除当前表所有记录
6.建立索引与选择主控索引INDEXON<关键字表达式>TAG<索引标识符>[DESCENDING]功能:对当前表按<关键字表达式>建立结构复合索引,索引文件名与表名相同,扩展名默认为CDX。DESCENDING选项为按关键字降序排列,默认为升序。
SETORDERTOTAG<索引标识符>功能:在结构复合索引文件打开后,指定主控索引标识符。
7.记录指针定位GOBOTTOM|TOP|功能:移动记录指针直接指定记录。BOTTOM为指向末记录,TOP为指向首记录,为指向记录号为的记录。
SKIP[expN]功能:按expN的值,从当前位置出发移动记录指针。当expN为正时向尾部方向移动expN条记录,当expN为负时向首部方向移动expN条记录,当expN为1时可以省略。
8.查找LOCATE[范围][FOR条件]功能:在数据表的指定范围中搜索满足条件的第一个记录。搜索成功,记录指针指向该记录,并将FOUND()置为.T.;否则,记录指针指数据表末尾,并将FOUND()置为.F.。<范围>缺省为ALL。
CONTINUE功能:查找下一个满足LOCATE命令指定条件的记录,查找成功,将FOUND()置为.T.并将指针指向满足条件的记录;否则,记录指针指数据表末尾,将FOUND()置为.F.。
9.数据表复制COPYTO<文件名>[范围][FIELDS<字段名表>][FOR条件]功能:把已打开的表内容复制到新的表中。<范围>缺省值为ALL。<字段名表>规定了新表字段,缺省为全部字段。
COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]功能:把当前表的结构复制到新的表中。不复制记录。<字段名表>规定了新表字段,缺省为全部字段。
10.统计COUNT[范围][FOR条件]TO<内存变量>功能:统计表中满足条件的记录个数,并存入指定的内存变量。<范围>缺省时为ALL
SUM[表达式表][范围][FOR条件]TO<内存变量表>功能:统计表中全部的或指定数值字段的值的和,并各个和存入指定的内存变量,内存就是的个数求和的数值表达式个数相同。<范围>缺省时为ALL
AVERAGE[表达式表][范围][FOR条件]TO<内存变量表>功能:统计表中全部的或指定数值字段的值的平均,并各个和存入指定的内存变量,内存就是的个数求和的数值表达式个数相同。<范围>缺省时为ALL
二、函数1.数学函数ABS(expN)功能:求数值表达式的绝对值。
INT(expN)功能:对数值表达式expN取整数部分
ROUND(expN,Dec)功能:对数值表达式expN精确到小数点后Dec位。
2.字符函数SUBSTR(expC,expN1,expN2)功能:取字符串expC中从expN1开始的expN2个字符,若expN2省略,则从expN1开始一直取到最后。
TRIM(expC)功能:取掉字符串expC的尾部空格。
ALLTRIM(expC)功能:取掉字符串expC首尾的空格。
SPACE(expN)功能:产生expN个空格。
UPPER(expC)功能:将字符串expC转换成大写。
LOWER(expC)功能:将字符串expC转换成大写。
expC1$expC2功能:判断字符串expC1是否在expC2中出现,若出现则值为.T.,否则为.F.。
3.日期函数DATE()功能:获取系统日期。
4.类型转换VAL(expC)功能:将数字字符值转换成数值,如:VAL('123.45')的值为数值123.45
STR(expN[,宽度[,小数位数]])功能:将数值转换成字符串,当小数位数省略时不带小数,当宽度和小数位数都省略时宽度为10不带小数。
DTOC(expD)功能:将日期表达式expD转换成字符表达式,格式与系统日期格式一致。
DTOS(expD)功能:将日期表达式expD转换成字符表达式,格式为YYYYMMDD,前4位为年份中间2位为月份最后2位为日。
CTOD(expC)功能:将符合当前系统日期格式的字符串转换成日期值。
5.测试函数FOUND()功能:测试当前的查找(SEEK,LOCATE,CONTINUE)是否成功。查找成功函值为.T.否则为.F.。
EOF()功能:测试当前记录指针是否到了数据表的末尾。当在末尾时函数为.T.否则为.F.。
RECNO()功能:返回当前记录号。
我的主程序代码:main.prgDECLAREINTEGERFindWindowINWIN32APISTRING,STRINGLOCALcTitlecTitle="工资管理系统"IFFindWindow(0,cTitle)<>0=MESSAGEBOX("该系统已运行,无需重复!",48,"错误信息")QUITENDIFCLEARSCREENCLEARCLOSEALLCLEARALLSETTALKOFFSETSYSMENUOFF&&使主菜单条不能被访问SETSYSMENUTO&&关闭主菜单条SETTALKOFF&&关闭对话框SETSTEPOFFSETECHOOFFSETSAFETYOFF&&文件替换时不确认SETDELETEDON&&隐藏带删标记的记录SETOPTIMIZEON&&使用优化技术SETCENTURYON&&年月日显示格式为4位,SETDATETOANSI&&日期格式为“年-月-日”SETMARKTO"-"&&设置年月日之间的分隔符
ONERRORDOerrhandWITHERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO()&&在编译成exe文件时要使用RELEASEWINDOW常用RELEASEWINDOW表单设计器
READEVENTSQUIT
PROCEDUREerrhandPARAMETERmerror,MESS,mess1,mprog,mlineno=MESSAGEBOX("错误代码:"+LTRIM(STR(merror))+",错误信息:"+MESS+"错误代码串:"+mess1+",错误行号:"+LTRIM(STR(mlineno))+",出错程序名:"+mprog+"请退出系统!!!重新运行!!")QUITRETURN如果不要菜单系统可把主表单作为顶层表单时要创建文件config.fpw内容为:sysmenu=offscreen=off然后把该文包含进项目中,就可编译进EXE文件中,不必另外提供退出系统”的按纽见第9点
1、**----------------**saveto[alllike]内存变量保存
yfd=alltrim(ThisForm.Combo1.value)
savetoyf&&将内存中的“所有”变量存入文件yf.mem中savetoyfalllikeyfd&&将内存中所有以yfd匹配的变量存入文件yf.mem中savetoyfalllikeyf*&&将内存中所有以yf打头的变量存入文件yf.mem中2、**-----------------**restorefromrestorefromnf.memadditive&&把内存变量从文件nf.mem恢复,选参数additive项时,不对其它内存变量产生复盖。
3、**-----------------**后台最小化运行RAR.EXE
RUN/n7rara-Ybakfileb*.dbfc*.dbf...&&在后台最小化运行RAR.EXE且不等待。
4、**-----------------**ifbof()=messagebox('到最前一个了!',0,'提示')gototopelseskip-1endif
5、**-----------------**ifeof()=messagebox('到最后一个了!',0,'提示')gotobottelseskipendif6、**-----------------**COPYTOdbk.dbfTYPEXL5数据表复制成xls文件
7、**-----------------**=messagebox('完成!',0,'提示')
8、**------------------**hzdx="零壹贰叁肆伍陆柒扒玖拾佰仟万拾佰仟亿拾佰仟"
9、**------------------**IFMESSAGEBOX("真的退出系统吗?",4+32+256,"提示")=6CLOSEDATABASESclearallcloseallCLEAREVENTSthisform.ReleasequitENDIF
10、**-------------------**表数据更新:update表名SET字段名1=表达式,字段名1=表达式,...WHERE[条件]
11、**--------------------**从其它表取数据:把已有表的记录成批追加到当前表中appendfrom文件名[for条件1][while条件2]
12、**--------------------**ThisForm.grdGzk的refresh&&表格内运算
IFUSED("gzk")replace应发合计with等级工资+责任津贴+奖资+干资+书报+单车+燃料+考勤+临职补贴+;地区津贴+城市补贴+节支奖+奖励工资+清饮+洗理+电费+报刊+粮差+肉菜+;劳保+职务保贴+出纳劳保+保健+医药+家属医药+妇卫+会计补贴+其它replace扣除合计with水电+保险+工会+其他REPLACE结余合计WITH应发合计-扣除合计ENDIF
13、**---------------------**ThisForm.grdGzk的AfterRowColchange&&表格变色
Mcurrec=STR(RECN())&&获取当前所在记录号THIS.SETALL("dynamicbackcolor",'IIF(RECNO()=&Mcurrec.,RGB(145,236,252),RGB(255,255,255))')&&设置背景色,满足条件为黄色,不满足为黑色THIS.SETALL("dynamicforecolor",'IIF(RECNO()=&Mcurrec.,RGB(255,0,0),RGB(0,0,0))',"column")&&设置前景色,满足条件为红色,不满足为白色THIS.REFRESHthis.SetFocus
14、**----------------------**releaseextendedaa_x&&aa_x为内存变量,一定要加上extended,才真正释放
15、**----------------------**数据表到文本usecxjgcopytobtypedeliwith""useusepappendfrombtypedeliwith'|'&&********文本到数据表replallzdwithstuff(zd,1,3,"")&&******对数据表中的字段修改内容REPLallzdWITHSTRTRAN(zd,'m',',')REPLallzdWITHSTRTRAN(zd,'','')
16、**-----------------------**ifempty(ThisForm.Text1.value)=messagebox('文件名不能为空!',0,'提示')ThisForm.Text1.setfocusretuendif
20、**-------------------**public如果有重复调用代码时应在主程序“main.prg”定义全局变量
21、**-------------------**导出xls文件SELEold_tmp
cpath_name=GETFILE('xls','文件名','保存')&&重点
IF!EMPTY(cpath_name)iffile("&cpath_name")=messagebox('文件已存在!请重输新名',0,'提示')elseCOPYTO&cpath_nameTYPEXL5&&重点=messagebox('成功导出为文件'-("&cpath_name")-'!',0,'提示')endifelse=messagebox('文件名不能为空!',0,'提示')retuendif
22、**-------------------**ifnKeyCode=13&&在密码文本框text的KeyPress方法上使“确定”执行thisform.command1.clickendif
23、**-------------------*************表单“释放对象时发生”事件的方法释放内存变量releaseextendedaa_x&&aa_x为内存变量,一定要加上extended,才真正释放
**-------------------**24、用SQL-SCLECT查询生成临时表是不能修改的。
25、数据排序
ifused('gz')selectgzelseusegzin0selectgzendifps_tm=ThisForm.Combo2.valueifThisForm.Optiongroup2.value=1&&升序sorttops_tmpon&ps_tm/A&&按ps_tm的值的字段按升序重排elsesorttops_tmpon&ps_tm/D&&&&按ps_tm的值的字段按降序重排endifselectgzzapappendfromps_tmperaseps_tmp.dbf=messagebox('重新排序完成!要恢复原来请按编号升序排序!',0,'提示')26、向表格添加新记录将表格的AllowAddNew属性设置为“T”用户选择最后一记录按下DOWNARROW键时就添加了新记录;或将AllowAddNew属性设置为“F”使用APPENDBLANK或INSERT添加
27、表格列中加入控件在“属性”窗口的“对象”框中为控件选择列如:选择第二列“Column2”,再选择要加入的控件单击该列,(注:复选框的“Caption=""”)并设该列(Column2)的“Sparse=.F.”该列(Column2)的“数据”的“CurrentControl”选择为刚加入的控件名称即可。28、移去表格中的控件在“属性”窗口“对象”中选择要移去的控件,激活“表单设计器(单击表单设计器上兰横条)”按DELETE键即可.29、SQL查询满足条件的记录生成dbf数据表文件SELECT*FROMfhzWHERESUBSTR(帐号,1,11)=m_JGM+'012'AND组号=m_zuhAND类型=1ORDERBY帐号INTOTABLEprtmp30、设置打印机IFPRINTSTATUS()=.T.=SYS(1037)ELSECHR(7)MESSAGEBOX("请在Windows控制面板下安装打印机!!!",48,"提示信息")RETURNENDIF****************************************************************************************************************************************************************************************************