设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2103|回复: 6
打印 上一主题 下一主题

[Access本身] 利用主/子窗体来实现查询 代码 access 2003

[复制链接]
跳转到指定楼层
1#
发表于 2012-3-1 14:15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求教高人指点:
Private Sub 查询_Click()
On Error GoTo Err_查询_Click

    Dim strWhere As String  '定义条件字符串
    Dim qdf As DAO.QueryDef 'qdf被定义为一个查询定义对象
    Dim strSQL As String
   
    strWhere = "" '设定初始值-空字符串
   
    '判断【起始日期】条件是否有输入的值,由于有【起始日期】【截止日期】两个文本框
    '所以要分开来考虑
    If Not IsNull(Me.起始日期) Then
        '【起始日期】有输入
        strWhere = strWhere & "([日期] >= #" & Format(Me.起始日期, "yyyy-mm-dd") & "#) AND "
    End If
    If Not IsNull(Me.截止日期) Then
        '【截止日期】有输入
        strWhere = strWhere & "([日期] <= #" & Format(Me.截止日期, "yyyy-mm-dd") & "#) AND "
    End If

    '判断【人员】条件是否有输入的值
    If Not IsNull(Me.Combo12) Then
        '有输入
        strWhere = strWhere & "([人员] like '" & Me.Combo12 & "') AND "
    End If
         '判断【品名】条件是否有输入的值
    If Not IsNull(Me.Combo13) Then
        '有输入
        strWhere = strWhere & "([品名] like '" & Me.Combo13 & "') AND "
    End If
        '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
    '要用LEFT函数截掉这5个字符。
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If
    '先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
    Debug.Print strWhere
    '让子窗体应用窗体查询
    Me.低值易耗品查询子窗体.Form.Filter = strWhere
    Me.低值易耗品查询子窗体.Form.FilterOn = True
   
Exit_查询_Click:
    Exit Sub

Err_查询_Click:
    MsgBox Err.Description
    Resume Exit_查询_Click
End Sub
为什么在输入姓名进行查询的时候,只输入姓或者只输入名,就没有查询结果呢,一起输入才会显示,求原因 谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-3-1 14:27:10 | 只看该作者
要加上通配符*
3#
发表于 2012-3-1 14:28:04 | 只看该作者
strWhere = strWhere & "([人员] like '*" & Me.Combo12 & "*') AND "

点评

高手 谢谢  发表于 2012-3-1 14:50
4#
 楼主| 发表于 2012-3-1 14:50:28 | 只看该作者
Henry D. Sy 发表于 2012-3-1 14:28
strWhere = strWhere & "([人员] like '*" & Me.Combo12 & "*') AND "

嗯嗯 多谢多谢 问题解决了 感激涕零
5#
 楼主| 发表于 2012-3-1 15:00:41 | 只看该作者
Henry D. Sy 发表于 2012-3-1 14:28
strWhere = strWhere & "([人员] like '*" & Me.Combo12 & "*') AND "

我还有个问题,我想添加个文本框 可以统计查询结果的数量 我先在子窗体中添加了个文本框,能够统计全部记录数量,然后又在主窗体中添加了一个文本框,控件来源:=[存书查询子窗体].[Form].[txt计数]  占了别人的代码:
Private Sub CheckSubformCount()
    If Me.存书查询子窗体.Form.Recordset.RecordCount > 0 Then
        '子窗体的记录数>0
        Me.计数.ControlSource = "=[存书查询子窗体].[Form].[txt计数]"
     Else
        '子窗体的记录数=0
        Me.计数.ControlSource = "=0"
    End If
   
   
End Sub

查询按钮的代码 也添加了一句:
'在子窗体筛选后要运行一下自编子程序CheckSubformCount()
    Call CheckSubformCount

但是运行的时候 主窗体的文本框里面显示乱码 这是什么原因呀
6#
发表于 2012-3-1 15:15:49 | 只看该作者
原因很多,为了不浪费时间来猜问题的所在,请您把例子传上来!
7#
 楼主| 发表于 2012-3-2 11:07:15 | 只看该作者
奇怪,为什么一点回复就要我登录呢,我明明都登录成功了。多谢Henry D. Sy 昨天的问题解决了 原因是我大意的把文本框名称写错了 谢谢你 O(∩_∩)O
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 14:20 , Processed in 0.091518 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表