在模块A.我算出时间,插到数据库中.部分代码如下:
dim tdate(0 to 15) as date
tdate(0)=combo1.text & "-" & combo2.text & "-" & combo3.text  '年-月-日
           :
           :
           :
   插入数据库 access中表tx中"预计废弃日期"字段中.字段设为文本.我用"切换断点"看tdate(0)的值.为xxxx-xx-xx'为combo所选的.
    结果我就看数据库中.ACCESS中表TX的记录.全部变成了.月/日/年/  ??不知道为什么?????
  为了让数据多点.我在TX表"预计废弃日期"中字段自已加了点数据,全部采用XXXX-XX-XX的格式。
我在模块B中,进行查询.
    
代码如下:
dim dd as Date
dim ddd as Date 
dim sql as string
  ddd=Comboy1.Text & "-" & Combom1.Text & "-" & Combod1.Text
  dd=Comboy2.Text & "-" & Combom2.Text & "-" & Combod2.Text
 'commboy1是年,combom1是月,combod1是日,
sql =" select * from tx where(预计废弃日期 between " & ddd & " and " & Date & ")
'或 sql =" select * from tx where(预计废弃日期 between " & Date & " and " & ddd & ")
'或 sql =" select * from tx where(预计废弃日期 between " & dd & " and " & ddd & ")
'都试过。
    :
    :
 显示在datagrid中我首先在comboy1.text,combom1.text, combod1.text选出2098,10,10 
点查询。很幸运。都查出来了。只有xxxx-xx-xx查出来了。
我再选出2005,10,10结果一条都显示不出来。其间范围内。有值。
我试了一天了。
 每一个都是这种情况。我都疯点了。
你说错误也好。不显示也好。
可它不报错。又显示了。
请哪位大吓帮帮忙看哪里出错了???????????
大吓们,你们做日期范围查询是怎么做的。能把代码帖出来看看吗?谢了。 

