0

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

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

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

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

这可能吗?有一个可能的替代方案 - 我知道这会起作用,但不是那么方便 - 从正确结构的空表开始,然后使用来自此的 SELECT 的 INSERT 复制现有填充文件中的记录。

4

1 回答 1

0

谢谢@wqw,因为您的解决方案确实有效。

这是我的第一个替代方案,它有效:

  1. 创建一个包含所需列的空文件/表。
  2. 将此文件复制到“test.dbf”。
  3. 将填充数据文件“链接”中的记录插入其中。

    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
于 2012-12-25T14:53:56.577 回答