最终要达到的目的是:有一个Access表,其中有一个布尔型的字段,我想用grid控件将表中的某些数据显示出来.其中要求布尔值为0的字段所在的条目背景色为蓝色,其余的条目的背景色默认.(有其他能明显的显示两者差别的方法亦可)
  而且还要实现这样的功能,双击某个条目时,可以使其布尔值改变,颜色也随之变化.数据库及时更新.
  我在考虑用MSHFlexGrid控件还是用dataGrid控件,但我不知这两个控件的方法.听说MSHFlexGrid控件不支持数据更新而dataGrid控件不支持部分条目变色.郁闷了~~~~~~~~
  请给出解决方案.

解决方案 »

  1.   

    mshflexgrid控件是只读绑定,在该控件中修改的数据不会自动更新到数据库中
    但建议使用mshflexgrid控件,虽然代码多了几行,但这样控制灵活
      

  2.   

    用mshflexgrid,編輯時候需要自己控制,但可以實現你背景色隨布爾值進行變化
      

  3.   

    MSHFlexGrid实现数据更新可以自己写,它并不是不可以编辑的,只是相对来说比dataGrid较复杂点,其实也只是相对
      

  4.   

    MSHFlexGrid实现数据更新可以自己写
      

  5.   

    我刚刚试过了用MSHFlexGrid实现背景色随布尔值变化
    现在关键问题是
    Private Sub MSHFlexGrid1_Click()End Sub
    这中间的代码怎么写可以实现数据的更新
    只要让布尔值改变就可以了
      

  6.   

    比如像这个问题就看你是怎样灵活运用啦!我以前也遇到这样的问题,DataGrid能自动更新到数据库,只要能够正确连接上数据源,就能够像在数据库中操作一样,处理数据非常方便。但是再完美的东西也会有缺陷呀!就像你说的一样,可以更变表格中行的背景色,如果经常用一些企业上的软件的话,这点肯定是必毕的,使使用用户看上去非常漂亮的,如果你有这样的水平的话,在VB中你可以自已做个这样的控件,以前我是用VB,现在在学DELPHI,怎么说啦!vb6.0其实并不是面向对象的,而到VB7.0也就是目前比较流行的VB.NET,这是正真意义上的面向对象,我现在在的一家软件公司他们要用的一些控件都是自已编的,其中也有你说的那些功能,因为编程工具的类库中都没有程序员想要的一些东东,所以一定要学会自已开发组件。这就可以体现面向对象的优势和重要,其实楼上说的也对的,对于数据的更新自已用代码实现。
      

  7.   

    Connection.Execute "UPDATE TABLE SET A = " _
        & " '" & MSHFLEXGRID1.TextMatrix(MSHFLEXGRID1.ROW,MSHFLEXGRID1.COL) & "'" _
        & " WHERE B = 'ID'"
      

  8.   

    SET A = " _
        & " '" & MSHFLEXGRID1.TextMatrix(MSHFLEXGRID1.ROW,MSHFLEXGRID1.COL) & "'" _
        & " WHERE B = 'ID'"A  B  是什么意思?
      

  9.   

    用MSHFlexGrid显示了一个表,我通过双击鼠标的事件获得了鼠标所在的行的值,为一个整数,我想利用这个值把该行的一个布尔型数据更新.请指点.最好给出代码
    附:我是用MSHFlexGrid通过adodc和access数据库相连的.
      

  10.   

    MSHFlexGrid 比較適合附:我是用MSHFlexGrid通过adodc和access数据库相连的.
    ///
    用adodc太死,你可以自己寫連接,這樣你會輕鬆很多
      

  11.   

    最后的解决方法是两个控件一起用,分别实现自己的功能,下附代码.
    Option ExplicitDim lngOldRow As LongPrivate Sub Form_Load()Dim i As Long
    Dim j As Long
    Dim k As Long
    MSHFlexGrid1.Rows = 20: MSHFlexGrid1.Cols = 6
    'For i = 1 To MSHFlexGrid1.Rows - 1
     '       MSHFlexGrid1.TextMatrix(i, 1) = "aaaa" & i
            
     '   Next
    MSHFlexGrid1.SelectionMode = flexSelectionByRow
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\check.mdb;Persist Security Info=False"
    Adodc1.CommandType = adCmdText
    Adodc1.RecordSource = "select 金额,已达标志,摘要,单据号,借贷,日期 from ch_bank "
    Adodc1.Refresh
    Set MSHFlexGrid1.DataSource = Adodc1
        MSHFlexGrid1.Refresh
        
        
        Set DataGrid1.DataSource = Adodc1
          DataGrid1.Refresh    
       ' MSHFlexGrid1.CellBackColor = &O222222
        
        
        'Dim i As Integer
        'For i = 1 To MSHFlexGrid1.Rows - 1
        '    MSHFlexGrid1.Col = 2
        '    MSHFlexGrid1.Row = i
         '   If CCur(MSHFlexGrid1.Text) Mod (Text1.Text) Then
         '       MSHFlexGrid1.CellForeColor = vbRed
       '    End If
      ' Next i
      
      
       '''''   For i = 1 To MSHFlexGrid1.Rows - 1
            'MSHFlexGrid1.Col = 6
    '''''        MSHFlexGrid1.Row = i
         '   If  CCur(MSHFlexGrid1.Text) Mod (Text1.Text) Then
          'If MSHFlexGrid1.Recordset("已达标志") Mod (True) Then
         
             
          '  For j = 1 To MSHFlexGrid1.Cols - 1
          '                MSHFlexGrid1.Col = j
          '                MSHFlexGrid1.CellBackColor = vbRed
          '
          '       Next j
          
    '''''       MSHFlexGrid1.CellBackColor = vbRed
          
     '''''      End If
     '''''  Next i
      
      
      
      
      For i = 1 To MSHFlexGrid1.Rows - 1
      
        MSHFlexGrid1.Row = i   
        
         'MsgBox i
           If Adodc1.Recordset("已达标志") = True Then
             For j = 1 To MSHFlexGrid1.Cols - 1
              MSHFlexGrid1.Col = j
                   MSHFlexGrid1.CellBackColor = vbRed
                  
                  
             Next
         End If
          Adodc1.Recordset.MoveNext
     
      Next
      
        
    End Sub'Private Sub MSHFlexGrid1_Click()'MSHFlexGrid1.Redraw = False
    'Dim i As Long, lngNewRow As Long
        
      '
      '  lngNewRow = MSHFlexGrid1.Row
     '   MSHFlexGrid1.Row = lngOldRow
     '   For i = 1 To MSHFlexGrid1.Cols - 1
     '       MSHFlexGrid1.Col = i
     '       MSHFlexGrid1.CellBackColor = vbWhite
     '   Next
        
     '   MSHFlexGrid1.Row = lngNewRow
      '  For i = 1 To MSHFlexGrid1.Cols - 1
       '     MSHFlexGrid1.Col = i
        '    MSHFlexGrid1.CellBackColor = vbBlue
         '
            
      '  Next
       ' MSHFlexGrid1.Redraw = True
        '
       ' lngOldRow = lngNewRow'End Sub
    ''''''%%%%%%%%$$$$$$$$^^^^&&***************((((((((((((((((((((&&&&&&&&&&&%%%%%%%%%$$$$##########@@@@@@@@
    '''''''''''''###############@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%^^^^^^^^^^^^^^^^&&&&&&&&&&&****
    Private Sub MSHFlexGrid1_DblClick()
    Dim myrowmyrow = MSHFlexGrid1.MouseRow
       If myrow = 0 Then
       MsgBox "过分了!点击标题栏有什么用?去点击框中的条目吧."
       Exit Sub
       End If
        Adodc1.Recordset.MoveFirst
        
       'MsgBox "@@@You right clicked row " & Myrow
       Adodc1.Recordset.Move myrow - 1
       'MsgBox Adodc1.Recordset("已达标志")
       
       If Adodc1.Recordset("已达标志") = False Then
       Adodc1.Recordset("已达标志") = True
       ElseIf Adodc1.Recordset("已达标志") = True Then
       Adodc1.Recordset("已达标志") = False
       
           End If
       'End If
       MSHFlexGrid1.Refresh   
       Unload Me
      test.Show  
    End Sub'Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    '单击鼠标右键提示选中的行
    'Dim Myrow'If Button = 2 Then '  Myrow = MSHFlexGrid1.MouseRow
      ' MsgBox "You right clicked row #" & Myrow'End If'End Sub