表名或者字段名是變量的參數(shù)查詢

字號(hào):

問題:
    如何寫表名是變量的參數(shù)查詢?
    表名是變量的查詢?cè)趺磳??比如:SELECT * FROM [@kk]
    我要將表名作為一個(gè)參數(shù)輸入,隨客戶輸入的不同查詢不同的表。
    如何寫字段名是變量的參數(shù)查詢?比如:SELECT * FROM tablename WHERE [input fieldname]='545'
    回答:
    上述寫法是錯(cuò)誤的!
    同 SQL SERVER 的 T-SQL 語句一樣,“表名”或者“字段名”是不允許用變量代替。
    你必須用 VBA 來控制 SQL 字串的組合
    dim strsql as string
    dim strTableName as string
    strTableName="abc"
    strsql="select * from " & strTableName
    '后面就看你隨便寫了,你可以用 RECORDSET 打開,也可以用 create view 語句建立一個(gè)查詢
    '用 recordset 打開的代碼如下:
    dim rs as new adodb.recordset
    rs.open strsql,currentproject.connection,1,1
    ....
    '也可以用 CREATE VIEW 語句來創(chuàng)建一個(gè)新的查詢,并打開
    on error resume next
    currentproject.connection.execute "drop view 查詢名稱"
    currentproject.connection.execute "create view 查詢名稱 as " & strsql
    docmd.openquery "查詢名稱"
    順便提一下, SQL SERVER 應(yīng)該如下操作
    declare @sql varchar(200)
    set @sql='select * from ' + @table_name
    execute(@sql)