任何人都可以帮助我在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)
答案 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