Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 源码示例

对查询代码的一点改进

时 间:2013-01-31 18:56:57
作 者:Aaron   ID:20267  城市:闵行
摘 要:对查询代码的一点改进,简化了一些输入,提高了效率。
正 文:

对查询代码的一点改进,简化了一些输入,提高了效率。

(1)在子窗体建立全局变量:

Dim mstrSearchQuery As String '查找窗体对应的查询名称
Dim mstrOrderField As String '查找结果用来排序的字段
(2)在模块中加入公用函数

'生成查询窗体的查询字段列表
Public Function FindString(strQuery As String) As String
    Dim qrySearch As QueryDef
    Dim fldSearch As Field
    Dim blnMatch As Boolean
    Dim intFieldType As Integer
    Dim strSearch As String
    For Each qrySearch In CurrentDb.QueryDefs
        If qrySearch.Name = strQuery Then
            Set qrySearch = CurrentDb.QueryDefs(strQuery)
            blnMatch = True
            Exit For
        End If
    Next
    If blnMatch = False Then
        MsgBox "请检查输入的查询名称!"
        FindString = ""
        Exit Function
    End If
    For Each fldSearch In qrySearch.Fields
        Select Case fldSearch.Type
        Case dbDate
            intFieldType = 1
        Case dbText, dbMemo
            intFieldType = 3
        Case Else
            intFieldType = 2
        End Select
        strSearch = strSearch & fldSearch.Name & ";" & intFieldType & ";"
    Next
    FindString = strSearch
    Set qrySearch = Nothing
    Set fldSearch = Nothing
End Function

(3)子窗体中的查询代码

'查找功能
Public Sub btnFind()
    Dim SearchString As String
    DoCmd.OpenForm "usysfrmFind"    '- ------打开查询窗体
    '文本型对应 3 ,日期型对应 1 ,数值型对于 2      -------查询不同的字段类型的时候,对应不同的数字来表示
    SearchString = FindString(mstrSearchQuery) 
    Forms!usysfrmFind!cobfldName.RowSource = SearchString  '-------设置需要查询的字段,已经设定该查询字段的数据类型
    '指定查询数据来源
    Forms!usysfrmFind!labDataSource.Caption = mstrSearchQuery
End Sub
Public Sub FindEnd()                            '----------------查询结束后执行的过程
    Forms!usysfrmMain!frmChild.Form.RecordSource = Acchelp_ChildFormRecordSource(mstrSearchQuery, mstrOrderField, True)   '- ----------刷新子窗体数据
End Sub

(4)子窗体的加载过程代码

后发现这段代码还是放到窗体的open过程比较稳妥。因为当窗体的记录为0时,并不会触发Load过程。

Private Sub Form_Load()
    Forms!usysfrmMain!labFind.Tag = 1
    Forms!usysfrmMain!btnEdit.Tag = 999
    mstrSearchQuery = "qryEmployees"   '---------------------只要替换查询的名称,注意大小写
    mstrOrderField = "员工编号"                '---------------------注意字段的拼写,必要的字段要加[  ]号。
End Sub



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助