如何使用DAO将列添加到FoxPro文件

时间:2012-12-24 21:06:51

标签: vb6 dao foxpro

我需要在VB6中使用DAO将一些列添加到FoxPro 2.6 DBF文件中。

如果数据在.MDB文件中,我知道这可行。这是我用于.MDB的代码片段:

Set tdfCoParms = mDBParms.TableDefs(CoParms)
tdfCoParms.Fields.Append tdfCoParms.CreateField("CoName", dbText, 30)

我不确定这是否适用于FoxPro。 (我还没试过)

这可能吗?有一种可能的选择 - 我知道它可以工作,但这不太方便 - 从一个正确结构的空表开始,然后使用SELECT的INSERT从现有的填充文件中复制记录。 / p>

1 个答案:

答案 0 :(得分:0)

谢谢你@wqw,因为你的解决方案当然有效。

这是我的第一个选择,有效:

  1. 创建一个包含所需列的空文件/表。
  2. 将此文件复制到“test.dbf”。
  3. 将填充数据文件“link”中的记录插入此内容。
  4. 
        Dim dbsWork As Database
        Dim qrd As DAO.QueryDef
        Dim szSqlString As String
    
        Set dbsWork = OpenDatabase(szWorkDir, False, False, "FoxPro 2.5")
        Dim szFieldList As String
        szFieldList = "field1, field2, field3"
        szSqlString = "INSERT INTO test SELECT " & szFieldList & " FROM link"
        Set qrd = dbsWork.CreateQueryDef("", szSqlString)
        qrd.Execute
    
        Set qrd = Nothing
        Set dbsWork = Nothing
    

    But the following based on @wqw's suggestion is much better, as no predefined file is required

    Private Sub Test1()
    
        Dim dbsWork As Database
        Dim qrd As DAO.QueryDef
        Dim szSqlString As String
    
        Set dbsWork = OpenDatabase(MyDataBasPath, False, False, "FoxPro 2.5")
        Dim szFieldList As String
        szSqlString = "ALTER TABLE work.dbf ADD COLUMN fred VARCHAR(30)"
        Set qrd = dbsWork.CreateQueryDef("", szSqlString)
        qrd.Execute
    
        Set qrd = Nothing
        Set dbsWork = Nothing
    
    End Sub