你表单也要刷新的,就是和ADO控件绑的数据控件也要刷新

解决方案 »

  1.   

    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
      

  2.   

    我以前编的程序都行的,只是数据库不同了,以前用的SQL
    现在用ACCESS
    数据库记录已经删除了。但是DATAGRID中的记录未变。
      

  3.   

    肯定是DATAGRID控件刷新的问题,DATAGRID控件和ADO是如何绑定的?关键是要检查这一段代码,grid_fresh的过程应贴出来
      

  4.   

    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
      

  5.   

    程序中增加数据之后,用refresh能够正确刷新。但删除之后就不行
      

  6.   

    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
      

  7.   

    重新查询,用下面的代码
    把Adodc1.Refresh
    改成
    Adodc1.Recordset.Requery
      

  8.   

    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
      

  9.   


    或者先Close再重新连接!
      

  10.   

    这里用close 会出错的,因为这里已经close了。
      

  11.   

    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
      

  12.   

    因为发送SQL命令给数据库引擎后,VB就接着继续执行后面的查询了。而数据库引擎还没有来得及删除记录。
      

  13.   


    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
      

  14.   

    你在删除之后延迟一会执行后面的代码:
    在模块中加入:
    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
      

  15.   

    下面一段简单的代码刚刚调试完毕,结果完全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
      

  16.   

    问题是解决了,不过我总觉得不是最好的办法。
    1.延时0.5秒
    2.loop until .eof
    这两种方法如果在记录数达到10万的话会不会有问题?