我是用combo来调用数据库,在MSHFlexGrid上显示数据库内容的。代码如下:
Private Sub combo_Click()
    Dim mrc As ADODB.Recordset
    Dim SQL As String    
    SQL = "select * from user where ID ='" & Trim(combo.Text) & "'"
    Set mrc = ExecuteSQL(SQL)
    Set MSHFlexGrid.DataSource = mrc
    mrc.Close
End SubPrivate Sub MSHFlexGrid_Click()
  With MSHFlexGrid
     .Col = 0
     A.Text = .Text
     .Col = 1
     B.Text = .Text
  End With
End SubMSHFlexGrid能正常显示数据,但就不知道为什么我点击MSHFlexGrid里的各项数据却永远只能选择第一行的,二三等行的就不能选择了。请问有办法解决吗?我发觉要是把"select * from user where ID ='" & Trim(combo.Text) & "'"的" & Trim(combo.Text) & "换成具体的数据就能解决,但这就没意义啦,请帮帮忙!!!

解决方案 »

  1.   

    不是combo.text是combo.list(i),i是combo被选中的的行数-1
      

  2.   

    不行啊,我是通过选择combo后,MSHFlexGrid才显示内容的,现在按你这样做,不用选择combo,MSHFlexGrid就显示内容了
      

  3.   

    请帮帮忙,实在想不通啊,究竟如何编辑才能实现MSHFlexGrid的选择呢
      

  4.   

    Private Sub MSHFlexGrid_Click()
      With MSHFlexGrid
         .Col = 0
         A.Text = .Text
         .Col = 1
         B.Text = .Text
      End With
    End Sub
    你这个点击事件有错误啊,你已经把MSHFlexGrid控件的内容位置确定死了,所以你只能获得第一行的数据,你应该动态的控制.col的值,也就是MSHFlexGrid_Click事件的参数而不应该把他控制死啊,明白了吗???
      

  5.   

    '这样写.Private Sub MSHFlexGrid_Click()
        txtInput.Move MSHFlexGrid1.Left + MSHFlexGrid1.CellLeft - 20, MSHFlexGrid1.Top +    MSHFlexGrid1.CellTop - 20, MSHFlexGrid1.CellWidth, MSHFlexGrid1.CellHeight - 20
        txtInput.Text = MSHFlexGrid1.Text
    End Sub
      

  6.   

    ryq0000(ryq) ,我想问问怎样才算动态呢?要是我把"select * from user where ID ='" & Trim(combo.Text) & "'"的" & Trim(combo.Text) & "换成具体的数据,如001,我便能实现多选啊,不是太明白你的意思。
      

  7.   

    我即使不写Private Sub MSHFlexGrid_Click()这段代码,我发觉光标依然只会停留在MSHFlexGrid的第一行,不会走到其他行阿,求解!!!
      

  8.   

    你的问题我也碰到过,我也找到其产生的规律,就是一当你的查询结果集一条记录都无后,就会产生你所述的情况。
    你可以这样解决:在用set mshflexgrid.datasource之前你先判断所查询的结果集是否有记录,假如无,则不要set mshflexgrid.datasource这么做,你就:
    mshflexgrid.clear
    mshflexgrid.rows=mshflexgrid.FixedRows