请教数据库查询问题!

hpygzhx520 2005-02-24 09:34:44
在使用中有一个DBF数据库,里面包含date,time,tagname,TagValue等字段,tagname是变量(标记)名的意思,但是不包含tagname对应的描述。并且这个DBF数据库文件是由其他软件生成的,我不能修改它。于是我制作了一个MDB数据库,里面包含AlmTag表,有两个字段Tag,Description。
我的目的是将date,time,tagname以及tagname对应的描述显示出来!于是我在逐条显示DBF数据记录的时候查询MDB数据库,将tagname对应的描述显示出来。

这样做效率很低!但对于这样的情况我不知道如何处理!
希望高手帮忙
...全文
132 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hpygzhx520 2005-02-25
  • 打赏
  • 举报
回复
dbf数据库其实就相当于一个表,所以不好操作。不能修改dbf数据库。
所以还请指点。
lsftest 2005-02-25
  • 打赏
  • 举报
回复
并且这个DBF数据库文件是由其他软件生成的,我不能修改它。
------------------------------
关键是你现在的dbf数据库还需不需要那个软件来运行例如增加记录、修改记录等等。。。

如果已经不需要那个软件,那么就可以把数据导到access中,然后用个简单的查询语句把它们都显示出来就是了,导数据的方法很多,例如sql server的dts,或者excel也行,关键是看你用的具体是什么数据库。。。

但如果仍得依靠那个软件来进行数据操作,那么建议进行相反的处理,把AlmTag表导入到那个dbf数据库里,然后也是用个简单的查询语句把它们都显示出来就是了
hpygzhx520 2005-02-25
  • 打赏
  • 举报
回复
我读入内存了,速度有很大改善。但是内存消耗了11M!没有办法,暂时这样吧。
多谢各位帮忙!
lsftest 2005-02-25
  • 打赏
  • 举报
回复
既然这样,如果你的AlmTag表记录不多,而且不会再改变,那么建议你把它做成资源文件添加到程序里,然后你的程序从dbf读进数据,再根据读到的tagname从资源文件中提取出相应的描述进行显示吧。。。
hpygzhx520 2005-02-25
  • 打赏
  • 举报
回复
我是自己开发程序去读DBF文件,所以所有导入导出都只能用代码来完成。我不能将access里的表导进dBase IV里去,不能改变原来的文件,我只能读,不能写。
lsftest 2005-02-25
  • 打赏
  • 举报
回复
是dBase IV格式的数据库文件,我可以打开的。现在看看能否将DBF数据库导入到MDB的一个表中?
我搜索了半天,没有好的导入方法。调试不通。
==================================================
如果仅仅是dBase IV格式的数据库文件要导入access就简单了,只需要用access文件菜单下的获取外部数据就行了。。。。
但问题是现在你应该做的却刚刚相反,因为你在用的软件我估计是不能读写access数据库的,那么你应该是把access里的表导进dBase IV里去。。。。然后用VB直接读取dBase IV数据库,把两个表进行联结然后显示,这样才可近似做到实时监控。。。。

access导出到dBase IV格式的数据库文件:

将表或查询导出到 Paradox 或 dBASE 文件
在“数据库”窗口中单击要导出的表或查询(只在 Microsoft Access 数据库中)的名称,然后在“文件”菜单上,单击“导出”命令。


在“保存类型”框,单击所需导出的 Paradox 或 DBASE 数据库类型。


单击“保存位置”框右侧的箭头,然后选定要导出到的驱动器或文件夹。


在“文件名”框,输入文件名,然后单击“全部保存”按钮。
注意

如要输出为 Paradox 8.0 或 dBASE 7 文件格式,计算机上必须安装了 Borland Database Engine (BDE) 4.x 版本及其后续版本。 如未安装 BDE 4.x 及其后续版本,可通过安装 Paradox 8.0 或 Delphi 来获得。如果有不支持 Paradox 8.0 文件格式的 BDE 旧版本,可将引擎从 Borland 全球广域网 站点处升级。另外,如计算机上未安装 BDE,仍可导出为 Paradox 3.x,4.x,和 5.0 文件格式和 dBASE III,IV 和 5 文件格式。


