我正在使用VB6从记录集中的数据库中检索数据...因此,在使用SQL中的Select检索数据时,我添加了一个名为注释的列这样在记录集中,表+'Comments'列的所有列都将出现...我不想(并且我不能)更新数据库中的任何内容,因为我现在只是从数据库中获取数据......
现在,当我传递获取的数据进行验证时,如果recordSet中的特定行是错误的,我想用相应的错误填充'comments'列。)当我这样做时,我得到一个错误说“我没有被授权这样做!!(更新“评论”栏目......“
现在我的问题是“以什么方式我可以解决这个问题???”我试图复制这个记录集,现在填写'comments'列(在复制的一个)中,而这些列又显示相同的错误......似乎这可能是因为重复的一个(recordSet)只保留原始的属性......
你可以帮助如何解决这个问题????任何复制记录集的方法(不继承其属性的东西)??????
答案 0 :(得分:2)
我认为您只是在询问如何执行断开连接的记录集。 为此,您只需更改记录集的光标位置。
Dim rstTest as ADODB.RecordSet
Set rstTest = New ADODB.RecordSet
With rstTest
.CursorLocation = adUseClient
.Open "your sql here", your_connection_object, adOpenStatic, adLockBatchOptimistic, adCmdText
' now disconnect it and force the local copy
.ActiveConnection = Nothing
End With
答案 1 :(得分:1)
不完全是你想要的,但我就是这样做的:
答案 2 :(得分:0)
您可以使用MSDataShape及其SHAPE..APPEND
语法将新字段附加到ADO Recordset。这是使用Jet(a.k.a. MS Access)的快速示例:
Sub ShapeAppendField()
On Error Resume Next
Kill Environ$("temp") & "\DropMe.mdb"
On Error GoTo 0
Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat
.Create _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _
Environ$("temp") & "\DropMe.mdb"
Dim jeng
Set jeng = CreateObject("JRO.JetEngine")
jeng.RefreshCache .ActiveConnection
Set .ActiveConnection = Nothing
End With
Dim con
Set con = CreateObject("ADODB.Connection")
With con
.ConnectionString = _
"Provider=MSDataShape;" & _
"Data Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _
Environ$("temp") & "\DropMe.mdb"
.CursorLocation = 3
.Open
.Execute _
"CREATE TABLE Test (" & _
"existing_col INTEGER NOT NULL);"
.Execute _
"INSERT INTO Test (existing_col)" & _
" VALUES (1);"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
With rs
.CursorType = 2
.LockType = 4
.Source = _
"SHAPE {" & _
" SELECT existing_col" & _
" FROM Test" & _
"} APPEND NEW adInteger AS new_col"
Set .ActiveConnection = con
.Open
Set .ActiveConnection = Nothing
.Fields("new_col").value = 55
MsgBox .GetString
.Close
End With
End With
End Sub