- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
你从VFP教程上看不到的编程小经验
这是我历年使用VFP编程过程中的小经验,许多问题在高手看来不值一提,但当时我可花了时间尝试后才解决的(那时互联网还不普及,许多问题在教材上又找不到)。希望对初学VFP编程的网友有所帮助。
另外,虽然现在VFP被认为落伍了,但其实如果你真正学会了(不一定要精通),在日常数据处理工作中还是会有很大用处的。
我最喜欢的是它的命令窗口,灵活好用,可以说无能出其右者……
1、当程序运行之初,与字段绑定的控制显示的值不一定与被绑定的字段的值相同。因此,要取得字段的值,不能用 Object.Value 属性值来取得。
2、编增加条码部分的“换条码”功能时,当选定表格中的条码号后,击”换条码“按钮,换条码窗口中出现欲替换的条码号总是为表格中的第一个条码号的情况,如欲删除条码号“D0100009”,却删除了“D0100001”(表格中出现的第一个条码),后将“换条码”的 Click 事件的方法中的Thisform.Refresh()这句去掉后,即解决了问题。
3、在编类别库 Ts_libs 中的 frm_Cxflmx 类别时,设定下拉列表框的 RowSourceType 属性为“字段”,RowSource 属性为字段名。每一下拉列表框影响 GotFocus 事件的方法为依据对应字段的索引,影响 InternateChange 事件的方法包含有“IF !EMPTY(THIS.DisplayValue)...ENDIF”的条件判断语句,结果引用该类别的例程执行时死锁。经查试,用“变量=ALLTRIM(THIS.DisplayValue)”和“IF !EMPTY(变量)...ENDIF”语句后,死锁现象消除。初步分析:这是由于在重新建立不同关键词的索引时,“THIS.DisplayValue”的值与依据该作为判断条件的索引都在不断刷新的缘故。
4、激活其它表单时,当引用当前表单控件数据时,一定要指明全称。如当前表单的控件 Text1 的 LostFocus 事件中引用自身控件的值时(例:SET FILTER TO 字段=Thisformset.Form1.Text1.Value),如果只用This.Value ,当其它表单里的控件(例:表格)引用到该值时,将会出错。
5、在编报刊订阅模块时,在读者栏输入过信息后,再在“个人”与“单位”选项中切换到个人时,数据表 td_dzmx 指向表尾。反复查看代码,发现是由于在读者栏输入过信息后,数据表 td_dzmx 经过了 SET FILTER 过滤。在“个人”与“单位”选项的 INTERCHANGE 事件代码中在选定“个人”项代码的选择 SELECT td_dzmx 后加上 SET FILTER TO ,问题得到解决。所以,在选择数据表后,一定要注意其原选的 SET ORDER 和 SET FILTER 设置,尤其是 SET FILTER 。
6、在编报刊推荐模块时,遇到过在表格控件中无法浏览互相关联的子表 td_bkmx(报刊明细库) 的全部记录而在浏览窗口中却可以,解除两表(父表为 td_bkflm)之间的关联并将记录指针移到表头也不行,后将子表的与关键字有关的索引取消即解决了问题(两表之间的关联没解除也没关系)。
7、一定要注意将工作区切换回要操作的工作区。
8、在设计报刊管理系统的随机更换壁纸的功能时,总是出现重复显示一两张画的情况,用 VAL(RIGHT(SYS(3),2)) 获取任意序号的文件名后加在_SCREEN.Picture=(任意序号文件名) 也好,还是获取任意序号的文件名后改为统一文件名后调用再改回原文件也好,都无法解决问题,但在 Bmps 目录下的位图文件大多是小文件的时候却能随机更换壁纸。后来在 DO WHILE...ENDDO 语句循环获取 VAL(RIGHT(SYS(3),2)) 时加上一句 II=INKEY(0.00001),即解决了此问题。
9、编按班级号顺序+班内分组随机号获取考号时,以“索引”作为临时存放排序号的字段,并以此字段为分组依据。由于设置的结构索引表达式是为“索引”字段为依据的,导致考号与“索引”字段值相对应。经反复试验,找到原因,即:执行 LOCATE ALL FOR VAL(索引)=lnStartIndexInGroup .AND. VAL(索引)=lnLastIndexInGroup .AND. EMPTY(考号) 命令的结果总是按“索引”字段的顺序寻找,找到的自然是与“索引”字段值相对应的记录。后来改为按“姓名”字段排序,解决了此问题。另外,由 SYS(3) 获取随机号在短时间内有可能重复,且总是按由小到大的顺序,改为 RAND() 函数后,不会出现这种情况。
(以上记录于2000.08.02以前)
10、找到了一个获
文档评论(0)