【发布时间】:2019-11-04 23:50:08
【问题描述】:
我正在尝试将列添加到 VB6 中的 ADO 记录集。我只是想在表的末尾添加 4 列。这是一个我们经常使用的表,但我们经常删除其中的所有数据并用我们想要的下一个信息重新填充它,基本上只是将其用作临时保存数据的一种手段。
我发现既然是 ADO,我应该可以使用以下内容:
with rs
.fields.append "column name", "enum dataType"
end with
从阅读和实验来看,似乎必须关闭记录集才能添加列。
这是我的代码:
rs.Open "MeterReads", DataEnvironment7.cnPTracker, adOpenStatic, adLockOptimistic, adCmdTable
' 2019-11-4 Adding in a section to accomadate for days to depeletion
If gbEnableD2D Then
bExists = False
With rs
For Each fField In rs.Fields
If UCase(fField.Name) = UCase("eddB") Then
bExists = True
Exit For
End If
Next
If bExists = False Then
.Close
.Fields.Append "eddB", adDate
.Fields.Append "eddC", adDate
.Fields.Append "eddM", adDate
.Fields.Append "eddY", adDate
.Open
End If
End With
End If
我希望在我的表中添加额外的列。但是,我可以看一下桌子,发现它们不在里面。我可以看到我已经关闭了记录集。它试图将列附加到它。但是,我打开记录集备份,这些列从表中消失。当我说它们出现时,我的意思是使用 Microsoft Visual Basic 的调试系统。它基本上有一个部分显示你的变量和对象,它显示里面的项目和更多信息。所以我知道它会尝试它。但我似乎无法让它保留它。任何关于我搞砸的想法或想法都会很棒。
【问题讨论】:
-
我确实发现了对打开的 Recordset 或设置了 ActiveConnection 属性的 Recordset 调用 fields.Append 方法会导致运行时错误。您只能将字段附加到未打开且尚未连接到数据源的 Recordset。通常,这些是您使用 CreateRecordset 方法或通过将新 Recordset 对象显式分配给对象变量来创建的新 Recordset 对象。这并不让我感到充满希望。如果这是准确的。在不创建新记录集的情况下保留信息的想法?