设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 为何子窗体控件获取焦点后,使用 DoCmd.RunCommand acCmdFilterBySelection无法筛选

[复制链接]
跳转到指定楼层
1#
发表于 2005-9-17 18:30:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
所以只好写如下的代码 来完成 按照选定内容筛选。

问题就是:针对 备注 类型无法筛选,没有解决。应该可以筛选的,使用工具栏可以筛选 备注 类型。

---------------------------------代码节选------------------

Option Compare Database

Option Explicit

'*************** by wu8313 2005-09-16***************

'1、使用工具栏中的 按选定内容筛选 完全可以实现如下代码的功能 _

本人只是想看看这种筛选用代码该怎样实现

'2、为何子窗体控件获取焦点后,使用 DoCmd.RunCommand acCmdFilterBySelection _

方法,根本不能执行筛选.所以只好写如下的代码 来完成 按照选定内容筛选

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

Public ctrname As String

Public ctrvalue As Variant

'为何将 ctrname 定义为 string ?

    '因为字段的名称将返回一个字符串,事先是很明确的。并且不能使用 variant 类型,因为如果字段名称定义为 5632 的话 _

    'variant 类型将会按照最小的内存空间来进行存储,5632将会成为一个长整形变量,不同数据类型的筛选代码又没有定义长整型的连接字符串

   

'为何将 ctrvalue 定义为 variant ?

    '因为获得焦点的 字段的数据类型不同,将会使用不同的连接字符串,而变体类型恰好可以自由转换自身的数据类型__

    '根据不同的变量类型来



Public Function variant_type() As String

'根据不同的变量类型确定--数据类型

Select Case VarType(ctrvalue) 'vartype的返回值为 长整型

       Case 8

       variant_type = "文本"

       Case 2, 3, 4, 5, 6, 17

       variant_type = "数字"

       Case 7

       variant_type = "日期/时间"

       Case 9

       variant_type = "ole对象"

       Case 11

       variant_type = "布尔"

       Case 0

       variant_type = "empty"

       Case 1

       variant_type = "null"

       Case 10

       variant_type = "error"

       Case Else

       variant_type = "其他的数据类型"

End Select

End Function

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

Private Sub 命令8_Click() '执行筛选

'根据不同的数据类型来确定使用的连接字符串

Select Case variant_type

       Case "文本"

       Call myfilter_string

       Case "数字"

       Call myfilter_isnumeric_true

       Case "日期/时间"

       Call myfilter_date_time

       Case "布尔"

       Call myfilter_boolean

       Case "ole对象"

       MsgBox "ole对象无法筛选"

       Case "null", "empty"

       MsgBox "空的字符串/null值/ole对象,无法筛选"

       Case Else

       '什么也不做

       Exit Sub

       End Select

End Sub

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

Private Sub 命令15_Click()  '取消筛选

Me.FilterOn = False

Me.文本9.value = Null

Me.文本11.value = Null

Me.文本13.value = Null

End Sub

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





[此贴子已经被作者于2005-9-17 10:34:48编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-9-17 22:10:00 | 只看该作者
太复杂了![em06]![em06]!.如对整个字段筛选,二句即可解决.而且可以分别针对主窗体和子窗体. Screen.PreviousControl.SetFocus

DoCmd.RunCommand acCmdFilterBySelection

如对字段里的部分字符进行筛选,没做过,不过估计也不会这么复杂.不知估计的对不对?
3#
 楼主| 发表于 2005-9-18 00:36:00 | 只看该作者
以下是引用sgrshh29在2005-9-17 14:10:00的发言:

太复杂了![em06]![em06]!.如对整个字段筛选,二句即可解决.而且可以分别针对主窗体和子窗体. Screen.PreviousControl.SetFocus

DoCmd.RunCommand acCmdFilterBySelection

如对字段里的部分字符进行筛选,没做过,不过估计也不会这么复杂.不知估计的对不对?

如果针对 部分字符 进行筛选,我个人感觉很有点难度。

有空的时候,再看看怎样解决。

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

使用 二楼的方法

Screen.PreviousControl.SetFocus

DoCmd.RunCommand acCmdFilterBySelection

可以很好的实现 按照选定内容筛选 的功能。

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



[此贴子已经被作者于2005-9-17 19:46:09编辑过]

4#
发表于 2006-10-9 05:10:00 | 只看该作者
那把当前记录在新窗体中打开呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-2 03:00 , Processed in 0.098096 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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