解决方案 »

  1.   

    数据库内变成那样估计是你用DATE类型的事吧,怎么不用STRING?
      

  2.   

    "预计废弃日期"字段设置为 datetime 类型。sql ="select * from tx where 预计废弃日期 between #" & Format(ddd,"yyyy-mm-dd")  & "# and #" & Format(Date,"yyyy-mm-dd") & "#"插入语句仿此。
      

  3.   

    你可以都用字符串,存储时注意格式一致 YYYY-MM-DD ,然后查询时 
    "select * from db where 日期  between '起始日期' and '终止日期'"
      

  4.   

    1、楼主最好不要使用between ,而是使用>=和<
    2、在Access中,日期类型是需要用"#"括起来的
      

  5.   

    求救:
    同样的SQL语句的问题.我想统计表中有几辆车.统计出来的值我显示在label中,于是,我写出了如下代码,
     Dim sql As String
     Set db = New ADODB.Connection
         db.CursorLocation = adUseClient
         db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
      Set rs = New ADODB.Recordset
      sql = "SELECT COUNT(DISTINCT 车牌号) FROM tx"
      rs.Open sql, db '结果出错
      Set Label.DataSource = rs1
      
      错误显示:语法错误(操作符丢失)在查询表达式'COUNT(DISTINCT 车牌号)中'请问为什么出错。
    怎么样才能把统计出来的值显示在label 中了
    求大吓.
      

  6.   

    返回包含指定的年、月、日的 Variant (Date)。语法DateSerial(year, month, day)DateSerial 函数语法有下列的命名参数:部分 描述 
    year 必要;Integer。从 100 到 9999 间的整数,或一数值表达式。 
    month 必要;Integer。任何数值表达式。 
    day 必要;Integer。任何数值表达式。 
      

  7.   

    用这个SQL语句试试
    select count(a) from (select DISTINCT 车牌号 a From tx) 看看呢?
      

  8.   

    同样的SQL语句的问题.我想统计表中有几辆车.统计出来的值我显示在label中,于是,我写出了如下代码,
     Dim sql As String
     Set db = New ADODB.Connection
         db.CursorLocation = adUseClient
         db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
      Set rs = New ADODB.Recordset
      sql = "SELECT COUNT(DISTINCT 车牌号) FROM tx"
      rs.Open sql, db '结果出错
      Set Label.DataSource = rs1
      
      错误显示:语法错误(操作符丢失)在查询表达式'COUNT(DISTINCT 车牌号)中'请问为什么出错。
    怎么样才能把统计出来的值显示在label 中了
    求大吓.
    ____________________________________________
    Dim cn as new adodb.connection
    Dim rs as new adodb.Recordset
    Dim SqlStr as stringcn.CursorLocation = adUseClient
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path  "\db1.mdb;Persist Security Info=False"sql = "SELECT COUNT(DISTINCT 车牌号)as NUM FROM tx"
    rs = cn.excute sql
    label.caption = rs!num
      

  9.   

    用ADO更简单adotest.recordsource = "SELECT COUNT(DISTINCT 车牌号)as NUM FROM tx"
    adotest.refreshlable.caption = adotest.recordset!NUM
      

  10.   

    看到你就想起我当年
    如果不是对数据库很熟悉
    还是先用ADO吧,非常简单熟悉以后在DIM ADODB
      

  11.   

    致: walkonthesky(★★★★★) Dim cn as new adodb.connection
    Dim rs as new adodb.Recordset
    Dim SqlStr as string          '我以为定义错了,改成dim sql as string 也不行 
    dim sql as string
    cn.CursorLocation = adUseClient
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path  "\db1.mdb;Persist Security Info=False"sql = "SELECT COUNT(DISTINCT 车牌号)as NUM FROM tx"           
    rs = cn.excute sql  
     '错误地方,提示:缺少语句结束,什么又是语法错误.
     '改成 rs = cn.Execute sql  也不行
    label.caption = rs!num出行错误,不能运行.
    请问怎么一回事.错误注释在程序上,请大家分析.
      

  12.   

    num用单引号括起来
    是我疏忽了,NUM用单引号扩起来
    你看看sql语法实例
    SELECT LastName AS "Employee Name", 
           IDENTITYCOL AS "Employee ID",
           HomePhone,
           Region,
           10 AS Constant
    FROM Northwind.dbo.Employees
    ORDER BY LastName, FirstName ASC
      

  13.   

    请教:从数据库提取数据,显示在textbox和label上,怎么办?
      

  14.   

    请教:从数据库提取数据,显示在textbox和label上,怎么办?
      

  15.   

    我的不会错呀,用dim A来定义一个未定义类型的变量a=cn.filds(1).valuelabel1.caption=a试试,统计最好不要用SQL,用FOR循环从表头到表尾检查符合条件的在变量中+1,最后得出所有符合条件的数量,用label显示不会有错吧
      

  16.   

    先试验以下不写成 月,日,年,如果不行,这样写。ddd=Combom1.Text & "-" & Combod1.Text & "-" & Comboy1.Text 
    dd=Combom2.Text & "-" & Combod2.Text & "-" & Comboy2.Text '月,日,年"select * from table where date_time between #" &  ddd &  "# and #" &  dd & "#"
      

  17.   

    Option Explicit
    Private Sub Command1_Click()
    Dim cn As New ADODB.connection
    Dim rs As New ADODB.Recordset
    Dim sql As String
        Set cn = Nothing
        If cn.State = adStateOpen Then
            cn.Close
        End If
    cn.CursorLocation = adUseClient
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\db1.mdb;Persist Security Info=False"
    sql = ""
    sql = " SELECT DISTINCT 车牌号  FROM tx"
    rs.Open sql, cn
     MsgBox rs.RecordCount
     
    Label1.Caption = rs.RecordCount
    End Sub
      

  18.   

    如果直接用>= 那些在sql server里是有时候行有时候不行的,所以你可以用yeas(),month(),day()函数把年月日逐一比较