在函数内部,我使用一个字符串来运行sql。我需要改变一些依赖于用户选择的字符串。为了简洁起见,我只从每个表中包含了一个字段。而且,这些不是真正的表名。
strSQL = "DELETE * FROM tblWax"
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tblWax ( strPortName, lngShortSet ) " & _
"SELECT tblAAA.strPastName, tblBBB.lngShortID " & _
"FROM tblAAA INNER JOIN tblBBB ON tblAAA.Parameter = tblBBB.Parameter"
db.Execute strSQL, dbFailOnError根据用户的选择,我想用tblSSS代替tblBBB,使用相同的选择(在字段strChoice中),tblWax需要是tblHat。即:如果strChoice = 1,则tblWax,tblAAA,tblBBB如果strChoice = 2,则tblHat,tblAAA,tblSSS
否则,字符串的其余部分是相同的。
发布于 2017-04-19 19:00:21
要扩展@Smandoli和@Gustav的答案,请使用字符串变量作为表名。这使您可以创建多个案例,而不会在SQL字符串中丢失变量名称。
Select Case strChoice
Case 1:
strTarget = "tblWax"
strJoin = "tblBBB"
Case 2:
strTarget = "tblHat"
strJoin = "tblSSS"
end select
strSQL = "DELETE * FROM " & strTarget
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO " & strTarget & " ( strPortName, lngShortSet ) " & _
"SELECT tblAAA.strPastName, " & strJoin & ".lngShortID " & _
"FROM tblAAA INNER JOIN " & strJoin & _
" ON tblAAA.Parameter = " & strJoin & ".Parameter"
db.Execute strSQL, dbFailOnError发布于 2017-04-18 19:44:16
只需使用条件逻辑,如VBA的SELECT...CASE
Select Case strChoice
Case 1
strSQL = "DELETE * FROM tblWax"
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tblWax ( strPortName, lngShortSet ) " & _
"SELECT tblAAA.strPastName, tblBBB.lngShortID " & _
"FROM tblAAA INNER JOIN tblBBB ON tblAAA.Parameter = tblBBB.Parameter"
Case 2
strSQL = "DELETE * FROM tblHat"
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tblHat ( strPortName, lngShortSet ) " & _
"SELECT tblAAA.strPastName, tblSSS.lngShortID " & _
"FROM tblAAA INNER JOIN tblSSS ON tblAAA.Parameter = tblSSS.Parameter"
End Select
db.Execute strSQL, dbFailOnError您甚至可以在一种情况下使用多个值。
Case 1, 3, 5
...
Case 2, 4, 6
...并将Else用于其他不跟随其他Case语句的语句。
Case Else
...https://stackoverflow.com/questions/43480760
复制相似问题