请问,我想对窗体上MsFlexGrid显示的记录集的任意一条数据进行修改,请问是否可以设置其网格为可编辑的(通常好象不能编辑)从而直接在网格中修改,然后再通过程序把修改的后的记录保存到数据库中?或者有没有其他比较好的解决办法?

解决方案 »

  1.   

    你的思路,以前我们公司就用过,不过效力不高。
    1,MsFlexGrid + TextBox 变网格成为可编辑
    2,在单元格移动时候(失去焦点触发事件),update数据表。//另一种方法,直接和datagrid控件绑定。例子:可以用数据向导,让vb自动生成一个。
      

  2.   

    为什么不直接使用DataGrid控件呢?
    可在控件上进行修改,更新等操作
      

  3.   

    datagrid 控制好象比较麻烦啊
      

  4.   

    去下载一个true dbgrid 7.0,很好用,我就是用这个的很方便
      

  5.   

    //datagrid 不麻烦啊,连代码都不用写
    步骤:
    1,建立access
    2, 转换为旧版本
    3,外接程序--外接程序管理器,加载<数据窗体向导>
    4,…下一步…(记得要选择网格的)…下一步…
    5,生成以后,运行成功。打开代码修改,比如把数据源连接改掉。
    6,打开香槟,大家喝一杯
      

  6.   

    设计思想:
    在窗体中加入一个text控件作为输入的容器。实现代码如下(我写的,可能有bug)
    代码都很简单,应该能看懂的。自己修改一下吧Dim c As Integer
    Dim r As Integer
    Private Sub Form_Load()
    With MSFlexGrid1
     .Rows = 3
     .Cols = 4
     .Width = 1200 * 4 + 100
     .Height = 300 * 3
     For i = 0 To 2
      .Row = i
      For j = 0 To 3
        .Col = j
        .ColWidth(j) = 1200
        .ColAlignment(j) = j
        .Text = "item" & i & "*" & j
      Next j
    Next i
    End With
    Text1.Visible = False
    End SubPrivate Sub MSFlexGrid1_DblClick()With MSFlexGrid1
     c = .Col
     r = .Row
     Text1.Left = .Left + .ColPos(c)
     Text1.Top = .Top + .RowPos(r)
     Text1.Width = .ColWidth(c)
     Text1.Height = .RowHeight(r)
     Text1.Text = .Text
     Text1.Visible = True
     Text1.SetFocus
     Text1.SelStart = 0
     Text1.SelLength = Len(Text1.Text)
    End With
    End Sub
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyEscape Then
     Text1.Visible = fasle
     Exit Sub
    ElseIf KeyAscii = vbKeyReturn Then
     MSFlexGrid1.Text = Text1.Text
     Text1.Visible = False
    End If
    End SubPrivate Sub Text1_LostFocus()
    Text1.Visible = False
    With MSFlexGrid1
     .Col = c
     .Row = r
    MSFlexGrid1.Text = Text1.Text
    End With
    End Sub