在VB中引用.dbf及索引文件

在VB中引用.dbf及索引文件,第1张

在VB中引用.dbf及索引文件,第2张

如何使用除FOX之外的编程语言来获取?数据库和参考。idx和。cdx索引一直是程序员讨论的话题之一。现有的任务是在触摸屏系统中增加一个用户查询水费的界面。每个用户可以随时查看自己的水费记录。用VB5.0,我想打开七。NetWare系统下营业收费系统的dbf数据表及其查询。每个数据表有近100,000条记录。数据通过10M集线器交换,查询的字段都不是。显然,这么大的数据量是通过10M网络传输的。如果VB用SQL查询,至少要2分钟才能得到答案。要求用户在机器旁等待2分钟是不现实的。所以想用FoxPro自己的。idx或者。cdx索引文件来找到它。
编程有两种实现方式。一种是在VB中直接调用,另一种是在VB中利用shell函数调用FoxPro的exe程序。
方法1。打电话给。dbf文件直接在VB
1。创建一个。FoxPro数据库所在目录下与FoxPro数据库同名的inf文本文件
步骤:1 .创建文本文件*。与数据表同名的inf。
2。在文本文件的第一行,输入【FoxPro 2.5】;如果指定了FoxPro 2.0索引,则输入[FoxPro 2.0],依此类推。
3。以idxn = *的形式输入指定的索引文件名。idx或cdxn = *。依次cdx。其中n是一个数字,依次表示第一个IDX索引文件和第二个IDX索引文件。或者第一个CDX索引文件,第二个…等等。
注:如果不能存储。inf文件存储在与数据库相同的目录中,或者您希望将所有文件存储在一个共享点以便于维护。您可以创建一个Windows注册表项来指向文件路径。inf被存储。(详见VB5在线手册)
2。写一个程序
用OPENDATABASE方法直接打开外部FoxPro表。
主要语句如下:
dimdb as database
dimt bas recordset
' Open external database
set db = Open database(" C:Fox ",false,false," FoxPro 2.5")'注意FoxPro和2.5
set TB = db . open recordset(" ABC ")
'调用index
tb.index =" abc1 # idx " '注意索引名为"索引文件名#后缀" " 111-111 " '搜索值为" 111-111"
的记录方法2。用shell()函数调用VF的idx文件
用VB接受用户的命令,然后调用。VF编译的exe文件。prg,根据用户要求查询数据库,并将查询结果放在一个. TXT文件中。从VB中获取数据。TXT文件并显示,然后将查询结果传递给VF。prg已编制。exe文件来查询数据检索结果。具体编程省略。这里要重点说一下shell()函数的特点:shell函数异步执行其他程序。也就是说,用shell启动的程序,在执行过程完成之前,可能已经执行了shell函数之后的语句。这种执行方式打乱了程序固有的顺序执行方式,如果不注意,程序的运行就会混乱。
If语句如下

shell (c: file1.exe)'调用file1.exe文件并将结果放入X1.txt
open c: X1。以打开x1.txt文件并获得查询结果。
……
按照一般的执行模式,上面的语句应该是正确执行的。但在实际操作中,即使所有语句都正确,也会弹出一个错误消息框:x1.txt文件不存在。原因是VB执行shell()语句时,在file1.exe文件完成之前,继续下一条语句:open x1 . txt;由file1文件创建;所以出现了错误。
经过多次实验,终于用VB工具栏中的定时器控件完成了时间等待,程序通过。[/Br/]…[/Br/]shell(C:file1.exe)[/Br/]' Run timer[/Br/]timer 1 . enabled = true[/Br/]…[/Br/]sub timer 1 _ timer()[/Br/]if dir Br/]Open C:x1 . txt for output as # 1[/Br/]……[/Br/]timer 1 . enabled = false[/Br/]end sub[/Br/]实际上运行速度非常快,2 ~ 3秒就完成了查询操作。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 在VB中引用.dbf及索引文件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情