Private Sub Command1_Click()
Dim MyCon As New ADODB.Connection
Dim MyRs As New ADODB.Recordset
Dim ConStr As String
ConStr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;PassWord=zhangzs;DataBase=mytest"
On Error GoTo Error:
MyCon.ConnectionString = ConStr
MyCon.CommandTimeout = 0
MyCon.Open
MyRs.CursorLocation = adUseClient
MyRs.ActiveConnection = MyCon
Dim MySqlStr As String
MySqlStr = "select * from mat"
MyRs.Open MySqlStr
MyRs.MoveFirst
Do While Not MyRs.EOF
MsgBox MyRs("Material").Value
---上面MSGBOX取出来的并非数据表中的值?而是上次的MyRs("Material")
MyRs("Material") = "A"
MyRs.MoveNext
Loop
Set DataGrid1.DataSource = MyRs
DataGrid1.Refresh
DataGrid1.Columns(2).Width = 700
Exit Sub
Error:
MsgBox Err.Description, vbOKOnly, "error"
End Sub
Dim MyCon As New ADODB.Connection
Dim MyRs As New ADODB.Recordset
Dim ConStr As String
ConStr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;PassWord=zhangzs;DataBase=mytest"
On Error GoTo Error:
MyCon.ConnectionString = ConStr
MyCon.CommandTimeout = 0
MyCon.Open
MyRs.CursorLocation = adUseClient
MyRs.ActiveConnection = MyCon
Dim MySqlStr As String
MySqlStr = "select * from mat"
MyRs.Open MySqlStr
MyRs.MoveFirst
Do While Not MyRs.EOF
MsgBox MyRs("Material").Value
---上面MSGBOX取出来的并非数据表中的值?而是上次的MyRs("Material")
MyRs("Material") = "A"
MyRs.MoveNext
Loop
Set DataGrid1.DataSource = MyRs
DataGrid1.Refresh
DataGrid1.Columns(2).Width = 700
Exit Sub
Error:
MsgBox Err.Description, vbOKOnly, "error"
End Sub
好象加上
MyRs.LockType = adLockOptimistic
MyRs.CursorType = adOpenDynamic
后在执行
MyRs.MoveFirst
Do While Not MyRs.EOF
MyRs("Material") = "A"
MyRs.MoveNext
Loop
就会将表中的Material字段全部更改为A
MyRs.LockType = adLockOptimistic
MyRs.CursorType = adOpenDynamic
报错:当前记录不支持更新,这可能是提供程序的限制,也可能是选定锁定类型的限制。
如果加上:
MyRs.LockType = adLockOptimistic
MyRs.CursorType = adOpenDynamic
错误是没有了,但是数据表mat中的material字段的值,更改为了"A",
也就是 MyRs("Material") = "A" 所造成的。请各位帮忙,由于特殊原因我只能更改数据集MyRs,而表的内容不可以修改。
MyRs.CursorType = adOpenDynamic
下一步就是记录集汇总的问题:
ID Material Weight
1 A 0.5
1 A 1.6---》ID Material Weight
1 A 2.1该如何做呢?