最近再做一个程序,用datagrid绑定数据库内容,并且通过三个command控件实现:
1.对直接在datagrid控件上修改的数据通过询问确认是否修改;
2.当前选定行进行删除,删除前询问;
3.在当前行之前插入一新行。
现在我通过ADO将datagrid与数据库绑定,程序如下:
Private Sub lstBook_DblClick()
  Dim rs As New ADODB.Recordset
  dbname = App.Path & "\Temp.mdb"
  strconnect = "Persist Security Info=False;Data Source=" & dbname & ";Provider=Microsoft.Jet.OLEDB.4.0"
  SQL = "SELECT * From " & lstBook.List(lstBook.ListIndex)
  rs.CursorLocation = adUseClient
  rs.Open SQL, strconnect, adOpenKeyset, adLockOptimistic
  Adodc1.Caption = lstBook.List(lstBook.ListIndex)
  Set Adodc1.Recordset = rs
  Set DataGrid1.DataSource = Adodc1 rs.Update
End Sub
数据显示没有问题,可是每次修改完datagrid里的数据,再重新打开,数据都没有修改成功,请高人指点一下问题在哪?删除和添加行代码应该怎么写?小弟是新人,请各位多多指点!!

解决方案 »

  1.   

    你的SQL语句不是查询嘛,怎么又想实现删除呢?SQL换成:delete * from 表名 where 字段名 = 條件
    可以通过datagrid1.columns(0)  表示当前选中行的记录,删除命令为:cn.Execute sql
    我也是初学者.不过你可以试一下看行不行
      

  2.   

    麻烦看清楚了,我给的这个程序是用来绑定datagrid和数据库,用控件显示数据,要不然不看数据我怎么知道哪个有用,哪个没用呢?
      

  3.   

    下面是部分代码,请参考 
    Private Sub Form_Load() 
        '连接字符串 
        Adodc1.ConnectionString = "driver={sql server};server=" + Trim(server) + ";uid=" + Trim(user) + ";pwd=" + Trim(password) + ";database=erp1" 
        '查询users表中全部信息 
        Adodc1.RecordSource = "select * from businessman" 
        '用datagrid显示查询信息 
        Set DataGrid1.DataSource = Adodc1 
        '刷新窗口信息 
        refresh_businessman 
    End Sub Private Sub lbladd_Click() 
        '标明操作为添加而非修改 
        Frmbusinessmanedit.modify = False 
        Frmbusinessmanedit.Show 1 
        '刷新供应商管理界面 
        refresh_businessman 
    End Sub 
    Private Sub lblmodify_Click() 
        Frmbusinessmanedit.modify = True 
        Frmbusinessmanedit.oribusinessmanid = Adodc1.Recordset.Fields(0) 
        '把待修改信息添加到编辑窗口 
        Frmbusinessmanedit.txtbusinessmanid = Trim(Adodc1.Recordset.Fields(0)) 
        Frmbusinessmanedit.Txtbusinessmanname = Trim(Adodc1.Recordset.Fields(1)) 
        Frmbusinessmanedit.Txtcountry = Trim(Adodc1.Recordset.Fields(2)) 
        Frmbusinessmanedit.Txtprovince = Trim(Adodc1.Recordset.Fields(3)) 
        Frmbusinessmanedit.Txtcity = Trim(Adodc1.Recordset.Fields(4)) 
        Frmbusinessmanedit.Txtaddress = Trim(Adodc1.Recordset.Fields(5)) 
        Frmbusinessmanedit.Txtlinkman = Trim(Adodc1.Recordset.Fields(6)) 
        Frmbusinessmanedit.Txttelephone = Trim(Adodc1.Recordset.Fields(7)) 
        Frmbusinessmanedit.Txtfax = Trim(Adodc1.Recordset.Fields(8)) 
        Frmbusinessmanedit.txtbusinessmanid.Enabled = False 
        Frmbusinessmanedit.Caption = "修改供应商信息" 
        Frmbusinessmanedit.Show 1 
        refresh_businessman 
    End Sub 
    Private Sub lbldelete_Click() 
        Dim tempbusinessmanid As String 
        '保存待删除记录的ID 
        tempbusinessmanid = Adodc1.Recordset.Fields(0) 
        '弹出删除确认对话框 
        If MsgBox("是否删除“" + Adodc1.Recordset.Fields(1) + "”?", vbYesNo, "确认") = vbYes Then 
        mybusinessman.delete (tempbusinessmanid) 
        MsgBox "删除成功" 
        End If 
        refresh_businessman 
    End Sub 
    Private Sub lblback_Click() 
    Unload Me 
    End Sub 
    Public Sub refresh_businessman() 
        Adodc1.Refresh 
        If Adodc1.Recordset.RecordCount = 0 Then 
            lblmodify.Enabled = False 
            lbldelete.Enabled = False 
        Else 
            lblmodify.Enabled = True 
            lbldelete.Enabled = True 
        End If 
    End Sub 
      

  4.   

    关键字与sql语句
    SQL = "SELECT * From " & lstBook.List(lstBook.ListIndex) 
    你检查一下你要修改的数据是否属于该表。
    上面的sql语句有错,没有指定表吧 【from 表】,表在哪里? 
      

  5.   

    表就是后面的lstbook.list(lstbook.listIndex)啊,我调用数据库将里面的表格名在List控件里显示,然后选择相应的表格显示查看,这个程序都能运行,定没有问题
      

  6.   

    那你三个Command 控件对应的程序呢?