所以只好写如下的代码 来完成 按照选定内容筛选。
问题就是:针对 备注 类型无法筛选,没有解决。应该可以筛选的,使用工具栏可以筛选 备注 类型。
---------------------------------代码节选------------------
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编辑过]
|