我以前总看见VB+ADO不能对VF的DBF 进行UPDATE 或DELETE 操作 这次自己真碰上了
情况是这样的 :
每记录一条记录总要与表中的第一条记录相比 如果时间超过2天就删除第一条记录
我的老板很抠门的 其他数据库不肯买就买最便宜的!!!天那 救命
情况是这样的 :
每记录一条记录总要与表中的第一条记录相比 如果时间超过2天就删除第一条记录
我的老板很抠门的 其他数据库不肯买就买最便宜的!!!天那 救命
数据库需要主键,dbf也一样操作.我当时用ado连接odbc做的.
上面的各位你门的意思是否要 在DBF里建个主键 才能用delete ,update吗
具体怎么建主键呢
huangjianyou(小健) 你那个网址 我打不开 能给个代码吗
ODBC
standard:"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\mydbpath;" OLE DB, OleDbConnection (.NET)
standard:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=" Visual FoxPro
OLE DB, OleDbConnection (.NET)
Database container (.DBC):"Provider=vfpoledb.1;Data Source=C:\MyDbFolder\MyDbContainer.dbc;Password=MyPassWord;Collating Sequence=machine" Free table directory:"Provider=vfpoledb.1;Data Source=C:\MyDataDirectory\;Password=MyPassWord;Collating Sequence=general"
Read more (Microsoft msdn) >>
ODBC
Database container (.DBC):"Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\myvfpdb.dbc;Exclusive=No;Collate=Machine;" Free Table directory:"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=c:\myvfpdbfolder;Exclusive=No;Collate=Machine;"
"Collate=Machine" is the default setting, for other settings check the list of supported collating sequences >>Microsoft Visual Foxpro site: http://msdn.microsoft.com/vfoxpro
Private Sub Command1_Click()
Dim cnn As New ADODB.Connection
cnn.CursorLocation = adUseClient
cnn.ConnectionString = "driver={microsoft visual foxpro driver}; sourcetype=dbf;sourcedb=d:\SBL_DATABASE"
cnn.Open
cnn.Execute "create table d:\SBL_DATABASE\SBL.dbf ([ID] integer,[Time_sj] char(10),[cq] float, [cq_Alarm] Boolean ,[Mod] float ,[Mod_alarm] Boolean,[Temp] float )" '这里没有建立主关键字 怎么建立 (我根据VB自带的帮助写好象不行)
cnn.Execute "insert into sbl (freq) values(5555)"
cnn.Execute "insert into sbl (freq) values(3333)"
cnn.Execute "insert into sbl (freq) values(4444)"
cnn.Close
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\SBL_DATABASE;Extended Properties=dBASE IV;User ID=Admin;Password=" '到这里都通过了
cnn.Execute "delete * from sbl where Freq = 5555" '问题就出在这里
End Sub请各位帮忙 分不够可以再加 谢谢
仍然需要使用odbc引擎,不能用jet的,否则失败.我觉得说的很详细了.
cnn.CursorLocation = adUseClient
cnn.ConnectionString = "driver={microsoft visual foxpro driver}; sourcetype=dbf;sourcedb=d:\SBL_DATABASE"
cnn.Open
cnn.Execute "create table d:\SBL_DATABASE\SBL.dbf ([ID] integer,[Time_sj] char(10),[cq] float, [cq_Alarm] Boolean ,[Mod] float ,[Mod_alarm] Boolean,[Temp] float )" '这里没有建立主关键字 怎么建立 (我根据VB自带的帮助写好象不行)
cnn.Execute "insert into sbl (freq) values(5555)"
cnn.Execute "insert into sbl (freq) values(3333)"
cnn.Execute "insert into sbl (freq) values(4444)"
cnn.Execute "delete * from sbl where ID= 5555" '问题就出在这里
(我本来就是这么写的) 就是不能删除
要通过拷贝文件的方法PACK
把DELETE语句改成上面的试试
cnn.ConnectionString = "driver={microsoft visual foxpro driver}; sourcetype=dbf;sourcedb=d:\SBL_DATABASE;Deleted=Yes"
(Deleted=Yes是显示还是不显示已被删除的列记不清了,你自己试试吧!)下面是一个完整的连接字符串,此字符串从ODBC的FileDsn中取得
DRIVER=Microsoft FoxPro VFP Driver (*.dbf);UID=;Deleted=Yes;Null=Yes;Collate=Machine;BackgroundFetch=Yes;Exclusive=No;SourceType=DBF;SourceDB=c:
2、删除语句语法不正确!
Private Sub Command1_Click()
Dim cnn As New ADODB.Connection
cnn.CursorLocation = adUseClient
cnn.ConnectionString = "driver={microsoft visual foxpro driver}; sourcetype=dbf;sourcedb=d:\SBL_DATABASE;Deleted=Yes" '已经加了Deleted=Yes
cnn.Open
cnn.Execute "create table d:\SBL_DATABASE\SBL.dbf ([Freq] integer,[Time_sj] char(10),[cq] float, [cq_Alarm] Boolean ,[V5] float ,[V5_Alarm] Boolean,[Mod] float ,[Mod_alarm] Boolean,[Temp] float )"
cnn.Execute "insert into sbl (freq) values(5555)"
cnn.Execute "delete sbl where freq= 5555" '已经改了删除语句
End Sub
Delete From 中不用"*"我执行删除语句后,记录都是逻辑删除,未能真正删除。研究中...
mdb不行吗
反正都是一样的
这么烦
www.freewebs.com/xshlm
上面的代码就想要怎么操作就能怎么