如果在目的数据库中不允许用表名或字段名导出表,Microsoft Access 将调整此名称。例如,如果导出数据到 dBASE 表,任何长于 10 个字符的字段名都将截断。

由于没怎么用过dBASE,所以后面在dbase里应该怎么操作就不太清楚了。。。。。
cnapc 2005-02-25
  • 打赏
  • 举报
回复
链接也不区分是不是同一数据库格式的啊,只要ACCESS能驱动就可以了。
这个东西没法写个例子出来的,你可以试一下啊。
cnapc 2005-02-25
  • 打赏
  • 举报
回复
链接,注意是链接到ACCESS库中啊。
链接表所链接的对象可以不在同一个数据库中,也可以不在一台机器上。

链接到ACCESS中的表实际上相当于一个指针,指明ACCESS到什么地方去找这个实际的数据库(表)
hpygzhx520 2005-02-25
  • 打赏
  • 举报
回复
问题是这两个表数据库格式不同,不在一个数据库中!
所以请高人详细指点。
cnapc 2005-02-25
  • 打赏
  • 举报
回复
链接会好一点,这样数据是实时更新的。
cnapc 2005-02-25
  • 打赏
  • 举报
回复
比如说,你的DBF表在ACCESS中链接成DBFT表(date,time,tagname,TagValue)表,新的描述表名为:ACCT(Tag,Description)

在VB中查询语句:
select a.date,a.time ,a.tagname,a.tagvalue ,b.description from dbft a join acct b
on (a.tagname = b.tag)
cnapc 2005-02-25
  • 打赏
  • 举报
回复
可以在ACCESS中链接DBF数据库,以后就按正常ACCESS中的表一样操作就可以了。
hpygzhx520 2005-02-25
  • 打赏
  • 举报
回复
是dBase IV格式的数据库文件,我可以打开的。现在看看能否将DBF数据库导入到MDB的一个表中?
我搜索了半天,没有好的导入方法。调试不通。
lsftest 2005-02-25
  • 打赏
  • 举报
回复
那可麻烦了,我估计那个dbf数据库也很可能不是标准的数据库文件,可能就是一个有固定格式的文本文件而已吧。。。试试能不能用数据库如foxpro、dbase之类的打开它并在里面建一个新表?????如果不行的话就只好用你现在这种方法了。。。。
hpygzhx520 2005-02-25
  • 打赏
  • 举报
回复
好,在实际使用中,DBF数据库是由一种工业上位组态软件生成的报警记录文件,里面包含时间、变量等字段。上位组态软件还要不定期的将新的信息写入DBF数据库,所以不能破坏原来的DBF数据库。
但是DBF数据库不包含变量对应的描述,在另外一个ACCESS表中有两个字段,变量、描述。
我的目标:显示DBF数据库里面的日期、变量、变量描述……用VB来完成。
lsftest 2005-02-25
  • 打赏
  • 举报
回复
我上面问的你都没说清楚。。。。
请详细的说一下你们实际的操作情况,包括软件、数据库等等。。。。

hpygzhx520 2005-02-24
  • 打赏
  • 举报
回复
也许是个不错的解决办法,具体有资料吗?我只要显示就可以了,不用保存。也就是说只要导入到一个临时表……
lsftest 2005-02-24
  • 打赏
  • 举报
回复
如果你的数据始终来自两个数据库,那你只好这样做了。。。
可不可以把dbf的数据都导进mdb再进行操作?这样方便多了。。。
hpygzhx520 2005-02-24
  • 打赏
  • 举报
回复
能否具体一点?DBF数据库里面的记录是没有任何规律的,我依次读出记录,在原记录上补上对应的描述。
hspcyeling 2005-02-24
  • 打赏
  • 举报
回复
将记录绑定在控件上就可以了。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