物理删除数据库记录(10分)

  • 主题发起人 主题发起人 jsxjd
  • 开始时间 开始时间
J

jsxjd

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADO编程时,如何物理删除DBF表中的记录?
 
如果一定要用 ADO 应该没办法
 
使用BDE还有办法,ADO可能就没有办法了
 
我在用DBE处理 vf 的自由表 DBF 时,一激活TTable(table1.active:=true),
要么死机,要么异常。但同样的过程用ADO就没有问题。我在两台机上都出现,
而且分别用Delphi5+Update2、Delphi6进行偿试,结果相同。

具体做法如下:
1 设置ODBC数据源,名为“MyHz”
2 在表单中放置一TTable(table1),TDataSource(DataSource1),TDBGrid
3 设置TTable的DataBaseName 为 MyHz,并设置TabelName
4 设置TDataSource的DataSet为Table1
5 设置 TDBGrid的DataSource 为DataSource1
5 激活Table1,设置Table1的Active为True,这时往往出现以下两种错误(交替出现):
(1)程序执行非法操作(Windows提示),“确定”后就退出Delphi
(2)Table doesn't exist.
[Microsoft][ODBC Visul Foxpro Driver] Command contains unrecognized
phrase/keyword.
大意如下:
表不存在
命令包含非法“短语/关键安”

以上做法有何不妥,请指教。
 
这么多天了,是分太少?还是没人碰到这种情况?还是这种做法不对头????
 
没人回答,怎么给分?不能给。
 
我到是用这过样的数据库,不过我是用了一个笨方法,很在accs下建了一个库,然后连接这个
vf的表,然后用ms jet4.0调用accs的库,才能掉用里面的vf的表.
固然笨办法一个,不过我只会这样,呵~~不知对你有没有用~~~呵呵~~~
[:D]
 
删除用delete不得吗??
不会吧~~[?]
 
我用BDE的这种现象你们碰到过吗?还是我的方法有问题?
 
你的程序是没有错误的。我以前也是遇到这个问题,一直没有解决。
反正,当时用这样删除后,数据也不会被客户看到。就是冗余数据太多。
但是是做个BAT文件,让他们隔段时间,运行BAT,调用FOXPRO里PACK命令清除下表。
没有办法。
 
还有,你用ODBC时,要看清楚,连接DBF数据库时,有好多VFP的选项。你看是选FOXPRO,还是选
FOXPRO VFP。引擎不一样的。
 
记得前面有回答过同样的问题。
对DBF文件作删除,通常情况下只是打上删除标记,并没有物理删除(pack).
我是用BDE的dbipacktable函数实现的,附上了源码,你可以去搜寻一下,然后try一下。
 
ADO不行吧,还是用BDE来删除.
 
to 816
各种有关的引擎都试过了,ADO怎么都行,BDE怎么都不行,
是不是有什么要升级,我用的BDE是Delphi5自带的,没升级过
只升级Delphi5和ADO的一个问题。
 
BDE连接DBF,是间接走的ODBC来做的。而ODBC,还要看是连接的库还是连接的自由表。
如果你用BDE,还是要从ODBC入手解决这个问题。不在乎BDE版本问题,是ODBC驱动的版本问题。
以前在给油田做的项目里,就发现这个问题,以98系统出问题最多。千奇百怪。最后查出来是
ODBC驱动的各个不同版本造成的。后来统一升级下ODBC的驱动,打个补丁就解决了。不知道是不是
适合你这种情况。
ADO连接方式和ODBC存在根本的区别。
 
另,PACK你是怎么用的。
DBF在用DELPHI删除后,仅仅打上了标记。你有没有好的解决方案。
 
刚才碰到微软的工程师,忘了问一下这个问题。
Pack 我也没有好的方法,但我能做到,只是觉得不好,所以在这儿提出来。
在关闭库或退出程序时,重新写一遍库。
 
调用BDE
很简单。
想知道的发邮件给我。
 
to wchal:
your email address?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1237793
在这个贴子中我贴出了在我这里运行正常的源代码,但是其他DFW好象不认同,你可以去看
一下。
 
后退
顶部