送分100分:如何提高CONN.EXECUTE SQL的可靠性。
在下面的这段代码,用来先清除数据表DUBIAO中的数据,而后刷新DATAGRID1中的数据(注:DATAGRID1的DATASOURCE属性是空白的,也就是说跟DUBIAO是没有关系的。)。代码运行环境是VB6+ACCESS2003。
现在遇到的问题是:
1、如果去掉第二步中的延时,DUBIAO表中的数据在代码刚刚执行时却显示在DATAGRID1中。
2、如果不加第二步中的延时,即使是执行Conn.Execute sql2时带参数n,DUBIAO表中的数据在代码刚刚执行时也显示在DATAGRID1中。
Set DataGrid1.DataSource = Nothing
DataGrid1.Refresh
第一步,清除表中的数据
Dim n As Long
sql2 = "delete from dubiao where 1=1 "
Conn.Execute sql2, n
第二步,延时1秒
Sleep (1000)
第三步,重新加载表中的数据,按说已经清除了,DATAGRID1中不应显示数据。
Sql3 = "select * from dubiao order by 表号,户号 "
Set lsRs3 = GetRst(Sql3, msg) ' 提取一个RECORDSET给 lsRs3
DataGrid1.ClearFields
Set DataGrid1.DataSource = lsRs3
DataGrid1.ReBind
DataGrid1.Refresh
注:CONN的定义
sysConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\**.mdb; User ID=**;Password=**;Persist Security Info=True;Jet OLEDB:System database=" & App.Path & "\**.mdw;Jet OLEDB:Database Password = **"
Conn.CursorLocation = adUseClient
Conn.Open (sysConnString)
请问大家,如何才能保证CONN.EXECUTE的可靠性。
[解决办法]
CONN.EXECUTE的可靠性与你的sleep延时有关,这种设计模式好象没有别的好办法,
如果改用adodc+datagrid数据绑定,不就不存在这个问题了
[解决办法]
将这句话改成
DataGrid1.clear
DataGrid1.Refresh
试试
[解决办法]
第一步直接
Conn.Execute "delete from dubiao "
第三步
Set DataGrid1.DataSource = lsRs3
DataGrid1.ReBind
DataGrid1.Refresh
==》
Set DataGrid1.DataSource = lsRs3
lsRs3.requery
好像前面有个类似的贴子