我现在要查询符合某一时间段的数据。具体要求是:我画了两个DTPicker控件,用来选择时间范围。然后单击按钮进行查询,把结果赋给MSFlexGrid控件。我想利用参数查询实现,但我以前没用过,请各位指教!谢谢。我参考一个实例,请看下面。思路是很明朗的,但具体到我的设计我还是有不懂的地方。
 With objCmd
        .CommandText = "SELECT * FROM 系统用户 WHERE 用户名 LIKE ? " & _
                                             "AND 身份 LIKE ?"
        .CommandType = adCmdText
 End With    Dim Parm As New Parameter            '为command 对象创建参数
    Set Parm = objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)
    objCmd.Parameters.Append P1
    Set Parm = objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)
    objCmd.Parameters.Append Parm
   
    objCmd("用户名") = "%" & txtUser & "%"      '获得查询参数
    objCmd("身份") = "%" & txtStatus & "%"    Set objRs = objCmd.Execute()                '执行查询,获得查询结果记录集===========================================================================================
问题:
1、SQL语句方面,用参数查询,我的SQL语句该怎么写?2、创建参数。实例中,用户名、身份 直接从 TextBox 里面获取,是一一对应关系。而我查询日期要比较两个DTPicker控件的
值,然后进行查询。那我这参数如何创建?

解决方案 »

  1.   

    你用VB编程 就不该把C#的 连接数据库的方式套用过来~~~
    VB有自己的方式~~
      

  2.   


    objCmd.CommandText = "SELECT ... WHERE '?'<=时间 AND 时间<='?'" 
    objCmd.CommandType = adCmdText Dim Parm As Parameter
    Set Parm = objCmd.CreateParameter("开始时间", adVarChar, adParamInput, 10) 
    objCmd.Parameters.Append Parm 
    Set Parm = objCmd.CreateParameter("结束时间", adVarChar, adParamInput, 10) 
    objCmd.Parameters.Append Parm 
      objCmd("开始时间") = Format$(DTPick1.Value,"yyyy-mm-dd")
    objCmd("结束时间") = Format$(DTPick1.Value,"yyyy-mm-dd")Set objRs = objCmd.Execute()
      

  3.   

    采3楼的方法还是不行。语句到 Set objRs = objCmd.Execute() 报错:语法错误Dim objCn As Connection
    Dim objCmd As Command
    Dim objRs As New Recordset
    Dim i As IntegerDTPicker2.Value = DateSet objCn = New ConnectionobjCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & App.Path & "\db1.mdb"
    objCn.OpenSet objCmd = New Command
    Set objCmd.ActiveConnection = objCnobjCmd.CommandText = "SELECT ... WHERE '?'<=时间 AND 时间<='?'"
    objCmd.CommandType = adCmdTextDim Parm As Parameter
    Set Parm = objCmd.CreateParameter("开始时间", adVarChar, adParamInput, 10)
    objCmd.Parameters.Append Parm
    Set Parm = objCmd.CreateParameter("结束时间", adVarChar, adParamInput, 10)
    objCmd.Parameters.Append Parm
      objCmd("开始时间") = Format$(DTPicker1.Value, "yyyy-mm-dd")
    objCmd("结束时间") = Format$(DTPicker2.Value, "yyyy-mm-dd")Set objRs = objCmd.Execute()
      

  4.   

    对于参数查询,我有个疑问:在SQL语句中的“?”表示参数标记,每个 “?”是不是对应后面一个 Parameter ?如果是这样,程序运行的时候如何知道 每个 Parameter 对应哪个 “?” 
      

  5.   

    你要用自己的控件的值啊
    objCmd.CommandText = "SELECT ... WHERE '' & DTPicker1.value & "' <=时间 AND 时间 <='" & DTPicker1.value & "'"
      

  6.   

    哦,不好意思,更正一下。3楼的方法有效。他的:objCmd.CommandText = "SELECT ... WHERE '?' <=时间 AND 时间 <='?'"  这部分我忘记改了…………
      

  7.   

    Tiger_Zhao ,你那个代码还是有错误:objCmd.CommandText = "SELECT ... WHERE '?' <=时间 AND 时间 <='?'"  ?不用加'?',否则会报错:标准表达式中数据类型不匹配。