1

我正在使用 VB6 从记录集中的数据库中检索数据...因此,在使用 SQL 中的 Select 检索数据时,我添加了一个名为Comments的列,以便在记录集中,表的所有列+“Comments”列会出现...我不想(而且我也不能)更新数据库中的任何内容,因为我现在只是从数据库中“获取”数据...

现在,当我通过获取的数据进行验证时,如果记录集中的特定行是错误的,我想用相应的错误填充“评论”列)......当我这样做时,我收到一条错误消息“我是无权这样做!!(更新“评论”栏”....

现在我的问题是“我能以什么方式解决这个问题???”..我试图复制这个记录集,现在填充'comments'列(在复制的列中),这反过来又显示了同样的错误.. .似乎这可能是因为重复的(recordSet)只是保留了原始的属性......

你能帮我解决这个问题吗????任何复制记录集的方法(不继承其属性)??????

4

3 回答 3

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
于 2009-05-27T19:49:08.997 回答
1

不完全是您正在寻找的东西,但这就是我的做法:

  1. 创建一个类来封装记录集('Customer' 表的'Customer' 类)
  2. 将您的 Comment 属性添加到类而不是记录集
  3. 将 Validate 方法添加到您的类。让它写入您的 Comment 属性(我使用错误集合)
  4. 读取记录集
  5. 将其解析为“新客户”
  6. 证实
  7. 检查 Comment 属性(或错误集合)
于 2009-05-25T06:25:45.347 回答
0

您可以使用 MSDataShape 及其SHAPE..APPEND语法将新字段附加到 ADO 记录集。下面是一个使用 Jet(又名 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
于 2009-05-26T11:23:49.437 回答