用Adodb确实由此问题,用Adodc绑定,就OK。 Datagrid与Adodb在绑定后,Datagrid表层的数据与Recordset之间在更改数据时,不大好协调。 我的做法是: Private Sub btn_insert_Click() With Dg_sub .AllowAddNew = True .AllowUpdate = True If .ApproxCount >= 1 Then .Row = .ApproxCount .col = 0 .Scroll 0, rst.RecordCount End If Call set_btn .Enabled = True .SetFocus End With End SubPrivate Sub btn_edit_Click() Dg_sub.AllowUpdate = True Call set_btn Dg_sub.Enabled = True Dg_sub.SetFocus End SubPrivate Sub btn_cancel_Click() rst.CancelBatch rst.CancelUpdate Set rst = Nothing Call set_dg 'refresh datagrid End Sub Private Sub btn_delete_Click() If rst.RecordCount < 1 Then MsgBox "没有可删除的记录!", vbOKOnly, "提示信息" Exit Sub End If If MsgBox("确认删除当前记录", vbOKCancel + vbQuestion, "确认信息") = vbOK Then rst.Delete adAffectCurrent rst.UpdateBatch Call set_dg 'refresh datagrid End If End Sub Private Sub btn_save_Click() Dim i With Dg_sub For i = 0 To .Columns.Count - 1 If IsNull(rst(.Columns(i).DataField).value) And .Columns(i).DataField <> "金额" Then MsgBox .Columns(i).DataField + "不能为空!", vbCritical + vbOKOnly, "提示信息" .SetFocus Exit Sub End If Next On Error GoTo errhandle .AllowAddNew = False .AllowUpdate = False rst.UpdateBatch Call set_dg MsgBox "记录已成功提交", vbOKOnly, "提示信息" btn_insert.SetFocus End With Exit Sub errhandle: MsgBox "记录提交失败", vbOKOnly, "提示信息" End Sub
Datagrid与Adodb在绑定后,Datagrid表层的数据与Recordset之间在更改数据时,不大好协调。
我的做法是:
Private Sub btn_insert_Click()
With Dg_sub
.AllowAddNew = True
.AllowUpdate = True
If .ApproxCount >= 1 Then
.Row = .ApproxCount
.col = 0
.Scroll 0, rst.RecordCount
End If
Call set_btn
.Enabled = True
.SetFocus
End With
End SubPrivate Sub btn_edit_Click()
Dg_sub.AllowUpdate = True
Call set_btn
Dg_sub.Enabled = True
Dg_sub.SetFocus
End SubPrivate Sub btn_cancel_Click()
rst.CancelBatch
rst.CancelUpdate
Set rst = Nothing
Call set_dg 'refresh datagrid
End Sub
Private Sub btn_delete_Click()
If rst.RecordCount < 1 Then
MsgBox "没有可删除的记录!", vbOKOnly, "提示信息"
Exit Sub
End If
If MsgBox("确认删除当前记录", vbOKCancel + vbQuestion, "确认信息") = vbOK Then
rst.Delete adAffectCurrent
rst.UpdateBatch
Call set_dg 'refresh datagrid
End If
End Sub
Private Sub btn_save_Click()
Dim i
With Dg_sub
For i = 0 To .Columns.Count - 1
If IsNull(rst(.Columns(i).DataField).value) And .Columns(i).DataField <> "金额" Then
MsgBox .Columns(i).DataField + "不能为空!", vbCritical + vbOKOnly, "提示信息"
.SetFocus
Exit Sub
End If
Next
On Error GoTo errhandle
.AllowAddNew = False
.AllowUpdate = False
rst.UpdateBatch
Call set_dg
MsgBox "记录已成功提交", vbOKOnly, "提示信息"
btn_insert.SetFocus
End With
Exit Sub
errhandle:
MsgBox "记录提交失败", vbOKOnly, "提示信息"
End Sub