我中vb中用MSHFlexGrid时我使用自动识别类来与数据表相联如:
在类中有
Private Sub Class_Initialize()
 
  Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=MSDASQL;dsn=wms;uid=sa;pwd=;"  Set adoPrimaryRS = New Recordset
  adoPrimaryRS.Open "select 申请序号,配件编号,现有数量,申请数量,申批数量,申请下达,申批下达,执行情况 from 配件申请表详表 Order by 申请序号", db, adOpenStatic, adLockOptimistic  DataMembers.Add "Primary"
End SubPrivate Sub Class_GetDataMember(DataMember As String, Data As Object)
  Select Case DataMember
  Case "Primary"
    Set Data = adoPrimaryRS
  End Select
End SubPrivate Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
  RaiseEvent MoveComplete
End Sub我又加了一个重新查找一定条件的数据,这样打开。
Public Sub seachrecord(str As String)    adoPrimaryRS.Cancel
  adoPrimaryRS.Close
   adoPrimaryRS.Open "select 申请序号,配件编号,现有数量,申请数量,申批数量,申请下达,申批下达,执行情况 from 配件申请表详表 where 申请序号 ='" & str & "'  Order by 申请序号", db, adOpenStatic, adLockOptimistic
 adoPrimaryRS.Requery
  DataMemberChanged "Primary"
End Sub在窗体是使用这个类,但只要使有了上面seachrecord 之后,在MSHFlexGrid 中就不能正常选择单元格,我选这一行,它确显示上一行选中。还有有时单击就没反应。有时多个单多选上(就是这里单击,而前一个选中的并没有消失)。