Dim Rsbiao As New ADODB.Recordset
Dim Stastr0 as string
Rsbiao.Open "select * from 标准件明细表", CnDoingWeld, adOpenDynamic, adLockOptimistic
Rsbiao.MoveFirst
Do While Rsbiao.EOF <> True
    If IsNull(Rsbiao.Fields.Item(0).Value) Then
       Rsbiao.Fields.Item(0).Value = StaStr0
    End If
    StaStr0 = Rsbiao.Fields.Item(0).Value
Rsbiao.MoveNext
Loop我是想实现发现记录有空的就按上一条记录填入,可是每次到Rsbiao.movenext处报错:键列信息不足或不正确,更新影响到更多的行!
怎么解决。
程序运行结果举例:
程序运行前:
123  12   34  45
          45  00
程序运行后:
123  12   34  45
123  12   45  00

解决方案 »

  1.   

    在Rsbiao.MoveNext前加入这句试试:rs.UpdateBatch adAffectAllChapters
      

  2.   

    '引用微软 ADO Ext.2.6 for dll and Security
    'ms acticex data object 2.6 librarySub CreateDatabase()
    Dim cat As New ADOX.Catalog
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Password=;Data Source=c:\new.mdb;"
    End SubSub CreateTable()
    Dim tbl As New Table
    Dim cat As New ADOX.Catalog
    Dim con As ADODB.Connectioncat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Password=;Data Source=c:\new.mdb;"
    tbl.Name = "TestTable"
    tbl.Columns.Append "ID", adInteger, 0
    tbl.Columns("ID").Properties("AutoIncrement") = True
    tbl.Columns.Append "FirstName", adVarWChar, 40
    tbl.Columns.Append "LastName", adVarWChar, 40
    tbl.Columns.Append "Birthdate", adDate
    tbl.Columns.Append "Weight", adInteger
       
    '设置列的必填属性为“否”
    tbl.Columns("Weight").Attributes = adColNullable
    cat.Tables.Append tbl'设置列的允许空字符串为“是”
    tbl.Columns("FirstName").Properties("Jet OLEDB:Allow Zero Length") = True' Connect to the database.
    Set con = cat.ActiveConnection' Insert records.
    'con.Execute "INSERT INTO TestTable VALUES ('Andy', 'Able', '1 Jan 1980', '150')"
    'con.Execute "INSERT INTO TestTable VALUES ('Betty', 'Baker', #2/22/1990#, 70)"    ' Close the database connection.
        con.Close
        Set con = Nothing
        Set tbl = Nothing
        Set cat = NothingEnd SubPrivate Sub CreateIndexes()
    On Error GoTo ErrTrap
    Dim IDX As ADOX.Index
    Set IDX = New ADOX.Index
    '这里加
    ' ===[Create Index 'PrimaryKey']===
      Set IDX = New ADOX.Index
      IDX.Name = "PrimaryKey"
      IDX.Columns.Append "ID"
      IDX.PrimaryKey = True
      IDX.Unique = True
      IDX.Clustered = False
      IDX.IndexNulls = adIndexNullsDisallow
      cat.Tables("TestTable").Indexes.Append IDX
      Set IDX = Nothing  Exit Sub
    ErrTrap:
      MsgBox Err.Number & " / " & Err.Description, , "Error In CreateIndexes"
      Exit Sub
      Resume
    End SubPrivate Sub Command1_Click()
    CreateDatabase
    CreateTable
    CreateIndexes
    End Sub
      

  3.   

    Dim Rsbiao As New ADODB.Recordset
    Dim Stastr0 as string
    Rsbiao.Open "select * from 标准件明细表", CnDoingWeld, adOpenDynamic, adLockOptimistic
    Rsbiao.MoveFirst
    Do While Rsbiao.EOF <> True
        If IsNull(Rsbiao.Fields.Item(0).Value) Then
           Rsbiao.Fields.Item(0).Value = StaStr0
           Rsbiao.Update
        End If
        StaStr0 = Rsbiao.Fields.Item(0).Value
    Rsbiao.MoveNext
    Loop
      

  4.   

    Dim Rsbiao As New ADODB.Recordset
    Dim Stastr0 as string
    Rsbiao.Open "select * from 标准件明细表", CnDoingWeld, adOpenDynamic, adLockOptimistic
    Rsbiao.MoveFirst
    Do While Rsbiao.EOF <> True
        If IsNull(Rsbiao.Fields.Item(0).Value) Then
           Rsbiao.Fields.Item(0).Value = StaStr0
           Rsbiao.Update
        End If
        StaStr0 = Rsbiao.Fields.Item(0).Value
    Rsbiao.MoveNext
    Loop这种方法还是不行。
    online(龙卷风V2.0--再战江湖)有好的简单的ado方法么?就是我那种方法,我觉得我的方法也没有明显的错误,不想换方法了。谢谢
      

  5.   

    表中要有主键,而且第一条信息不能有空值
    Dim Rsbiao As New ADODB.Recordset
    Dim Stastr0 as string
    Dim miID   '记录主键信息
    Rsbiao.Open "select * from 标准件明细表", CnDoingWeld, adOpenKeyset, adLockOptimistic
    While Not Rsbiao.EOF
        miID = Rsbiao!主键 
        If IsNull(Rsbiao!字段1) Then
            CnDoingWeld. Execute "Update 标准件明细表 "& _
                "Set 字段1 = StaStr0 "& _
                "where 主键 = '"& miID &"'"
        End If
        StaStr0 = Rsbiao!字段1
        Rsbiao.MoveNext
    Wend
      

  6.   

    怎么设主键呀,表是从EXCEL转化过来的,原来的EXCEL表就是有空白项的,所以我才要先处理它,请指教