ACCESS数据库中 表A 含有一个 时间类型 的 字段B.
想要实现功能:用VB做一个窗口,在窗口由用户输入开始时间与结束时间,然后查询表A中符合此条件的记录(字段B范围在开始时间与结束时间之间),并在VB界面显示.
实现过程:用ADO连接数据库(控件方式以及编程方式都试过了),用datagrid控件显示记录.设定两个DATE类型变量X,Y,将VB窗口输入的日期(字符串)用DATEvalue()函数转换为日期类型数据,然后在ADO连接时,属性里按照SQL查询,  select * from A where B>X and B<Y.
出现的问题:设定SQL时候,提示错误.后来将SQL查询改为 
select * from A where B > #2003-1-1# and B < #2003-6-1#,
程序能够正常运行,所以错误原因应该是在设置ADO时候,SQL查询语句中不能出现X,Y这样的变量?我想问的就是,如果解决这个问题?另外还有一个问题,如果在一个窗体中访问另外一个窗体中文本框的值?在模块中申明全局变量就可以了吗?

解决方案 »

  1.   

    select * from a where b between # "& format(x,"yyyy-mm-dd") # & " # and # " & format(y,"yyyy-mm-dd") &" # "
      

  2.   

    另外还有一个问题,如果在一个窗体中访问另外一个窗体中文本框的值?在模块中申明全局变量就可以了吗?form2.text1.text
      

  3.   

    问题2
    在form2中
    直接使用form1.text1.text="呵呵" 这样的语句就可以了
      

  4.   

    我的程序好像这样编的(关于建立连接)Private Sub Command1_Click()
    Dim cn As New ADODB.Connection
    Dim Cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim strConnect As String
    Set cn = New ADODB.Connection
    strConnect = "Provider=***;;DataSource=d:\db\aaa.mdb"  'provider内容忘记了,是先建了个adodc控件,然后拷贝粘贴的
    cn.ConnectionString = strConnect
    cn.Open
    With Cmd
      .ActiveConnection = cn
      .CommandType = adCmdStoredProc 
      .CommandText = "select * from A where B>X and B<Y " 
    End WithWith rs
    .CursorLocation = adUseClient
    .CursorType = adOpenStatic
    .LockType = adLockReadOnly
    .Open Cmd
    End With
    Set DataGrid1.DataSource = rsEnd Sub
      

  5.   

    select * from a where b between # "& format(x,"yyyy-mm-dd") # & " # and # " & format(y,"yyyy-mm-dd") &" # "
    ----------------
    下去试试这个方法,重启动,进入win2000,唉.