访问VBA以替换SQL查询中的参数

时间:2018-08-26 02:00:27

标签: vba ms-access

任何人都可以帮助我在Ms Access中开发VBA,以将Query1.Period参数“ May 2018”替换为“ Jun 2018”。这是我的SQL:

$page

VBA代码不起作用:

$ git clone https://github.com/emonney/QuickApp
Cloning into 'QuickApp'...
remote: Counting objects: 2150, done.
remote: Total 2150 (delta 0), reused 0 (delta 0), pack-reused 2150
Receiving objects: 100% (2150/2150), 30.28 MiB | 3.01 MiB/s, done.
Resolving deltas: 100% (1471/1471), done.
usage: git rev-list [OPTION] <commit-id>... [ -- paths... ]
  limiting output:
    --max-count=<n>
    --max-age=<epoch>
    --min-age=<epoch>
    --sparse
    --no-merges
    --min-parents=<n>
    --no-min-parents
    --max-parents=<n>
    --no-max-parents
    --remove-empty
    --all
    --branches
    --tags
    --remotes
    --stdin
    --quiet
  ordering output:
    --topo-order
    --date-order
    --reverse
  formatting output:
    --parents
    --children
    --objects | --objects-edge
    --unpacked
    --header | --pretty
    --abbrev=<n> | --no-abbrev
    --abbrev-commit
    --left-right
    --count
  special purpose:
    --bisect
    --bisect-vars
    --bisect-all
fatal: remote did not send all necessary objects
Unlink of file 'QuickApp/.git/objects/pack/pack-43a2031dca4d230e6f6a3333445136c9a7928657.idx' failed. Should I try again? (y/n)

1 个答案:

答案 0 :(得分:0)

您的代码将查询的SQL字符串设置为变量sqlString的字符串(它来自哪里?),然后将“ Period ='May 2018'”替换为“ Period ='Jun 2018' ”,然后将最终的SQL保存在变量qdfOld中(该变量未使用,它是一个字符串变量,因此前缀qdf具有误导性)。您要查找和替换的字符串不包含在查询中,因为在查询中,Query1.Period用括号括起来。

假设变量sqlString包含原始查询字符串,则您最有可能希望执行以下操作:

Private Sub newChangePeriodCriteria_Click()

    With CurrentDb
        With .QueryDefs("Query1_Mth")
            .SQL = Replace(sqlString, "(Query1.Period)='May 2018'", "(Query1.Period)='Jun 2018'")
            .Close
        End With
    End With

End Sub

这很不寻常,请查看查询参数(以及@ahleedawg提供的链接)。

已添加

您可以在数据表视图中打开表单,而不是在数据表视图中打开查询。这将允许您传递WHERE子句。

根据查询Query1创建一个表单(“ PeriodsForm”),并使用类似以下代码的形式将其打开:

Sub OpenPeriodForm()

    DoCmd.OpenForm FormName:="PeriodsForm", View:=acFormDS, WhereCondition:="Period='Jul 2018'"

End Sub