我以前总看见VB+ADO不能对VF的DBF 进行UPDATE 或DELETE 操作 这次自己真碰上了
情况是这样的  :
         每记录一条记录总要与表中的第一条记录相比  如果时间超过2天就删除第一条记录
我的老板很抠门的  其他数据库不肯买就买最便宜的!!!天那  救命

解决方案 »

  1.   

    连接上后和平时操纵数据库一样操作就行了。连接串:http://www.connectionstrings.com/
      

  2.   

    可以.绝对可以.
    数据库需要主键,dbf也一样操作.我当时用ado连接odbc做的.
      

  3.   

    你们不知道 他连正版VF都不愿意买  他希望只装个VF驱动就可以用
    上面的各位你门的意思是否要  在DBF里建个主键  才能用delete ,update吗
    具体怎么建主键呢 
     huangjianyou(小健)   你那个网址 我打不开  能给个代码吗
      

  4.   

    DBF / FoxPro 
     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 
      

  5.   

    我是这么写的
    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请各位帮忙  分不够可以再加  谢谢
      

  6.   

    请使用foxpro的引擎,不要到后面改为dbase的.
    仍然需要使用odbc引擎,不能用jet的,否则失败.我觉得说的很详细了.
      

  7.   

    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.Execute "delete * from sbl where ID= 5555"   '问题就出在这里 
    (我本来就是这么写的) 就是不能删除
      

  8.   

    VB连接VFP 后操作上只能 UPDATE,DELETE 不能 直接PACK的 不支持
    要通过拷贝文件的方法PACK
      

  9.   

    freq不是字段名呀应该是cnn.Execute "insert into sbl (ID) values(5555)"吧
      

  10.   

    delete sbl where ID= 5555"
    把DELETE语句改成上面的试试
      

  11.   

    你那删除的SQL语句有问题啊!
      

  12.   

    1、在ConnectionString中增加一项Deleted=Yes/NO(表示是否显示已被删除的列)
    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、删除语句语法不正确!
      

  13.   

    听取了各位的意见 已经做过改动可是不行  代码如下
    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
      

  14.   

    foxpro删除的工作原理就是用delete来逻辑删除记录,并不是真正的删除记录。
      

  15.   

    先用你的程序删除DBF表中的记录,然后用你的程序查询一下看看记录是否被删除掉,如果没被删除,退出你的程序,再用VFP打开DBF文件看看记录是否还存在,然后再执行VFP的PACK指令后再看看记录是否还存在,如果执行PACK指令后,记录依然存在,说明你的删除语句还有问题,记录没有被删掉;如果执行PACK指令后,记录不存在了,说明你的ConnectionString有问题。另:我上面提到的连接字符串中屏蔽已被删除的记录Deleted是等于YES还是等于NO我记不清了,你自己试一下。
      

  16.   

    删除语句应为Delete From [TableName] Where [Expressions]
    Delete From 中不用"*"我执行删除语句后,记录都是逻辑删除,未能真正删除。研究中...
      

  17.   

    为什么非要用dbf
    mdb不行吗
    反正都是一样的
    这么烦
    www.freewebs.com/xshlm
    上面的代码就想要怎么操作就能怎么