我在Form_Load里写了一些如下代码:
//在数据库里加入一条记录
sSql = "INSERT INTO TBL_Config (type_no,provider,kind,description) VALUES ('" & "1_1" & "','" & "华硕" & "',' ',' ')"
Set rsCmp = New ADODB.Recordset
rsCmp.Open sSql, gConnection, adOpenDynamic, adLockOptimistic
//在datagrid的属性栏里已经绑定adodc
AdodcProvider.ConnectionString = gConnect
AdodcProvider.RecordSource = "select * from TBL_Config where provider='" & "华硕" & "' and type_no='" & "1_1" & "'"
AdodcProvider.Refresh结果那条记录确实插入数据库中,但在datagrid里就是显示不出来,如果再执行一次
以上代码,则只显示上次那条记录,而这次新插入的记录也同样在数据库但在datagrid也不显示。好像每次datagrid的刷新比数据库的刷新慢一拍。
请教各位高手,怎样解决这个问题,希望给出具体的实现代码。后来曾经尝试加入一下以下两行代码也不行。
DGridProvider.ReBind
DGridProvider.Refresh

解决方案 »

  1.   

    因为 SQL 执行是非同步的。查询比插入记录更快。dim withevents cn as ADODB.connectionprivate sub form_load()
    set cn = new ADODB.connectionsSql = "INSERT INTO TBL_Config (type_no,provider,kind,description) VALUES ('" & "1_1" & "','" & "华硕" & "',' ',' ')"cn.execute sSql
    end subPrivate Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
        If AdodcProvider.Recordset.State = adStateOpen Then
            AdodcProvider.Recordset.Requery
        Else
            AdodcProvider.RecordSource = "select * from TBL_Config where provider='" & "华硕" & "' and type_no='" & "1_1" & "'"
        End If
    End Sub