我单击按钮,用command 的 Execute 方法执行查询,查询结果给MSFlexGrid显示。现在是,我第一次设置好查询条件,单击按钮,查询结果是正确的。但是我改变了查询条件,再按按钮,返回的还是第一次的查询结果!怎么回事?下面是代码,请帮忙分析!问题二:我希望每次查询,MSFlexGrid都能清空,新的查询结果可以从第一行重新往下填充。如何实现?====================
Dim i As Integer
Dim CX_objRs As New ADODB.RecordsetMSFlexGrid1.ClearstrSQL = "SELECT 日期,姓名,消费类型,金额 FROM 支出表 WHERE  ? <= 日期 AND 日期 <= ? "
strSQL = strSQL & "AND 消费类型 LIKE ?"
strSQL = strSQL & "AND 姓名 LIKE ?"objCmd.CommandText = strSQL
objCmd.CommandType = adCmdTextDim Parm As ADODB.Parameter
Set Parm = objCmd.CreateParameter("开始时间", adVarChar, adParamInput, 10)
objCmd.Parameters.Append Parm
Set Parm = objCmd.CreateParameter("结束时间", adVarChar, adParamInput, 10)
objCmd.Parameters.Append Parm
Set Parm = objCmd.CreateParameter("消费类型", adVarChar, adParamInput, 10)
objCmd.Parameters.Append Parm
Set Parm = objCmd.CreateParameter("姓名", adVarChar, adParamInput, 10)
objCmd.Parameters.Append ParmobjCmd("开始时间") = DTPicker2.Value
objCmd("结束时间") = DTPicker3.Value
objCmd("消费类型") = Com_CXFL.Text
objCmd("姓名") = Com_CXXM.TextSet CX_objRs = objCmd.Execute()MSFlexGrid1.Cols = CX_objRs.Fields.CountFor i = 0 To CX_objRs.Fields.Count - 1
        MSFlexGrid1.TextMatrix(0, i) = CX_objRs.Fields(i).Name
Next iWhile Not CX_objRs.EOF
      MSFlexGrid1.AddItem (CX_objRs!日期 & vbTab & CX_objRs!姓名 & vbTab & CX_objRs!消费类型 & vbTab & CX_objRs!金额)
      CX_objRs.MoveNext
Wend

解决方案 »

  1.   

    前面不是说了?要变成你具体的东西吗,不知道你怎么看上Command了,只要用记录集Recordset不就可以了,为什么中间夹一个command呢.
        Dim i As Integer
        Dim CX_objRs As New ADODB.Recordset
        Dim objCmd As New ADODB.Command
                
        strSQL = "SELECT 日期,姓名,消费类型,金额 FROM 支出表 where 开始时间='" & DTPicker2.Value & "' "
        strSQL = strSQL & "AND 结束时间 = '" & DTPicker3.Value & "' "
        strSQL = strSQL & "AND 消费类型 LIKE '" & Com_CXFL.Text & "' "
        strSQL = strSQL & "AND 姓名 LIKE '" & Com_CXXM.Text & "'"    objCmd.ActiveConnection = Cn '这里的cn是数据库连接,要替换成你自己的
        objCmd.CommandText = strSQL
        objCmd.CommandType = adCmdText
        
        Dim Parm As ADODB.Parameter
        Set Parm = objCmd.CreateParameter("开始时间", adVarChar, adParamInput, 10)
        objCmd.Parameters.Append Parm
        Set Parm = objCmd.CreateParameter("结束时间", adVarChar, adParamInput, 10)
        objCmd.Parameters.Append Parm
        Set Parm = objCmd.CreateParameter("消费类型", adVarChar, adParamInput, 10)
        objCmd.Parameters.Append Parm
        Set Parm = objCmd.CreateParameter("姓名", adVarChar, adParamInput, 10)
        objCmd.Parameters.Append Parm
        
        Set CX_objRs = objCmd.Execute()
        
        MSFlexGrid1.Clear
        MSFlexGrid1.Cols = CX_objRs.Fields.Count
        MSFlexGrid1.Rows = 1
        For i = 0 To CX_objRs.Fields.Count - 1
            MSFlexGrid1.TextMatrix(0, i) = CX_objRs.Fields(i).Name
        Next i
        
        While Not CX_objRs.EOF
            MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
            MSFlexGrid1.AddItem (CX_objRs!日期 & vbTab & CX_objRs!姓名 & vbTab & CX_objRs!消费类型 & vbTab & CX_objRs!金额)
            CX_objRs.MoveNext
        Wend
      

  2.   

    只要recordset,顺手写了一个,自己琢磨一下吧
        Dim i As Integer
        Dim Cn As New ADODB.Connection
        
        Cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" _
                            & "Persist Security Info=False;" _
                            & "Initial Catalog= test;Data Source= .;"
        If Cn.State <> ADODB.ObjectStateEnum.adStateClosed Then Cn.Close
        Cn.Open
        
        Dim CX_objRs As ADODB.Recordset
        Dim strSQL   As String
        
        strSQL = "SELECT 日期,姓名,消费类型,金额 FROM 支出表 where 开始时间='" & DTPicker2.Value & "' "
        strSQL = strSQL & "AND 结束时间 = '" & DTPicker3.Value & "' "
        strSQL = strSQL & "AND 消费类型 LIKE '" & Com_CXFL.Text & "' "
        strSQL = strSQL & "AND 姓名 LIKE '" & Com_CXXM.Text & "'"
           
        Set CX_objRs = Cn.Execute(strSQL)
        MSFlexGrid1.Clear
        MSFlexGrid1.Cols = CX_objRs.Fields.Count
        MSFlexGrid1.Rows = 1
        For i = 0 To CX_objRs.Fields.Count - 1
            MSFlexGrid1.TextMatrix(0, i) = CX_objRs.Fields(i).Name
        Next i
        
        While Not CX_objRs.EOF
            MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
            MSFlexGrid1.AddItem (CX_objRs!日期 & vbTab & CX_objRs!姓名 & vbTab & CX_objRs!消费类型 & vbTab & CX_objRs!金额)
            CX_objRs.MoveNext
        Wend
        
        Set CX_objRs = Nothing