从数据库里面查出数据,datagrid绑定了数据。我在程序里面点击修改
1,请问当我在datagrid里面按下向下键或者回车键时光标自动向下一行,如果是最后一行就自动生成一空白行
2,当我向空白行输入内容,然后按保存键,请问是怎么样把刚刚输入的内容写进数据库里面呢?是不是用Recordset.Update然后Adodc1.Refresh ?

解决方案 »

  1.   

    直接向datagrid控件里写数据,它自动保存的。
    不用再取调用什么Recordset.Update然后Adodc1.Refresh。
    你可以直接在里面写了数据后再去数据库里查看。
      

  2.   

    建议使用 FlexGrid.. 然后画几个 Text.. 使 Text 与 FlexGrid 关联,方便多了
      

  3.   

    改用控件MSHFlexGrid或MSFlexGrid,不用绑定ado,手工填充,手工保存即可
      

  4.   

    1、使用ADODB代码处理数据;
    2、当控件与Recordset绑定时用只读方式打开表;
    3、每次手工UPDATE或者INSERT之前添加数据范围、类型、逻辑判断的代码。
      

  5.   

    那么datagrid真的不能做到那些功能吗?
      

  6.   

    应该能做啊,
    不过需要对好多DataGrid的事件编程以控制它的行为,
    而且利用DataGrid更新数据容易出现误操作。
      

  7.   

    用一个TextBox,编辑好了再确定.
      

  8.   


    '例子代码,不要直接拷贝
    Private Sub CmdAddData_Click()
      '检查数据格式
      Dim strID AS String
      Dim strName AS String  strID = Trim(txtID.Text)
      strName = Trim(txtName.Text)  If strID = "" OR strName = "" Then
        Call Msgbox("[错误提示]")
        Exit Sub
      End If  '打开数据连接
      Dim cnn AS ADODB.Connection
      SET cnn = New ADODB.Connection
      cnn.Open "[ConnectionString]"  cnn.Execute "UPDATE [TableName] SET [Name] = '" & strName & "' WHERE [ID] = " & strID  cnn.Close
      Set cnn = NothingEnd Sub
      

  9.   

    Adodc1.Recordset.AddNewAdodc1.Recordset.Fields(0) = "1"
    Adodc1.Recordset.Fields(1) = "df"
    ……Adodc1.Recordset.UpdateAdodc1.Refresh
      

  10.   


    Dim a As Integer, b As Integer
    Private Sub DataGrid1_Click()
        With DataGrid1
                    
            Text2.Visible = True
            If .Col < 0 Then Exit Sub
            a = .Row: b = .Col
            
            Text2.Move .Columns(.Col).Left + .Left, .RowTop(.Row) + .Top, .Columns(.Col).Width, .RowHeight
            Text2.BackColor = &HC0FFC0
            Text2 = ""
            Debug.Print .Columns(.Col).CellText(.RowBook(.Row))
            If .Columns(.Col).CellText(.RowBook(.Row)) = "" Then
               Text2.Text = ""
            Else
               Text2.Text = .Columns(.Col).CellText(.RowBook(.Row))
            End If
            Text2.SelLength = Len(Text2.Text)
            Text2.SetFocus
        End With
    End SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)
        If KeyAscii <> 13 Then Exit Sub
        
        With DataGrid1
            .SelText = Text2.Text
            .Columns(b).CellText(.RowBook(a)) = Text2.Text
        End With
        Text2.Visible = False
    End Sub自己改改吧,我也没现成的。只是个思路