请问怎么将一个数组中的值去更新数据库表中的一列?例:
rstOra.Open "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "    '查询出这个班级的所有卡号
     If UBound(tmpid) = rstOra.RecordCount Then   '此数组中己包含要替换的新卡号
        Do While rstOra.EOF <> True
            rstOra.Open "update ke_school_student set cardno = '数组????'  where company_id='0011' and class_name ='高一(1)班'"
            rstOra.MoveNext
        Loop
      End If请问我这个循环应该怎么写?才能把数组里面的新卡号逐个更新数据表中原来旧的卡号?请各位大哥帮帮忙忙,问题比较急

解决方案 »

  1.   

    dim i as long
    rstOra.Open "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "    '查询出这个班级的所有卡号
         If UBound(tmpid)+1 = rstOra.RecordCount Then   '此数组中己包含要替换的新卡号
            Do While rstOra.EOF <> True
                 rstOra.Open "update ke_school_student set cardno = '" & tmpid(i) & "'  where company_id='0011' and class_name ='高一(1)班'"
                rstOra.MoveNext
                i=i+1
            Loop
          End If
      

  2.   

    更新的時候新卡号和旧卡号是什么关系哪?
    怎么也不能是随便插入的吧?
    如果数组时从小到大的,而且也是按这个顺序插入的可以这样
    dim i as long
    rstOra.Open "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "    '查询出这个班级的所有卡号
         If UBound(tmpid)+1 = rstOra.RecordCount Then   '此数组中己包含要替换的新卡号
            Do While rstOra.EOF <> True
                 rstOra.Open "update ke_school_student set cardno = '" & tmpid(i) & "'  where company_id='0011' and class_name ='高一(1)班' Order By cardno"'添加排序 按cardno从小到大
                rstOra.MoveNext
                i=i+1
            Loop
          End If
      

  3.   

    rstOra.Open "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "    '查询出这个班级的所有卡号
         If UBound(tmpid) = rstOra.RecordCount Then   '此数组中己包含要替换的新卡号
            For i = 0 To rstOra.RecordCount - 1
                rstOra.cardno = tmpid(i)
                rstOra.Update
                rstOra.MoveNext
            Next i
          End If
    rstOra.Close
      

  4.   

    修改一下楼上的
    rstOra.Open "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "    '查询出这个班级的所有卡号
         rstOra.MoveLast
         If tmpid.count = rstOra.RecordCount Then   '此数组中己包含要替换的新卡号
            rstOra.MoveFirst
            For i = 0 To rstOra.RecordCount - 1
                rstOra.cardno = tmpid(i)
                rstOra.Update
                rstOra.MoveNext
            Next i
          End If
    rstOra.Close
      

  5.   

    Dim conn As ADODB.Connection
              Dim rs As ADODB.Recordset
              Dim sql As String          Set conn = New ADODB.Connection
              Set rs = New ADODB.Recordset
              conn.ConnectionString = "Provider=MSDAORA.1;User ID=kaf;password=kaf;Data Source=kaf;Persist Security Info=False"
              conn.CursorLocation = adUseClient
              conn.Open
              rs.CursorLocation = adUseClient
              rs.ActiveConnection = conn
              sql = "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "
              Set rs = conn.Execute(sql)
                If UBound(tmpid) = rs.RecordCount Then   '此数组中己包含要替换的新卡号
                    For i = 0 To rs.RecordCount - 1
                        rs.Fields(0) = tmpid(i)
                        rs.Update
                        rs.MoveNext
                    Next i
                End If
              rs.Close
              sql = "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' "
              Set rs = conn.Execute(sql)
              Set DataGrid1.DataSource = rs
              DataGrid1.Refresh但这样查询出来后,数据库中并没有更新过来啊,是不是没有提交?
      

  6.   

    如果是按順序一條條改的話,樓上的應該沒什麽問題。如果要指定一條對一條,用update。
    update 表名 set 字段名=‘新值’where 字段名=‘舊值’
      

  7.   

    to:zq972() ( ) 信誉:100 
    如果改成大哥你那样的话,会提示这样一个错误
    实时错误 '3251'
    当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制to:vansoft(Vansoft Workroom) ( ) 信誉:55 
    可为什么这样执行,并不更新到数据库呢?难道只更新了rs记录集么?            Do While rs.EOF <> True
                    estr = oSheet.Cells(r + 2, 2)
                    sstr = oSheet.Cells(r + 2, 3)
                    str = tmpid(r)
                    Debug.Print estr & "cardno is: " & str; "  sex is: " & sstr
                    sql = "update ke_school_student set cardno = str  where  student_name = '" + estr + "' and sex = '" + sstr + "' "
                    Set rs = conn.Execute(sql)
                    rs.MoveNext
                    r = r + 1
                Loop
    循环这样做可不可以?为什么一样都不提交到数据表,查询出来的记录都是原来的值
      

  8.   

    rstOra.Open "select cardno from ke_school_student where company_id='0011' and class_name ='高一(1)班' ",你的connection,adOpenKeyset,adLockBatchOptimistic   '查询出这个班级的所有卡号
         rstOra.MoveLast
         If tmpid.count = rstOra.RecordCount Then   '此数组中己包含要替换的新卡号
            rstOra.MoveFirst
            For i = 0 To rstOra.RecordCount - 1
                rstOra.cardno = tmpid(i)
                rstOra.Update
                rstOra.MoveNext
            Next i
          End If
    rstOra.Close