设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

求一个清楚文本框、组合框的代码

[复制链接]
跳转到指定楼层
1#
发表于 2016-3-25 10:05:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,用刘小军老师的代码,发现在2010中不能用,我做的是含有子窗体的查询,现在想清楚文本框和组合框里的值
  1. Private Sub cmd清除_Click()

  2.     On Error Resume Next
  3.     Dim Ctl As Control
  4.    
  5.     For Each Ctl In Me.Controls
  6.         Select Case Ctl.ControlType
  7.         Case acCheckBox
  8.             Ctl.Value = False
  9.         Case Else
  10.             Ctl.Value = Null
  11.         End Select
  12.     Next
  13.     '取消子窗体的筛选
  14.     Me.市里报表查询子窗体.Form.Filter = ""
  15.     Me.市里报表查询子窗体.Form.FilterOn = False
  16.    
  17.     '在子窗体取消筛选后要运行一下自编子程序CheckSubformCount()
  18.     Call CheckSubformCount

  19. Exit_cmd清除_Click:
  20.     Exit Sub

  21. Err_cmd清除_Click:
  22.     MsgBox Err.Description
  23.     Resume Exit_cmd清除_Click
  24.    
  25. End Sub
复制代码
。ps:窗体里有一个count函数来计数
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
发表于 2016-3-25 16:17:08 | 只看该作者

1、我是依照你的代码修改的。如果有问题,估计是子函数CheckSubformCount的问题。很遗憾,没看到源码。
2、关于你后面贴的这部分代码,从代码上没看到有太大问题。然而,还请留意系统日期设置是否属于长日期设置,例如 "2016-3-25 16:11:20 星期五"。一般含有星期的日期,很容易出问题。
3、在点击“查询”按钮后,可以alt+F11,ctrl+G查看SQL语句,如果不知道有没有问题的话,可以贴上来大家讨论。
4、如果仍然无法解决,请上传附件。
回复 支持 1 反对 0

使用道具 举报

点击这里给我发消息

2#
发表于 2016-3-25 10:12:50 | 只看该作者
不太明白你想要实现什么功能,
上面的代码是判断是否 复选框 acCheckBox 如果是,则设置它的值为 不勾选
3#
 楼主| 发表于 2016-3-25 10:24:01 | 只看该作者
tmtony 发表于 2016-3-25 10:12
不太明白你想要实现什么功能,
上面的代码是判断是否 复选框 acCheckBox 如果是,则设置它的值为 不勾选

老师您好,谢谢您的回答。是这样的,我用的是刘小军老师access2003的查询实例。现在想用他的代码做个清除按钮,但是2003的代码好像不用用在2010中了。我的设计和他的一模一样,除了Me.存书查询子窗体的名称。
  1. Private Sub cmd清除_Click()
  2. On Error GoTo Err_cmd清除_Click
  3. '刘小军(Alex) 2003-5-22
  4. '这里将使用FOR EACH CONTROL的方法来清除控件的值
  5. '这在控件比较多的时候非常有用。
  6. '================================

  7.     Dim ctl As Control
  8.    
  9.     For Each ctl In Me.Controls
  10.    
  11.         '根据ctl的控件类型来选择
  12.         Select Case ctl.ControlType
  13.             Case acTextBox '是文本框,要清空(注意,子窗体下面还有两个锁定的文本框不能赋值)
  14.                 If ctl.Locked = False Then ctl.Value = Null
  15.                
  16.             Case acComboBox '是组合框,也要清空
  17.                 ctl.Value = Null
  18.             '其它类型的控件不处理
  19.         
  20.         End Select
  21.     Next
  22.    
  23.     '取消子窗体的筛选
  24.     Me.存书查询子窗体.Form.Filter = ""
  25.     Me.存书查询子窗体.Form.FilterOn = False
  26.    
  27.     '在子窗体取消筛选后要运行一下自编子程序CheckSubformCount()
  28.     Call CheckSubformCount

  29. Exit_cmd清除_Click:
  30.     Exit Sub

  31. Err_cmd清除_Click:
  32.     MsgBox Err.Description
  33.     Resume Exit_cmd清除_Click
  34.    
  35. End Sub
