新建一个函数

程序代码:
Public Sub DataGridReredsh(SqlWhere As String)
On Error Resume Next
Dim sql As String, sql2 As String
If Len(SqlWhere) > 0 Then sql2 = "where " & SqlWhere '如果传入了条件,那么组合上条件动词,否则为空
sql = "select sum(客户总价) as s1 ,sum(加工商总价) as s2 from SMS " & sql2 '生成求和的SQL
If rs.State <> adStateClosed Then '如果rs没有关闭的情况下,先关掉
rs.Close
DoEvents '防止超时未关闭 rs
End If
rs.CursorLocation = adUseClient
rs.Open sql, conn, adOpenKeyset, adLockOptimistic '打开 rs
Text6.Text = rs.Fields("s1") '读值
Text7.Text = rs.Fields("s2")
rs.Close '用完关
DoEvents
sql = "select * from SMS " & sql2 '生成显示数据用的 rs
rs.CursorLocation = adUseClient
rs.Open sql, conn, adOpenKeyset, adLockOptimistic
Set DataGrid1.DataSource = rs.DataSource
DataGrid1.Refresh
End Sub
然后,代码里,凡是涉及到 刷新 datagrid1 的操作,就使用调用这个过程。
如

程序代码:
Private Sub Command4_Click()
On Error GoTo ToExit '打开错误陷阱
'------------------------------------------------
DataGridReredsh "" '刷新数据,并统计
MsgBox "数据刷新成功!", 64, "提示"
'------------------------------------------------
Exit Sub
'----------------
ToExit:
Resume Next
End Sub
再如:

程序代码:
Private Sub Form_Load()
On Error GoTo ToExit '打开错误陷阱
'------------------------------------------------
Combo1.AddItem "彩雅丰"
Combo1.AddItem "富康美"
Combo1.AddItem "杰事杰"
Combo1.AddItem "浩晨"
Combo1.Text = Combo1.List(0)
Call KKK(conn)
' If rs.State <> adStateClosed Then
' rs.Close
' End If
' rs.CursorLocation = adUseClient
' rs.Open "select * from SMS where 工单 like '%" + Text1.Text + "%' and 加工商 like '%" + Combo1.Text + "%'", conn, adOpenKeyset, adLockOptimistic
' Set DataGrid1.DataSource = rs.DataSource
DataGridReredsh (" 工单 like '%" + Text1.Text + "%' and 加工商 like '%" + Combo1.Text + "%'")
'------------------------------------------------
Exit Sub
'----------------
ToExit:
Resume Next
End Sub
简单粗暴的解决。
另外,删除那个部分没去看,可能需要事先保存SQL命令。
[此贴子已经被作者于2016-11-26 12:09编辑过]