如何通过选择combo控件中的某一内容,动态刷新datagrid中与这一内容相匹配的数据?求救各位大虾,快半个月没有进展了!!!急啊
如何通过选择combo控件中显示的字段,在datagrid中显示与选中字段相匹配的所有数据
现在我的combo控件均能正常显示,只是不能按上述再datagrid中进行更新显示,我的代码不能完成,如下
combo控件名为comdata
Dim sel As jljlmk  'jljlmk是类
Dim se As ADODB.Recordset
Private Sub Form_Load()
Set cn = New ADODB.Connection
Set cm = New ADODB.Recordset
'///调用类模块,查询数据库工资号字段等于登陆窗体工资号文本
'//连接列表框comdata与数据库
       Dim cd As String
       Set sel = New jljlmk
       cd = "select * from gz_data where LTrim(工资号)='" & frmLogin.txtUserName & "'"
       Set se = sel.jlj(cd)
       se.MoveFirst
       While Not se.EOF
       comdata.AddItem se!月份
         se.MoveNext
       Wend
       comdata.ListIndex = 0
'//建立表连接,对数据库表数据进行查询
       cn.ConnectionString = " Provider = Microsoft.jet.oledb.4.0;" & _
        "data source=" & App.Path & "\gz_data.mdb;" & _
           
        cn.Open
        cm.CursorLocation = adUseClient
       '//查询gz_data表中(LTrim(工资号)是去除工资号前的空格)工资号=登陆界面中工资号文本框的输入值
       '//和查询窗体中月份=表中(CStr(月份)是将表中月份的日期型转换为字符型)月份的值
 
       cm.Open "select * from gz_data where LTrim(工资号)='" & frmLogin.txtUserName & "' and CStr(月份)='" & selectForm.comdata.Text & "' ", cn, adOpenDynamic, adLockOptimistic
       Set DataGrid1.DataSource = cm

解决方案 »

  1.   

    cstr是将数值转换为字符串,在此不能这样用
    改为 月份="'#"& selectForm.comdata.Text & "#' ", 
    日期型数据查找要用#yyyy-mm-dd#格式或者其它夹在##间格式
      

  2.   

    Private Sub combo_Click()
    If se.State Then se.Close
    sql = "要查询显示的数据源"
    se.Open sql, conn, adOpenKeyset, adLockPessimistic
    End Sub
      

  3.   

    用combo.text的内容作为where条件
    set datagrid的数据源为se就可以了
      

  4.   

    1.不知道你这些代码是写在COMBO的什么事件时了,可以放在CLICK事件里.
    2.连接数据库的代码一个工程连接一次就行了,没必要每查询一次都连接.
    3.你连接的数据库是什么,如果是ACCESS,日期要用#号括起来,而不应该用单引号.
    4.还有就是你查询完之后,要清空内存,以免内存泄漏,要 SET XX = NOTHING
      

  5.   

    Private Sub Combo1_Change()
        rs.open "select * from tb where 列='" & Combo1.Text & "'", cn, 3, 3
            Set MSHFlexGrid1.DataSource = rs
        rs.Close
    End Sub
      

  6.   

    Private Sub Combo1_Change()
        rs.open "select * from tb where 列='" & Combo1.Text & "'", cn, 3, 3
            Set MSHFlexGrid1.DataSource = rs
        rs.Close
    End Sub
      

  7.   

    关键是编写combo的change事件,重新设定datagrid的数据源
      

  8.   

    如果combobox的style选2,change是没用的,要改为click
      

  9.   

    看看我自己做的,给你一个参考
    窗体代码
    Option Explicit
    Dim strSql As String
    Private Sub Combo1_Click()
        If Rs.State = adStateOpen Then Rs.Close
        strSql = "select * from " & Combo1.Text
        con.CursorLocation = adUseClient
        Rs.Open strSql, con, adOpenDynamic, adLockOptimistic
        Set DataGrid1.DataSource = Rs
    End SubPrivate Sub Form_Load()
        Combo1.AddItem "Department"
        Combo1.AddItem "Employee"
        Combo1.AddItem "Operator"
        Combo1.AddItem "AccountType"
        Combo1.AddItem "Customer"
        Combo1.AddItem "TransactionsOfAccount"
        Combo1.AddItem "TransactionOfCheckBook"
        Combo1.AddItem "TransactionOfATMCard"    Call connectionSQLServer//为模块代码中的过程
    End Sub附模块代码
    Public strServerName As String
    Public strOperator As String
    Public LoginSucceeded As Boolean
    Public con As Connection
    Public Rs As Recordset
    Public com As CommandPublic Sub getSQLServerName()
        If GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName") = "" Then
            strServerName = InputBox("请输入数据库服务器名称")
            SaveSetting "OnlineBankingDB", "SQL Server Name", "ServerName", strServerName
        Else
            strServerName = GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName")
        End If
    End SubPublic Sub connectionSQLServer()
        Set con = New Connection
        Set Rs = New Recordset
        Set com = New Command
        
        On Error GoTo errorhandler
        Call getSQLServerName
        
        Set con = New Connection
        With con
            .Provider = "sqloledb"
            .ConnectionString = "user id=sa;" & _
            "password=810614;" & _
            "data source=" & strServerName & _
            ";initial catalog=OnlineBankingDB"
            .Open
        End With
        
        com.ActiveConnection = con
        Exit Sub
    errorhandler:
       MsgBox Err.Number & Err.Source & Err.Description
    End Sub