我有几个问题需要解决,希望能得到大家的帮助
1、我用MSFlexGrid控件把数据库中的数据调出来,但是显示的时候空了4行才开始显示数据,请问是哪里的原因(代码如下)
Dim txtsql As String
Dim mrc As ADODB.Recordset
    With MSFlexGrid1
        .Cols = 7
        .FixedRows = 1
        .FixedCols = 0
        .Height = 5655
        .Width = 9015
        .BackColorFixed = &HC0E0FF
        .BackColorSel = &H8000000D 'vbWhite
        .ForeColorSel = vbWhite
        .BackColorBkg = &H8000000E
        .ForeColorFixed = &HC0&      '&HFF&
        .FormatString = "^学生姓名" & vbTab _
                        & "^学生学号" & vbTab _
                        & "^所属班级" & vbTab _
                        & "^预约课程" & vbTab _
                        & "^预约实验" & vbTab _
                        & "^预约时间" & vbTab _
                        & "^刷卡卡号" & vbTab
        Dim i As Integer
        For i = 0 To .Rows - 1
            If i = 0 Then
                .RowHeight(i) = 336
            Else
                .RowHeight(i) = 336
            End If
            
        Next
        For i = 0 To .Cols - 1
            .ColWidth(i) = 1500
        Next
    End With
  txtsql = "select * from tBookRecord where courseName='" & Form1.str1 & "' and experimentName='" & Form1.str2 & "'"
  Set mrc = ExecuteSQL(txtsql, "xxx.mdb")
  If mrc.RecordCount > 0 Then
  mrc.MoveFirst
  Do While Not mrc.EOF
          MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
          MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
          MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
          MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
          MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
          MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
          MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
          mrc.MoveNext
  Loop
  End If
  Set mrc = Nothing2、用MSFlexGrid控件把数据库中的数据调出来后,我想实现当鼠标左键点击一行中的一个字段就显示选中一行数据,点击右键弹出菜单,将一行的数据的值传到另一个窗体中,请问该如何实现

解决方案 »

  1.   

    2、用MSFlexGrid控件把数据库中的数据调出来后,我想实现当鼠标左键点击一行中的一个字段就显示选中一行数据,点击右键弹出菜单,将一行的数据的值传到另一个窗体中,请问该如何实现
       可以通过点击form窗体中的msflexgrid某行得到该行记录的ID 并存储于text1,在另一个窗体的load 事件里
      执行sql语句
      sql="select * from id="& form1.text1.text
    不就可以了吗
      

  2.   

    Do While Not mrc.EOF
              MSFlexGrid1.TextMatrix(rs.AbsolutePosition+1, 1) = mrc.Fields(1)
              MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
              mrc.MoveNext
      Loop
    改成这样
      

  3.   

    Do While Not mrc.EOF
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
              MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
              mrc.MoveNext
      Loop
    ============================================================================
    你没有从第1行开始填充,而是从.rows-1行开始的
    如果你的Msflexgrid开始的时候已经有好几行,必然会有空行
    试着在循环填充前面加一句msflexgrid1.rows=2
      

  4.   

    上面把rs改成你的记录集mrc第二个问题 把MSFlexGrid1.SelectionMode = flexSelectionByRow 即可选中一行
    至于窗体传值可以在弹出的新窗体中直接读取前一窗体的选中行记录
      

  5.   

    谢谢大家,第一个问题已经解决。第二个问题我根据 cuilei197979(风) 的提示在窗体中定义了
    Public tab1 As Integer
    调数据库数据的时候把对应行的ID取出来tab1 = mrc.Fields(0)
    但是传到另一个窗体的时候值是不变的,请教原因是什么?解决完了就可以给分了
      

  6.   

    拜托大家帮帮忙,我急需解决这个问题,请大家给点提示
    我用MSFlexGrid控件把数据库中的数据调出来,双击一行的时候弹出另一个窗体,将相应的一行数据的值传到这个窗体上,我设了Public tab1 As Integer,代码如下
      txtsql = "select * from tBookRecord where courseName='" & Form1.str1 & "' and experimentName='" & Form1.str2 & "'"
      Set mrc = ExecuteSQL(txtsql, "huatec1.mdb")
      If mrc.RecordCount > 0 Then
      mrc.MoveFirst
      Do While Not mrc.EOF
              tab1 = mrc.Fields(0)------这个取不出相应的ID号
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
              MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
              MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
              mrc.MoveNext
      Loop
      End If
      Set mrc = Nothing