复制代码
4#
发表于 2016-3-25 11:32:09 | 只看该作者
Private Sub cmd清除_Click()

    On Error Resume Next
    Dim Ctl As Control
   
    For Each Ctl In Me.Controls
'其实,如果类型不多的话,用if挺好的;如果较多则考虑用select。用null出错的时候,不妨改为空字符串。
        If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Then
            Ctl.Value = ""
        End If
    Next
    '取消子窗体的筛选
    Me.市里报表查询子窗体.Form.Filter = ""
    Me.市里报表查询子窗体.Form.FilterOn = False
   
    '在子窗体取消筛选后要运行一下自编子程序CheckSubformCount()
    Call CheckSubformCount

Exit_cmd清除_Click:
    Exit Sub

Err_cmd清除_Click:
    MsgBox Err.Description
    Resume Exit_cmd清除_Click
   
End Sub
5#
 楼主| 发表于 2016-3-25 14:43:47 | 只看该作者
roych 发表于 2016-3-25 11:32
Private Sub cmd清除_Click()

    On Error Resume Next

谢谢大神的回复,按照您的代码,结果查询又出现问题了提示多余的)在表达是....中。。有没有简单的代码。如ME.年龄=null  ,然后也可以清除子窗体的查询的。
6#
 楼主| 发表于 2016-3-25 15:05:31 | 只看该作者
