如何使用 DAO 将列添加到 FoxPro 文件
Posted
技术标签:
【中文标题】如何使用 DAO 将列添加到 FoxPro 文件【英文标题】:How to add column to FoxPro file using DAO 【发布时间】:2012-12-11 03:10:17 【问题描述】:我需要在 VB6 中使用 DAO 将一些列添加到 FoxPro 2.6 DBF 文件中。
如果数据在 .MDB 文件中,我知道这会起作用。这是我用于 .MDB 的代码 sn-p:
Set tdfCoParms = mDBParms.TableDefs(CoParms)
tdfCoParms.Fields.Append tdfCoParms.CreateField("CoName", dbText, 30)
我不确定这是否适用于 FoxPro。 (没试过)
这可能吗?有一个可能的替代方案 - 我知道它会起作用,但不是那么方便 - 从正确结构的空表开始,然后从现有填充文件中复制记录,使用 INSERT 的 SELECT from this。
【问题讨论】:
这个或"ALTER TABLE [" & CoParms & "] ADD COLUMN [" & CoName & "] VARCHAR(30)"
感谢 wqw,但这会产生错误 3282“包含数据的表不支持操作。”我使用我描述的可能替代方案解决了这个问题 - 请参阅下面的详细信息。
错过了编辑上一条评论的超时 - 请参阅下面的解决方案,因为我看不到如何在此处格式化代码。
@wqw 你是对的!再次查看这个问题,根据您的建议,我现在有了一个简单的解决方案。我看不到如何在此处添加代码,因此在下面将其作为答案输入。
【参考方案1】:
谢谢@wqw,因为您的解决方案确实有效。
这是我的第一个替代方案,它奏效了:
-
创建一个包含所需列的空文件/表。
将此文件复制到“test.dbf”。
将已填充数据文件“链接”中的记录插入到此。
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
但是基于@wqw 的建议的以下内容要好得多,因为不需要预定义文件
私有子测试1() Dim dbsWork As Database 将 qrd 调暗为 DAO.QueryDef 将 szSqlString 调暗为字符串 设置 dbsWork = OpenDatabase(MyDataBasPath, False, False, "FoxPro 2.5") 将 szFieldList 调暗为字符串 szSqlString = "ALTER TABLE work.dbf ADD COLUMN fred VARCHAR(30)" 设置 qrd = dbsWork.CreateQueryDef("", szSqlString) qrd.执行 设置 qrd = 无 设置 dbsWork = 无 结束子
【讨论】:
以上是关于如何使用 DAO 将列添加到 FoxPro 文件的主要内容,如果未能解决你的问题,请参考以下文章
在 BASH 脚本中使用“awk”将列添加到 CSV 文件的末尾
利用visual foxpro将dbf文件转为excel文件之后 中文部分都是乱码如何解决呢?
如何使用 ngrok 连接到 Visual FoxPro 数据库