Vb6 如何使用DAO向FoxPro文件添加列

Vb6 如何使用DAO向FoxPro文件添加列,vb6,dao,foxpro,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。(我没有试过) 这可能吗?有一种可能的替代方法——我知道这是可行的,但不太方便——从

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

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

Set tdfCoParms = mDBParms.TableDefs(CoParms)
tdfCoParms.Fields.Append tdfCoParms.CreateField("CoName", dbText, 30)
我不确定这是否适用于FoxPro。(我没有试过)


这可能吗?有一种可能的替代方法——我知道这是可行的,但不太方便——从一个结构正确的空表开始,然后从现有填充的文件中跨记录复制,使用SELECT的INSERT从中进行选择。

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

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

  • 创建包含所需列的空文件/表
  • 将此文件复制到“test.dbf”
  • 将填充的数据文件“链接”中的记录插入此文件
  • 
    作为数据库工作
    将qrd设置为DAO.QueryDef
    将szSqlString设置为字符串
    设置dbsWork=OpenDatabase(szWorkDir,False,False,“foxpro2.5”)
    将字段列表设置为字符串
    szFieldList=“field1、field2、field3”
    szSqlString=“插入测试选择”&szFieldList&“从链接”
    设置qrd=dbsWork.CreateQueryDef(“,szSqlString)
    执行
    设置qrd=无
    设置工作=无
    但是下面基于@wqw的建议要好得多,因为不需要预定义的文件

    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
    专用子测试1() 作为数据库工作 将qrd设置为DAO.QueryDef 将szSqlString设置为字符串 设置dbsWork=OpenDatabase(mydatabasepath,False,False,“foxpro2.5”) 将字段列表设置为字符串 szSqlString=“ALTER TABLE work.dbf ADD COLUMN fred VARCHAR(30)” 设置qrd=dbsWork.CreateQueryDef(“,szSqlString) 执行 设置qrd=无 设置工作=无 端接头
    此或
    “ALTER TABLE[”&CoParms&“]ADD COLUMN[”&CoName&“]VARCHAR(30)”
    谢谢wqw,但这会导致错误3282“在包含数据的表上不支持操作”。我使用我描述的可能替代方法解决了此问题-请参阅下面的详细信息。错过了编辑上一条注释的超时时间-请参阅下面的解决方案,因为我看不到如何在这里格式化代码。@wqw你说得对!再看看这个问题,根据你的建议,我现在有了一个简单的解决方案。我不知道如何在这里添加代码,所以我在下面输入它作为答案。 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