roych 发表于 2016-3-25 11:32
Private Sub cmd清除_Click()

    On Error Resume Next
  1. Private Sub cmd查询_Click()
  2. On Error GoTo Err_cmd查询_Click

  3.     Dim strWhere As String  '定义条件字符串
  4.    
  5.     strWhere = "" '设定初始值-空字符串
  6.     大神,这是我的查询代码
  7.     '判断【书名】条件是否有输入的值
  8.     If Not IsNull(Me.第一学历) Then
  9.         '有输入
  10.         strWhere = strWhere & "([第一学历] like '*" & Me.第一学历 & "*') AND "
  11.     End If
  12.    
  13.     '判断【类别】条件是否有输入的值
  14.     If Not IsNull(Me.专业所属类别) Then
  15.         '有输入
  16.         strWhere = strWhere & "([专业所属类别] like '" & Me.专业所属类别 & "') AND "
  17.     End If

  18.     '判断【作者】条件是否有输入的值
  19.     If Not IsNull(Me.政治面貌) Then
  20.         '有输入
  21.         strWhere = strWhere & "([政治面貌] like '*" & Me.政治面貌 & "*') AND "
  22.     End If

  23.     '判断【出版社】条件是否有输入的值
  24.     If Not IsNull(Me.原档案所在省份) Then
  25.         '有输入
  26.         strWhere = strWhere & "([原档案所在省份] like '" & Me.原档案所在省份 & "') AND "
  27.     End If
  28.    
  29.     If Not IsNull(Me.原档案所在单位性质) Then
  30.         '有输入
  31.         strWhere = strWhere & "([原档案所在单位性质] like '*" & Me.原档案所在单位性质 & "*') AND "
  32.     End If
  33.    
  34.     If Not IsNull(Me.档案状态) Then
  35.         '有输入
  36.         strWhere = strWhere & "([档案状态] like '*" & Me.档案状态 & "*') AND "
  37.     End If
  38.    
  39.     If Not IsNull(Me.职称等级) Then
  40.         '有输入
  41.         strWhere = strWhere & "([职称等级] like '*" & Me.职称等级 & "*') AND "
  42.     End If
  43.    
  44.     If Not IsNull(Me.职称所属类别) Then
  45.         '有输入
  46.         strWhere = strWhere & "([职称所属类别] like '*" & Me.职称所属类别 & "*') AND "
  47.     End If
  48.     If Not IsNull(Me.档案转出所在省份) Then
  49.         '有输入
  50.         strWhere = strWhere & "([档案转出所在省份] like '*" & Me.档案转出所在省份 & "*') AND "
  51.     End If
  52.     If Not IsNull(Me.档案转出单位性质) Then
  53.         '有输入
  54.         strWhere = strWhere & "([档案转出单位性质] like '*" & Me.档案转出单位性质 & "*') AND "
  55.     End If
  56.    

  57.     '判断【单价】条件是否有输入的值,由于有【单价开始】【单价截止】两个文本框
  58.     '所以要分开来考虑
  59.     If Not IsNull(Me.年龄开始) Then
  60.         '【单价开始】有输入
  61.         strWhere = strWhere & "([年龄] >= " & Me.年龄开始 & ") AND "
  62.     End If
  63.     If Not IsNull(Me.年龄截止) Then
  64.         '【单价截止】有输入
  65.         strWhere = strWhere & "([年龄] <= " & Me.年龄截止 & ") AND "
  66.     End If
  67.    
  68.    
  69.     '判断【进书日期】条件是否有输入的值,由于有【进书日期开始】【进书日期截止】两个文本框
  70.     '所以要分开来考虑
  71.     If Not IsNull(Me.毕业时间开始) Then
  72.         '【进书日期开始】有输入
  73.         strWhere = strWhere & "([毕业时间] >= #" & Format(Me.毕业时间开始, "yyyy-mm-dd") & "#) AND "
  74.     End If
  75.     If Not IsNull(Me.毕业时间截止) Then
  76.         '【进书日期截止】有输入
  77.         strWhere = strWhere & "([毕业时间] <= #" & Format(Me.毕业时间截止, "yyyy-mm-dd") & "#) AND "
  78.     End If
  79.      If Not IsNull(Me.接收时间开始) Then
  80.         '【进书日期开始】有输入
  81.         strWhere = strWhere & "([接收时间] >= #" & Format(Me.接收时间开始, "yyyy-mm-dd") & "#) AND "
  82.     End If
  83.     If Not IsNull(Me.接收时间截止) Then
  84.         '【进书日期截止】有输入
  85.         strWhere = strWhere & "([接收时间] <= #" & Format(Me.接收时间截止, "yyyy-mm-dd") & "#) AND "
  86.     End If
  87.      If Not IsNull(Me.职称开始) Then
  88.         '【进书日期开始】有输入
  89.         strWhere = strWhere & "([职称获得时间] >= #" & Format(Me.职称开始, "yyyy-mm-dd") & "#) AND "
  90.     End If
  91.     If Not IsNull(Me.职称截止) Then
  92.         '【进书日期截止】有输入
  93.         strWhere = strWhere & "([职称获得时间] <= #" & Format(Me.职称截止, "yyyy-mm-dd") & "#) AND "
  94.     End If
  95.      If Not IsNull(Me.转出开始) Then
  96.         '【进书日期开始】有输入
  97.         strWhere = strWhere & "([转出时间] >= #" & Format(Me.转出开始, "yyyy-mm-dd") & "#) AND "
  98.     End If
  99.     If Not IsNull(Me.转出截止) Then
  100.         '【进书日期截止】有输入
  101.         strWhere = strWhere & "([转出时间] <= #" & Format(Me.转出截止, "yyyy-mm-dd") & "#) AND "
  102.     End If
  103.      
  104.    
  105.    
  106.     '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
  107.     '要用LEFT函数截掉这5个字符。
  108.     If Len(strWhere) > 0 Then
  109.         '有输入条件
  110.         strWhere = Left(strWhere, Len(strWhere) - 5)
  111.     End If
  112.    
  113.     '先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
  114.     Debug.Print strWhere
  115.    
  116.     '让子窗体应用窗体查询
  117.     Me.市里报表查询子窗体.Form.Filter = strWhere
  118.     Me.市里报表查询子窗体.Form.FilterOn = True
  119.    
  120.     '在子窗体筛选后要运行一下自编子程序CheckSubformCount()
  121.     Call CheckSubformCount


  122. Exit_cmd查询_Click:
  123.     Exit Sub

  124. Err_cmd查询_Click:
  125.     MsgBox Err.Description
  126.     Resume Exit_cmd查询_Click
  127.    
  128. End Sub
复制代码
8#
 楼主| 发表于 2016-3-28 10:58:02 | 只看该作者
roych 发表于 2016-3-25 16:17
1、我是依照你的代码修改的。如果有问题,估计是子函数CheckSubformCount的问题。很遗憾,没看到源码。
...

谢谢大神,问题已解决,我把空值换成null就成功了。不知道怎么打赏,设置最佳答案,谢谢您,祝您生活愉快。

点评

你现在才发现我的代码改为空字符串?^_^  发表于 2016-3-28 11:27
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 23:00 , Processed in 0.099067 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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