Office中国论坛/Access中国论坛

标题: [求助]关于日期查询 [打印本页]

作者: Threaten    时间: 2005-8-11 19:21
标题: [求助]关于日期查询
我想做一个查询, 如果一个文本框中的值为空,则显示所有数据,否则显示所有比文本框中日期小的数据

我试了一下,

like iif(isnull([Forms]![XX-Form]![YY_TextBox]),"*",<[Forms]![XX-Form]![YY_TextBox])

可是好像不行

请教各位

谢谢


作者: zyp    时间: 2005-8-11 20:22
if isnull(forms!xx-form!yy_textBox) then

   sql="SELECT * FROM tb1"

else

   sql="SELECT * FROM tb1 WHERE 日期字段<#"& forms!xx-form!yy_textBox &"#"

[此贴子已经被作者于2005-8-11 12:24:44编辑过]


作者: wu8313    时间: 2005-8-13 01:46
写了一个例子。文本框不为空的时候,显示等于文本框日期的数据,否则显示全部数据。

部分代码节选:感觉代码写多了,不够简化。利用一个常用的窗体查询,也是可以解决这个问题的,比这个简单,可以搜索一下旧帖。

-------------------------------------------------------------------------------------

Option Compare Database

Option Explicit

Sub query()

Dim a As String

Dim b As Integer



'捕获inputbox所接受的错误数据类型或者null值 比如输入汉字或者取消输入参数

On Error GoTo date_Err



'强制用户输入四位数年份 避免千年问题 所以采用2000-01-01的用户输入方式

a = InputBox("格式为:2000-01-01", "输入一个日期")

Debug.Print a  '在立即窗口中读取这个变量或者表达式的值

'**************************

'给几个控件赋予变量的值

Forms!窗体1![文本0] = a

b = DCount("[日期]", "表1", "[表1]![日期] = Forms!窗体1![文本0]")

'Me.标签8.Caption = "符合查询条件的记录笔数为:"

Me.标签8.Caption = IIf(Me.标签8.Caption = "记录的总个数:" _

, "符合查询条件的记录笔数为:", "符合查询条件的记录笔数为:")



Me.文本7.Value = b

'**************************

'MsgBox Me.子窗体.Form.CurrentRecord 1

'MsgBox Me.子窗体.Form.Count   6

'计算符合文本框条件的记录的个数

'MsgBox DCount("[日期]", "表1", "[表1]![日期] = Forms!窗体1![文本0]")



'**************************

'将sql选择查询传给一个对象 在这里指  Me.子窗体.Form 的 RecordSource 属性

' Me.子窗体.Form  引用当前窗体上某个子窗体的标准写法

'在这里我定义的where条件是等于文本框 当然也定义>或者< 或者between ... and ... 你可以根据你的情况更改一下。

Me.子窗体.Form.RecordSource = "SELECT 表1.ID, 表1.姓名, 表1.日期 " _

  & "FROM 表1 " _

         & "WHERE (((表1.日期)=[forms]![窗体1]![文本0])); "



'**************************

date_Exit:

    Exit Sub

date_Err:

    MsgBox "1、输入错误的会话参数,无法查询" + vbNewLine + "" _

          + vbNewLine + "2、输入参数为空" + vbNewLine + "" + vbNewLine _

              + "请重新输入", , "wu8313..."

                '捕获错误后

                    Forms!窗体1![文本0] = Null  '将文本0值设为空

                    

                    Me.标签8.Caption = IIf(Me.标签8.Caption = "符合查询条件的记录笔数为:" _

, "记录的总个数:", "记录的总个数:")

                        Me.文本7.Value = c

                        

                        

  '捕获到错误后,仍然把全部数据呈现在用户的面前  也就是要返回表中的全部数据

                     

                        

Me.子窗体.Form.RecordSource = "SELECT 表1.ID, 表1.姓名, 表1.日期 " _

& "FROM 表1; "

                        

                       

                        

    Resume date_Exit

End Sub

-------------------------------------------------------------------------------------

补充一句,类似这样的问题,搜索 宗师刘小军老师 的“常用窗体查询”这个非常经典的教程,仔细看看,肯定受益匪浅的。

[attach]12405[/attach]



[此贴子已经被作者于2005-8-12 18:14:54编辑过]






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3