用VBA编制Access的查询程序VB -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

    用 VB A编制Access的查询程序 -------------------------------------------------------------------------------- 在 Access 中 ,要设计一个查询程序是十分快捷的,

用VBA编制Access的查询程序VB

。它提供的查询向导,可以一步步地引导 程序员 迅速建立查询 ,并可用 SQL 及 Design 方式查看

   

   

    用VBA编制Aclearcase/" target="_blank" >ccess的查询程序

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

    在 Access 中 ,要设计一个查询程序是十分快捷的。它提供的查询向导,可以一步步地引导程序员迅速建立查询 ,并可用 SQL 及 Design 方式查看 。另外 ,它所提供的QueryDefs 对象,则可以方便地用 VBA 编制出基于特殊要求的查询程序。

    下面三个例子就是用VBA 实现查询功能的程序。

    简单查询

    在FORM. mainform上定义按钮 cmd-qry-status-1,当鼠标点击按钮它时,将创建Query qry-status-1 并打开FORM. frm-qry-status-1。定义FORM. frm-qry-status-1 的数据源为 Query qry-status-1。

    程序1:

    Private Sub cmd-qry-status-1-Click()

    Dim qry-tmp As QueryDef

    Dim dbs-itsr As Database

    Dim strsql As String

    Dim stDocName As String

    Dim stLinkCriteria As String

    Set dbs-itsr = CurrentDb()

    strsql = ″SELECT * FROM Request WHERE (((Request.Status)=1));″

    For Each qry-tmp In dbs-itsr.QueryDefs

    If qry-tmp.Name = ″qry-status-1″Then

    dbs-itsr.QueryDefs.Delete qry-tmp.Name

    End If

    Next qry-tmp

    Set qry-tmp = dbs-itsr.CreateQueryDef(″qry-status-1″, strsql)

    On Error GoTo Err-cmd-q-y-status-1-Click

    stDocName =″frm-qry-status-1″

    DoCmd.OpenForm. stDocName, , , stLinkCriteria

    Exit-cmd-qry-status-1-Click:

    For Each qry-tmp In dbs-itsr.QueryDefs

    If qry-tmp.Name =″qry-status-1″ Then

    dbs-itsr.QueryDefs.Delete qry-tmp.Name

    End If

    Next qry-tmp

    Exit Sub

    Err-cmd-qry-status-1-Click:

    MsgBox Err.Description

    Resume Exit-cmd-qry-status-1-Click

    End Sub

    参数查询

    当要求查询条件可以变更时,需要设计参数查询。例如,希望 Request.Status 的值

    可以在执行前输入,定义一查询参数 par-status 。本例中,在FORM. mainform. 上定义

    COMMAND 按钮 cmd-qry-par-status, 在其event属性的 on click 项中建立如程序2所示程序,当鼠标点击按钮 cmd-qry-par-status时,将创建Query qry-par-status 并打开Qu

    ery qry-par-status。

    程序2:

    Private Sub cmd-qry-par-status-Click()

    Dim qry-par As QueryDef

    Dim dbs-itsr As Database

    Dim strsql As String

    Set dbs-itsr = CurrentDb()

    strsql=″PARAMETERS [par-status] Long;″& _

    ″SELECT * FROM Request WHERE

    (((Request.Status)=[par-status]));″

    For Each qry-par In dbs-itsr.QueryDefs

    If qry-par.Name = ″qry-par_status″ Then

    dbs-itsr.QueryDefs.Delete qry-par.Name

    End If

    Next qry-par

    Set qry-par = dbs-itsr.CreateQueryDef(″qry-par-status″, strsql)

    On Error GoTo Err-cmd-qry-par-status-Click

    DoCmd.OpenQuery qry-par.Name

    Exit-cmd-qry-par-status-Click:

    Exit Sub

    Err-cmd-qry-par-status-Click:

    MsgBox Err.Description

    Resume Exit-cmd-qry-par-status-Click

    End Sub

    复杂查询

    当查询条件在多个查询中共用时,如果用参数查询,则每个查询执行前需输入参数值,这样很不方便,而将此条件设计成变量则可实现复杂查询的设计,

电脑资料

用VBA编制Access的查询程序VB》(http://meiwen.anslib.com)。在本例中,在FORMmainform上定义TEXT BOX user-num,其值在查询中充当参数的作用。定义按钮cmd-qry-mul-app, 在其event属性的 on click 项中建立程序,执行时,先输入user-num 值,当鼠标点击按钮 cmd-qry-mul-app时,将创建Query qry-mul-app 并打开FORM. frm-qry-mul-app。在FORM. frm-qry-mul-app上定义 TEXT BOX closed-num,其数据源项填入″=[user-closed-num]″,定义FORM. frm-qry-mul-app 的数据源为 Query qry-mul-app,在其event属性的 On load 项中建立如程序3所示程序(其中定义了Public变量 user-closed-num)。FORM. frm-qry-mul-app 在Load 时,将创建基于qry-mul-app的查询qry-mul-app-1,并将其记录数赋予变量 user-closed-num。这样,当FORM. frm-qry-mul-app 打开时,TEXT BOX closed-num 将获得要求的记录。

    程序3:

    Option Compare Database

    Option Explicit

    Public user-close-num As String

    Private Sub Form-Load()

    Dim qry-mul As QueryDef

    Dim dbs-itsr As Database

    Dim strsql As String

    Dim rstreq As Recordset

    Set dbs-itsr = CurrentDb()

    strsql =″SELECT * FROM qry-mul-app WHERE ((Request.Status)=1);″

    For Each qry-mul In dbs-itsr.QueryDefs

    If qry-mul.Name =″qry-mul-app-1″ Then

    dbs-itsr.QueryDefs.Delete qry-mul.Name

    End If

    Next qry-mul

    Set qry-mul = dbs-itsr.CreateQueryDef(″qry-mul-app-1″, strsql)

    On Error GoTo Err-qry-mul-app-Click

    Set rstreq = qry-mul.OpenRecordset

    rstreq.MoveLast

    user-close-num = rstreq.RecordCount

    rstreq.Close

    Exit-qry-mul-app-Click:

    Exit Sub

    Err-qry-mul-app-Click:

    MsgBox Err.Description

    Resume Exit-qry-mul-app-Click

    End Sub

    原文转自:http://www.ltesting.net

最新文章