问题:
如何写表名是变量的参数查询?
表名是变量的查询怎么写?比如:SELECT * FROM [@kk]
我要将表名作为一个参数输入,随客户输入的不同查询不同的表。
如何写字段名是变量的参数查询?比如:SELECT * FROM tablename WHERE [input fieldname]='545'
回答:
上述写法是错误的!
同 SQL SERVER 的 T-SQL 语句一样,“表名”或者“字段名”是不允许用变量代替。
你必须用 VBA 来控制 SQL 字串的组合
dim strsql as string
dim strTableName as string
strTableName="abc"
strsql="select * from " & strTableName
'后面就看你随便写了,你可以用 RECORDSET 打开,也可以用 create view 语句建立一个查询
'用 recordset 打开的代码如下:
dim rs as new adodb.recordset
rs.open strsql,currentproject.connection,1,1
....
'也可以用 CREATE VIEW 语句来创建一个新的查询,并打开
on error resume next
currentproject.connection.execute "drop view 查询名称"
currentproject.connection.execute "create view 查询名称 as " & strsql
docmd.openquery "查询名称"
顺便提一下, SQL SERVER 应该如下操作
declare @sql varchar(200)
set @sql='select * from ' + @table_name
execute(@sql)