功能描述:从两个DTPicker控件中选择时间段,并结合其他条件,在数据库中查找满足条件的记录.txtsql=txtqsl& DTPicker4.Value <=cdate(jjbrq) and cdate(jjbrq)<=DTPicker3.Value说明txtsql将作为Set rcs = ExecuteSQL(txtsql, MsgText)的参数.txtsql=txtqsl&意思是前面还有限定条件. 而"jjbrq"是数据库内的代表日期的字段名(类型为文本型,由于某种原因不用日期型).问题:1.cdate(jjbrq)是否可将jjbrq转换为日期型.
     2.若1能,则txtsql&后面应该怎么写
   
这是我写的,有错:  txtsql = txtsql & "DTPicker4.Value<='&cdate&"("&jjbrq&")"'& And &'cdate&"("&jjbrq&")"'&<=&"DTPicker3.Value & ""请高手执教!!!

解决方案 »

  1.   

    txtsql=txtqsl & "where cdate(jjbrq)>=#" & format(DTPicker4.Value, "yyyy-mm-dd") & "# and cdate(jjbrq)<=#" & format(DTPicker3.Value, "yyyy-mm-dd") & "#"你的日期字段格式是什么样的?试试:
    txtsql=txtqsl & "where jjbrq>=#" & format(DTPicker4.Value, "yyyy-mm-dd") & "# and jjbrq<=#" & format(DTPicker3.Value, "yyyy-mm-dd") & "#"你可以根据库中日期格式调整 Format 的模板。
      

  2.   

    问题补充:jjbrq填写格式如:2006-6-28
             txtsql=txtqsl &中的第二个txtsql中已经有where存在
      

  3.   

    Sql = "select  WorkNumber,a.ActDatetime from T_Card_Data a join T_Card b on a.CardNumber=b.CardNumber"
        Sql = Sql & " where machnumber='008' and WorkNumBer like 'A%'"
        Sql = Sql & IIf(DTStart.Value <> "", " and  left(a.ActDatetime,10)>='" & Format(DTStart.Value, "YYYY-MM-DD") & "'", "")
        Sql = Sql & IIf(DTEnd.Value <> "", " and  left(a.ActDatetime,10)<='" & Format(DTEnd.Value, "YYYY-MM-DD") & "'", "")
        Sql = Sql & IIf(comCardIdStart.Text <> "", " and  WorkNumber>='" & comCardIdStart.Text & "'", "")
        Sql = Sql & IIf(comCardIdEnd.Text <> "", " and  WorkNumber<='" & comCardIdEnd.Text & "'", "")以上是我用DTPicker的一個例子
    其中DTStart與DTEnd就是兩DTPicker控件
    像你說的已經存Where的問題也一並解決
      

  4.   

    试试:
    txtsql=txtqsl & " jjbrq>=#" & format(DTPicker4.Value, "yyyy-m-d") & "# and jjbrq<=#" & format(DTPicker3.Value, "yyyy-m-d") & "#"
      

  5.   

    有错:  txtsql = txtsql & "DTPicker4.Value<='&cdate&"("&jjbrq&")"'& And &'cdate&"("&jjbrq&")"'&<=&"DTPicker3.Value & ""
    1>你上面的这句,将变量名称放到了字符串当中去了...
    2>在VB下操作ACCESS数据库,对日期的判断值前应该使用# #将日期括起来。针对上面的那行,应该改为:
    txtsql=txtsql &  Dtpicker4.Value & "<=#" & cdate(jjbrq) & "# And #" & cdate(jjbrq) & " # <=" & Dtpicker3.Value & '#"试试,我没测过,不过遵循以上两条原则,是可以写正确的。
      

  6.   

    有错:  txtsql = txtsql & "DTPicker4.Value<='&cdate&"("&jjbrq&")"'& And &'cdate&"("&jjbrq&")"'&<=&"DTPicker3.Value & ""很明顯就&與cdate之前沒有空格,在SQL語句中&與變量之間一定得有空格
      

  7.   

    感谢你们的帮助,再问下
    编译时报错说,jjbrq变量未定义(之前用了option explicit )
    请问,jjbrq是记录集内的一个字段名,在此
    可以用做变量吗? 要定义又应该申明成string还是什么
      

  8.   

    你的数据库是什么.
    如果是ACCESS的,需要加"#"
    txtsql=txtsql &  Dtpicker4.Value & "<=#" & cdate(jjbrq) & "# And #" & cdate(jjbrq) & " # <=" & Dtpicker3.Value & '#"如果是SQL的话,就是
    txtsql=txtsql &  Dtpicker4.Value & "<='" & cdate(jjbrq) & "' And " & cdate(jjbrq) & "  <='" & Dtpicker3.Value & " '"
      

  9.   

    jjbrq是表中的字段名?
    ----------------------------------------------------------------------
    1>在SQL中的做法:
    txtsql=txtsql & " cast(jjbrq as smalldatetime) between #" + dtpicker4.value + "# and #" +dtpicker3.value +"#"
    2>在ACCESS中,不知道能不能使用日期函数转将jjbrq转换成日期..?如果可以的话,格式基本上同SQL中的一样。把cast转换函数替换成ACCESS能识别的就行了。