VB6.0中的Recordset

时间:2009-05-25 06:16:15

标签: sql vb6 recordset

我正在使用VB6从记录集中的数据库中检索数据...因此,在使用SQL中的Select检索数据时,我添加了一个名为注释的列这样在记录集中,表+'Comments'列的所有列都将出现...我不想(并且我不能)更新数据库中的任何内容,因为我现在只是从数据库中获取数据......

现在,当我传递获取的数据进行验证时,如果recordSet中的特定行是错误的,我想用相应的错误填充'comments'列。)当我这样做时,我得到一个错误说“我没有被授权这样做!!(更新“评论”栏目......“

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

你可以帮助如何解决这个问题????任何复制记录集的方法(不继承其属性的东西)??????

3 个答案:

答案 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)

不完全是你想要的,但我就是这样做的:

  1. 创建一个类来封装记录集('Customer'表的'Customer'类)
  2. 将您的Comment属性添加到类而不是记录集
  3. 向您的班级添加验证方法。让它写入您的Comment属性(我使用错误集合)
  4. 阅读记录集
  5. 将其解析为“新客户”
  6. 验证
  7. 检查Comment属性(或错误集合)

答案 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