Private Sub delete_Click() Dim run_sql As String Dim function_name_temp As String Set function_db = New ADODB.Recordset If function_grid.Book >= 1 Then If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then function_name_temp = function_grid.Columns(0).CellValue(function_grid.Book) run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'" function_db.Open run_sql, connection grid_fresh End If End If End Sub
Private Sub grid_fresh() Adodc1.RecordSource = "select function_name as 函数名,function_desc as 简介 from function_table where language_name='" + language_name + "' order by function_name" Adodc1.Refresh End Sub
程序中增加数据之后,用refresh能够正确刷新。但删除之后就不行
Private Sub grid_fresh() Adodc1.RecordSource = "select function_name as 函数名,function_desc as 简介 from function_table where language_name='" + language_name + "' order by function_name" Adodc1.Refresh 'DataGrid1.DataSource = Adodc1 DataGrid1.Refresh End Sub
Private Sub grid_fresh() Adodc1.RecordSource = "select function_name as 函数名,function_desc as 简介 from function_table where language_name='" + language_name + "' order by function_name" Adodc1.Refresh function_grid.Refresh '加了这句也没用呀,我试过了 End Sub
或者先Close再重新连接!
这里用close 会出错的,因为这里已经close了。
Private Sub delete_Click() Dim run_sql As String Dim function_name_temp As String Set function_db = New ADODB.Recordset If function_grid.Book >= 1 Then If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then function_name_temp = function_grid.Columns(0).CellValue(function_grid.Book) run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'" 'function_db.Open run_sql, connection connection.execute run_sql '***************************************************************** run_sql = "select * from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'" do function_db.Open run_sql, connection loop until function_db.eof '***************************************************************** grid_fresh End If End If End Sub
Private Sub delete_Click() Dim run_sql As String Dim function_name_temp As String If function_grid.Book >= 1 Then If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then function_name_temp = function_grid.Columns(0).CellValue (function_grid.Book) run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'" connection.execute run_sql Adodc1.Refresh set DataGrid1.DataSource = nothing '加上这句,看看数据在DataGrid1没更新还是Adodc1没更新 DataGrid1.DataSource = Adodc1 DataGrid1.Refresh End If End If End Sub
你在删除之后延迟一会执行后面的代码: 在模块中加入: Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)把代码改成: Private Sub delete_Click() Dim run_sql As String Dim function_name_temp As String Set function_db = New ADODB.Recordset If function_grid.Book >= 1 Then If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then function_name_temp = function_grid.Columns(0).CellValue(function_grid.Book) run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'" function_db.Open run_sql, connection Sleep 500 ←-------加上这一句,延迟0.5秒 grid_fresh End If End If End Sub
下面一段简单的代码刚刚调试完毕,结果完全OK!仅供参靠: Dim cnn As New ADODB.Connection Dim sql As String Dim cnn_str As String Private Sub Command1_Click() sql = "delete sell_lzk where lzk_id = " + text1.Text + "" cnn.Execute sql Adodc1.Refresh End SubPrivate Sub Form_Load() cnn_str = "Provider = SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=zy_db;Data Source=wzsswz" cnn.ConnectionString = cnn_str cnn.Open Adodc1.ConnectionString = cnn_str Adodc1.RecordSource = "select * from sell_lzk" Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 End Sub
问题是解决了,不过我总觉得不是最好的办法。 1.延时0.5秒 2.loop until .eof 这两种方法如果在记录数达到10万的话会不会有问题?
Dim run_sql As String
Dim function_name_temp As String
Set function_db = New ADODB.Recordset
If function_grid.Book >= 1 Then
If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then
function_name_temp = function_grid.Columns(0).CellValue(function_grid.Book)
run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'"
function_db.Open run_sql, connection
grid_fresh
End If
End If
End Sub
现在用ACCESS
数据库记录已经删除了。但是DATAGRID中的记录未变。
Adodc1.RecordSource = "select function_name as 函数名,function_desc as 简介 from function_table where language_name='" + language_name + "' order by function_name"
Adodc1.Refresh
End Sub
Adodc1.RecordSource = "select function_name as 函数名,function_desc as 简介 from function_table where language_name='" + language_name + "' order by function_name"
Adodc1.Refresh
'DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
End Sub
把Adodc1.Refresh
改成
Adodc1.Recordset.Requery
Adodc1.RecordSource = "select function_name as 函数名,function_desc as 简介 from function_table where language_name='" + language_name + "' order by function_name"
Adodc1.Refresh
function_grid.Refresh '加了这句也没用呀,我试过了
End Sub
或者先Close再重新连接!
Dim run_sql As String
Dim function_name_temp As String
Set function_db = New ADODB.Recordset
If function_grid.Book >= 1 Then
If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then
function_name_temp = function_grid.Columns(0).CellValue(function_grid.Book)
run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'"
'function_db.Open run_sql, connection
connection.execute run_sql
'*****************************************************************
run_sql = "select * from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'"
do
function_db.Open run_sql, connection
loop until function_db.eof
'*****************************************************************
grid_fresh
End If
End If
End Sub
Private Sub delete_Click()
Dim run_sql As String
Dim function_name_temp As String
If function_grid.Book >= 1 Then
If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then
function_name_temp = function_grid.Columns(0).CellValue (function_grid.Book)
run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'"
connection.execute run_sql
Adodc1.Refresh
set DataGrid1.DataSource = nothing '加上这句,看看数据在DataGrid1没更新还是Adodc1没更新
DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
End If
End If
End Sub
在模块中加入:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)把代码改成:
Private Sub delete_Click()
Dim run_sql As String
Dim function_name_temp As String
Set function_db = New ADODB.Recordset
If function_grid.Book >= 1 Then
If MsgBox("确定删除?", 4, "MAXSOFT") = vbYes Then
function_name_temp = function_grid.Columns(0).CellValue(function_grid.Book)
run_sql = "delete from function_table where language_name='" + language_name + "' and function_name='" + function_name_temp + "'"
function_db.Open run_sql, connection
Sleep 500 ←-------加上这一句,延迟0.5秒
grid_fresh
End If
End If
End Sub
Dim cnn As New ADODB.Connection
Dim sql As String
Dim cnn_str As String
Private Sub Command1_Click()
sql = "delete sell_lzk where lzk_id = " + text1.Text + ""
cnn.Execute sql
Adodc1.Refresh
End SubPrivate Sub Form_Load()
cnn_str = "Provider = SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=zy_db;Data Source=wzsswz"
cnn.ConnectionString = cnn_str
cnn.Open
Adodc1.ConnectionString = cnn_str
Adodc1.RecordSource = "select * from sell_lzk"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
1.延时0.5秒
2.loop until .eof
这两种方法如果在记录数达到10万的话会不会有问题?