如何在DataGrid中输入数据并写入到数据库中,如何读取DataGrid的数据?
   能不能先写到DataGrid,再按保存之後,存到数据库?
   如何读取DataGrid相应表格中的数据

解决方案 »

  1.   

    ///能不能先写到DataGrid,再按保存之後,存到数据库?
    这个最好做个临时表,把数据存到临时表,保存后,复制到表中
    //////////如何读取DataGrid相应表格中的数据
    DataGrid2.Columns(0).CellText
      

  2.   

    谢谢楼上的回答,读取我现在会了。
     DataGrid2.setFocus
     DataGrid.col=1
     DataGrid.Row=1
     Msgbox DataGrid.text现在我是想直接赋值给DataGrid的单元格(或者编辑单元格的内容),将修改的信息直接体现在表格中,然后自己手动可以保存到数据库(或者说更新数据库)也可以说先从数据库中读取数据到DataGrid,然后可以在DataGrid上面进行添加删除修改等等操作,在返回给数据库(update),只是每次操作都要先获取焦点。想请教有什么好的解决办法,或者说可以用其它Grid控件取代(我试过MSHFlexGrid可以添加纪录到单元格,然后更新数据库,但是编辑就不知怎么做了)
    谢谢
      

  3.   

    Option Explicit
    Dim objcn As New ADODB.Connection
    Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()'查询,修改信息
        objcn.Execute "delete  from temp "  '清空临时表
        objcn.Execute "insert into b select * from table",复制表内容到临时表
        If rs.State = 1 Then rs.Close
        rs.Open "select * from temp", objcn, adOpenKeyset, adLockOptimistic
        Set DataGrid1.DataSource = rs
    End Sub
    Private Sub Command2_Click() '保存
        objcn.Execute "delete  from table "  '清空表,
        objcn.Execute "insert into b select * from temp"   '复制
    End SubPrivate Sub Form_Load()
        objcn.ConnectionString = "driver=SQL Server;server=(LOCAL);database=Text"
        objcn.Open    
    End Sub
      

  4.   

    objcn.Execute "insert into b select * from temp"   '复制
    应该是
    objcn.Execute "insert into table select * from temp"   '复制
      

  5.   

    是用DataGrid还是MSHFlexGrid啊,能否提供详细一点的代码阿。我是说像先编辑或者说添加(更新)Datagrid/MSHFLexGrid的表格单元的内容,然后更新数据库阿
      

  6.   

    现在首先是不知道怎么编辑DataGrid表格的内容阿。如果是MSHFlexGrid的话就比较容易。
    给DataGrid的表格赋值的时候出错误阿,错误提示为DataGrid属性为Readonly,而我已经在设计中修改了它的AllowAddnew,AllowUpdate,AllowDelete为true.同时我又不能设置DataGrid.readOnly=False.
      

  7.   

    就是在DataGrid他们说要借助一个文本框来输入,这个我到现在也没搞明白文本框怎么移动
      

  8.   

    这样就能直接在datagrid上改数据了,并且几乎同步更新到数据库,不过可能修改主键内容时,可能会出现点问题
      

  9.   

    况且你用过的话就是最好了。我真的是无法赋值给DataGrid啊。
    DataGrid2.col = 1
    DataGrid2.Row = 1
    DataGrid2.Text="AA"就错误了,只能读阿,Msgbox DataGrid2.Text
      

  10.   

    你这个也是错误的语法DataGrid2.Columns(0).CellText正确的是DataGrid2.Columns(0).Text
      

  11.   

    我是说在这样设定后,不要用你上面的代码,不要任何代码,直接在datagrid控件上修改
      

  12.   

    就是不能直接改阿,如果可以直接改的话都我那DataGrid2.Text="AA"就不会错误了阿,就因为它是只读(ReadOnly)所以你光标放到它的单元格也是改不了的。帮下忙啊,着急啊
      

  13.   

    AllowAddnew,AllowUpdate,AllowDelete都改为true了阿,还有什么要改的吗?我在程序中再定义一次试试
      

  14.   

    The column is readonly 啊。就那几个代码阿。
    我贴给你看
    Dim rs As New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "Select * from tblRcvg", CurrentProject.Connection, 1, 1
    set DataGrid2.DataSource=rs
    DataGrid2.AllowAddNew = True
    DataGrid2.AllowUpdate = True
    DataGrid2.SetFocus
    DataGrid2.Row = 1
    MsgBox DataGrid2.Columns(1).Text
    Debug.Print DataGrid2.Text
    DataGrid2.Columns(1).Text = "007"
      

  15.   

    你能不能把你的mdb或者VB工程文件上传给我参考一下啊
    上传到http://access911.net/csdn/
      

  16.   

    Option Explicit
    Dim objcn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Private Sub Form_Load()
    objcn.ConnectionString = "driver=SQL Server;server=(LOCAL);database=text"
        objcn.Open
        rs.Open "select * from  b ", objcn, adOpenKeyset, adLockOptimistic
    Set DataGrid2.DataSource = rs
    DataGrid2.AllowAddNew = True
    DataGrid2.AllowUpdate = True
    'DataGrid2.SetFocus
    DataGrid2.Row = 1
    MsgBox DataGrid2.Columns(1).Text
    Debug.Print DataGrid2.Text
    DataGrid2.Columns(1).Text = "007"End Sub
    我按你的程序测试了,没问题,
    ////////////////////////
    数据修改后自动更新到数据库
    不过加上这个会更好
    Private Sub DataGrid2_AfterColEdit(ByVal ColIndex As Integer)
    rs.Update
    End Sub我用的是VB6.0 和你用的有什么区别吗
      

  17.   

    我的代码,窗体就2个控件Update按钮和DataGrid电子表,属性都改为允许修改了。帮我看看。我回去试试在vb6.0下怎样。我现在是在Access环境下
     Option Compare Database
    Dim rs As New ADODB.Recordset
    Dim SQL As StringPrivate Sub cmdUpdate_Click()
    DataGrid2.SetFocus
    DataGrid2.Col = 1
    DataGrid2.Row = 1
    'MsgBox DataGrid2.Text
    DataGrid2.Text = "CC"End SubPrivate Sub Form_Load()
    rs.CursorLocation = adUseClient
    rs.Open "Select * from tblDataGrid", CurrentProject.Connection, 1, 1
    Set DataGrid2.DataSource = rs
    End Sub
      

  18.   

    不知道是不是vba跟vb的不同之处,你那有office吗?试试在Access下运行看如何
      

  19.   

    我也试了在vb6.0可以,只是在程序中修改属性就可以了.但是Access中就不知道为什么会这样啊
      

  20.   

    直接把DataGrid与DATA控件绑定,先自己设计一个数据库和其中的表,然后用DataGrid与DATA控件把数据表中的内容显示出来,就可以直接编辑、增加、修改数据了。编辑后的数据直接保存到数据库的。很简单的。
      

  21.   

    Data控件,楼上的你说什么啊?很少用到Data控件来连接数据库的。你说是在vb6.0中吗?
      

  22.   

    Recordset X--> DataGrid楼主概念上没有理解DataGrid控件,当DataGrid控件和Recordset绑定后,DataGrid控件实际上只是Recordset的外表而已,datagrid的用途主要用在显示recordset的内容而不是更新,绑定时虽然你可以在DataGrid中填入数据来更新Recordset,但无法在代码中更新Recordset。
      

  23.   

    楼上的这句话你就错了,可以在代码中更新Recordset
    rs.update
    Set dataGrid2.datasource=rs