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
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
'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
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
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方法么?就是我那种方法,我觉得我的方法也没有明显的错误,不想换方法了。谢谢
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