如果要想把VFP程序写好,有几个地方要注意:
首先,最重要的,数据结构一定要合理。不要想着用很少的表把所有问题描述清楚,表多了数据分散不好用,可以多建立视图。
1、表单一般不要用数据环境。打开与关闭用Use, SQL的select、Close Table 等命令控制。
2、一般不要利用其它控件来打开的表,虽然可以用 used() 判断防止重复打开。
3、如果一个表多个控件都需要用到,可以在Form的Init或Load事件中打开。
4、如果没有大量的表是多个表单同时要打开的,Unload事件或Do Form之前最好执行一下Close Table All
5、对记录操作时,一定要注意当前表是什么。除非在大循环中,否则多执行几次 select 不会影响速度。
6、如果表单上要显示的数据比较多,并且受多个控件影响,可以将相关代码写入一个地方,然后调用。比如写入一个Command的Click事件中,调试好后设 Enabled=.F.
Visible=.F.然后调用。当然,最后可以写入一个自定义事件,这样程序更好看。
最后我以为,之所以VFP有很多优点,还被弃用了。除了太容易反编译,专业程序员不想用。另一个原因就是,数据安全性不好。经常有人让我修复由于意外死机或停电损坏的DFB表。所以,建议后台数据最好放在其它数据库中;如觉得Sql Server,Oracle这样的太大了可以用Access (注意最好用 .MDB 格式)。
下面是连接Access数据库的一个方法。
先在数据库中建立一个名为 link的链接,在保证数据库打开的情况下执行以下代码。
链接的是当前文件夹下的Datas子文件夹下的Kwgl.mdb文件。如果文件加密码了,在PWD=之后输入即可。
程序代码:
jph=JUSTPATH(SYS(16,1))
dbq='dbq='
dbq=dbq+jph+'\Datas\kwgl.mdb;DefaultDir='+jph+'\Datas;'
dbq=dbq+'Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN=linkodbc.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;PWD=;SafeTransactions=0;Threads=3;UID=admin'
DBSETPROP('link','CONNECTION','CONNECTSTRING',dbq)