说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中引用dbf及索引文件

HTML文档下载 WORD文档下载 PDF文档下载
在VB中引用dbf及索引文件

广东 羊黎蓉

如何用FOX以外的编程语言来取得.dbf数据库的记录值和引用.idx 和.cdx索引一直都是程序员讨论的话题之一。现有一任务是在一个触摸屏系统中加入一个用户查询水费界面。每个用户可随时查询到自己的水费记录。我使用VB5.0,希望打开NetWare系统下营业收费系统的七个.dbf数据表并进行查询。每个数据表有将近10万条记录。通过10M集线器交换数据,查询的字段都不是唯一的。显然这样大的数据量,又是通过10M网络传递,如果VB使用SQL方式查询,则最少要2分钟时间才能得到答复。让一个用户在机器旁边等2分钟是不现实的。于是想利用FoxPro自身的.idx或.cdx索引文件来查找。
  编程可用两种方式实现。一种是直接在VB中调用,另一种使用VB中的shell函数调用FoxPro的exe 程序。
  方法一、直接在VB中调用.dbf文件
  一、.在FoxPro数据库的所在目录下建立一个与FoxPro数据库文件名相同的.inf文本文件
  步骤:1.创建文本文件*.inf, 与数据表同名。
  2.在文本文件的第一行,输入[FoxPro 2.5];如果指定的是FoxPro 2.0索引,则输入[FoxPro 2.0],其余以此类推。
  3.依次输入各指定索引文件名 形式 IDXn=*.idx 或 CDXn=*.cdx 。其中n为数字,依次表示第1个IDX索引文件,第2个IDX索引文件。或第1个CDX索引文件,第2个……以此类推。
  注意:如果不能将.inf 文件与数据库存储在同一目录下,或为了维护方便而希望将所有文件存储在一个共享点。可采用创建Windows注册表项的方法,指向存储.inf的文件路径。(详见VB5的联机手册)
  二、 编写程序
  用OPENDATABASE方法直接打开外部FoxPro表。
  主要语句如下:
  dim db as database
  dim tb as recordset
  ′打开外部数据库
  set db=opendatabase(“c:\fox\”,false,false,”foxpro 2.5;”) ′注意FoxPro 与2.5之间必须有空格
  set tb=db.openrecordset(“abc”)
  ′调用索引
  tb.index=“abc1#idx” ′注意索引名为“索引文件名#后缀名”
  tb.seek “=”, “111-111” ′搜索唯一值为“111-111”的记录
  方法二、用shell() 函数调用VF的idx文件
  用VB接受用户命令,然后调用VF的 .prg编译的.exe文件,按用户要求在数据库中查询,将查询结果放置在一个 .TXT文件中。VB从.TXT文件取数显示,再次将查询结果传递给VF的.prg编译的 .exe文件,查询取数结果。具体编程从略,这里要着重讨论shell()函数的特性:shell 函数是以异步方式来执行其它程序的。也就是说,用 shell 启动的程序可能还没有完成执行过程,就已经执行到 shell 函数之后的语句。 这种执行方式打乱了程序固有的顺序执行方式, 如果不加注意,程序的运行将产生混乱。
  如果语句如下
  ……
  shell(c:\file1.exe) ′ 调用file.exe文件,并把结果放置在 X1.txt中
  open c:\x1.txt for output as #1 ′打开X1.TXT文件,取查询结果。
  ……
  按一般执行方式,上述语句应能正确执行。然而实际运行时,即使语句全部正确,也会弹出错误信息框:x1.txt文件不存在。原因就在于VB在执行shell()语句时,file1.exe文件还未执行完,就继续下一行语句:打开file1文件创建的x1.txt;所以出现错误。
  经过多次实验,我最后采用了VB工具条中的timer控件来完成时间等待,程序编程通过。
  ……
  shell(c:\file1.exe)
  ‘运行计时器
  timer1.enabled=true
  ……
  sub timer1_timer()
  if dir(“c:\x1.txt”)<>”” then
  open c:\x1.txt for output as #1
  ……
  timer1.enabled=false
  end sub
