我想把一组数据更新到数据库中的一列当中,这组数据来自一组文本框,请问该怎么做。
我用ado和dao都试了,代码如下:
DAO方式:
-----------------------------
Dim db As Database     
Dim Rs As Recordset
Dim i As IntegerSet db = OpenDatabase("D:\test.mdb")
Set Rs = db.OpenRecordset("select 数字1 from table")Rs.MoveFirst
Rs.Edit
For i = 0 To 5
Rs.Fields("数字1") = Text1(i).Text
Rs.MoveNext
Rs.Update
Next i
----------------------------
报错:在不使用addneew或edit情况下更新。ADO方式:
-------------------------------
Dim CN As New ADODB.Connection     
Dim Rs As New ADODB.Recordset
Dim i As IntegerCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\test.mdb"
    
CN.CursorLocation = adUseClient
Rs.Open "select 数字1 from achievment", CN, adOpenDynamic, adLockOptimisticRs.MoveFirst
For i = 0 To 5
Rs.Fields("数字1") = Text1(i).Text
Rs.MoveNext
Next i
-----------------------------
报错:列信息不足或不正确,更新影响到多行。如果用adLockBatchOptimistic代替adLockOptimistic,加了一个datagrid来看表现,datagrid显示更新成功,但就是不修改数据库中的数据。

解决方案 »

  1.   

    ado更新
    rs.open "update achievment set 数字1 where 条件"
      

  2.   

    Rs.MoveFirst
    For i = 0 To 5
        Rs!数字1 = Text1(i).Text
        Rs.Update
        Rs.MoveNext
    Next
      

  3.   

    rs.open "update achievment set 数字1 where 条件"
    这个语句完整是什么样的,我用它报错说语法错误(没用where)。哪里与Recordset的完整语法说明啊。“一行一行更新”是怎么更新?
      

  4.   

    Rs.Open "select 数字1 from achievment", CN, adOpenStatic, adLockOptimisticRs.MoveFirst
    For i = 0 To 5
    Rs.Fields("数字1") = Text1(i).Text
    rs.update
    Rs.MoveNext
    Next i
      

  5.   

    hzybc(地平线)老兄的代码还是解决不了问题,依然是“列信息不足或不正确,更新影响到多行”
      

  6.   

    数据类型不匹配。如果不行只能一个一个写,该转换数据类型的就转换数据类型。
       rs.fields("A1") = val(text1.text)'数字转换。
       rs.fields("A2") = "A2"
      

  7.   

    转换数据类型的函数:cdbl cdate clng-------
       如clng(trim$(text1.text))
      

  8.   

    不是一个一个的更新,是一个一个的写(即不用循环)。转换整数cint如下for i = 1 to rs.recordcount
       rs.movefirst
       Rs.Fields("数字0") = cint(Text1(0).Text)
       Rs.Fields("数字1") = cint(Text1(1).Text)
       Rs.Fields("数字2") = cint(Text1(2).Text)
       Rs.Fields("数字3") = cint(Text1(3).Text)
       Rs.Fields("数字4") = cint(Text1(4).Text)
       rs.update
       rs.movenext
    next i
    但这样是把所有的记录都写成一样的值。不知道你设置主键没有,如有主键,那是不行的。