实际运行速度很快,2~3秒内完成查询操作。
渣打科营中心:创建以技术为核心的企业文化 抱怨IT公司人才缺乏?留住现有人才方是正途 专访Esri中国区技术总监:打造新一代WebGIS平台 TIOBE 2013年11月编程语言排行榜:C#、Transact-SQL及VB.NET厚积薄发 透过KitKat,Android或与ChromeOS融合? 利用Spring Data Neo4j搭建推荐系统 七丽借百度SiteApp移动化 分发及变现能力获大幅提升 Go语言4岁了 生日快乐 谷歌发布Web延迟基准测试工具 专访JS-Git创始人Tim Caswell:让Git运行于任一平台 一段代码引发的思考 2013年美国开发者薪资调查报告 MDCC之移动娱乐游戏峰会:金玩奖揭晓最火游戏 算法为王:且看Mac Mini如何超越1636节点的Hadoop 鲍尔默成大善人?微软正式废除员工排名评审制度 工信部软件司副司长陈英为MDCC 2013大会致开场辞 全民移动•重塑世界 2013移动开发者大会盛大开幕 泯灭Web App可用性的七个开发错误 保益互动创始人曹军:听到的世界更精彩,盲人应用背后的故事 Gumi公司CEO国光宏尚: 大公开!日本手游市场攻克方法! Great Hill Partners高管Chuck Goldman &amp;amp; 南京创毅CEO William Wei:超越黑莓——下一代企业移动 高通业务拓展副总裁沈劲:智能手机2.0——以体验为中心 百度副总裁李明远:百度轻应用——长尾APP的最佳选择 中国工程院院士李德毅:大数据时代的认知计算 创新工场联合创始人汪华:2013年中国移动互联网进入深入区 百度副总裁李明远:解答关于百度轻应用的八大疑问 谷歌推出PNaCl,帮助开发者在任何硬件和网站上运行代码 阿里云:双十一350亿交易额的幕后英雄 索尼移动智能设备全球技术总监Goran Andersson:索尼移动可穿戴设备解决方案 腾讯社交网络事业部副总裁陈磊:腾讯移动开发者服务体系 基调网络副总裁陈靖华:全面掌握移动应用性能 将查询结果写到一个临时表 ?!我怎么看不了帖子内容啊?!点开每一贴都出现同样的页面如下,各位是怎样? 我想打开同一个窗 手机串口编程,如何得知手机拨号状态?? 请问把长整型转换成字符串的函数是什么? c++文件操作小问题 怎样从datagrid中取出一行这个对象(online) 请问vs.net中的解决方案和项目以什么尺度来划分 求教mshflexgrid解除绑定后仍显示原记录的方法!请各位大侠指教! 在Windows2000中怎样设置默认打印机? 调用webservice,出现(http401失败:Access Denied)怎么办? 如何利用xsl转换xml文件为html,并将xml文件的内容嵌入到生成的html的数据岛中(xml数据是动态生成的) 请问vs.net中的解决方案和项目以什么尺度来划分 (转)请辞书 一个继承的问题... 声音嘶哑低沉,无论谁听了,都会觉得很不舒服,可是随着这语声走上楼来的,却是个风华绝代的女人 sql语句的问题 我想把本地的数据库导到远端的服务器上,该怎么做? ?!我怎么看不了帖子内容啊?!点开每一贴都出现同样的页面如下,各位是怎样? 我只能看见标题:( cad开次开发 安装win2000 ad server时的两个问题 再问如何备份远程数据库到本地文件? 请问在redhat8.0中有英汉词典的软件包吗?! 有关JavaMail取得的正文和标题是乱码的问题? 注册表的问题,有什么方法*****(送100分) 请问黑龙江中程成绩怎么查呀? 请问.net能在linux等操作系统上运行吗? 一个简单的问题? 请问哪里有delphi第三方控件开发和使用的书籍下载啊? 请问.net能在linux等操作系统上运行吗? 请问awt和swing有什么本质的不同呢?! 有点难度的sql 90分!看看这段JSP程序为什么出错。谢了! 模式窗体的postback 求教:在在模式对话框BOOL CXXX::OnInitDialog()中InitSocket()初始化失败,怎样退出该模式对话框 关于JTable,如何设置一行的颜色。 一个很简单的问题 读取远程的页面文件内容,但需要搜索结果的页面,请问如何实现??? 写了一个telnet服务器端程序,不能用exit退出,请大家帮忙看看~~谢谢! ?!我怎么看不了帖子内容啊?!点开每一贴都出现同样的页面如下,各位是怎样? 我只能看见标题:( 图片文件上载页,在上载页中实现预览的问题?急! 我的Asp为什么不能执行? 请教xml问题。 如何动态获得表单中checkbox中的name的值还有获得其值。 如何在UNIX下配置 Tomcat4.0 + Apache1.3 + JDK1.3? 在线等待! 请问版主:为何我在本版搜索“多语言”,找到的结果中没一个打得开? 如何在一个菜单项里控制另一个菜单项的状态(如变灰) 菜鸟问题 关于几个按钮布局?急 求救:关于在程序中运行其他程序的问题! 请问哪有Report Machine的下载? 请问只知道备份文件如何恢复数据库? 许茹芸再登大刊封面 气质清新成新女性徐娇床上卖萌嘟嘴COS动漫美少女 虏刘诗诗素颜机场照曝光 黑脸大妈发型无朱莉乳腺切除手术期间照片 两颊凹陷瘦马天宇未受艳照影响 清新写真大片挽回热播剧《宝贝》男主角张铎全新男人装大章子怡戛纳造型失败 昔日红毯惊艳照娱乐圈患难夫妻:你若不离不弃 我必生周迅前男友京城四少王烁开豪车打女记者张雨绮素颜街拍照曝光张雨绮戛纳后台美照曝光戛纳红毯范冰冰造型完败 副乳赘肉无P韩国人气偶像申世京出道时照片曝光《当男人恋爱时》申世京幕后花絮照维秘天使不堪忍受整天穿内衣示人 感觉韩国明星文根英性感自拍照邓雯心与平安同台演绎《我要上春晚》主许艺娜MV花絮照曝光 “零下10度”蒋勤勤18岁美照曝光 学生装扮酷似林维密天使米兰达·可儿全新泳装写真 酥关之琳否认赶做蛇年新娘 赞安吉丽娜朱再入返回飞行试验返回器突破四项关键技燕山快笔世界级戏剧大师齐聚北京习近平:抓好军队高中级干部管理业主为租车位排队30小时北京主场失陷小区外数十私家车遭砸盗另类交友乌克兰东部两州选举今日开始小区电梯超期运行频故障楼上装修楼下上门理论买玩具广西:民政官员为完成火葬指标 雇人挖蓝翔“挖掘机”需要驶入法治轨道男子随地小便被狗咬伤上期答案模特演员胡东吸毒被拘后获释人大修改行政诉讼法:行政机关不履行判37岁32分老马仍是天王凯蒂猫40岁了限行等措施带来不便请理解
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