我正在尋找一個ANSI-SQL方法做一個選擇查詢不返回任何記錄,但填充TDataSet中的字段結構。ANSI SQL查詢來強制返回0記錄
我發現的方法是通過加入「其中1 = 0」中的任何查詢,例如:
Select Id, name, province
from customers
where 1=0
這是一個相當簡單的例子,它變成多一點複雜,當我必須工作用戶輸入查詢,然後解析它們,刪除where子句(如果它已經有一個),並替換爲「1 = 0」。
如果用戶輸入的查詢的最後一個子句是WHERE子句,那麼就一點問題都沒有,但對更復雜的查詢是這樣的:
select
c.lastname,
sum(cs.amount)
from customersales cs
join customers c on c.idcustomer=cs.idcustomer
/* where 1=0 */
group by c.idcustomer, c.lastname
通過使用「其中1 = 0 「方法,在前面的例子中插入它的唯一方法是通過一個相當強大的SQL解析器(記住用戶可以輸入複雜的查詢,包括子查詢等等),誰可以理解包含此字符串的位置。
有誰知道一個更好的方式來做到這一點?我不能使用「限制1」,因爲它必須採用ANSI方式。
您需要此功能嗎? – 2009-12-17 20:31:14
我需要這個功能,因爲我在軟件中添加了一項功能,可讓用戶創建自定義查詢,然後使用查詢顯示圖表,表格以及使用它們創建報表。我需要這個來設計報告。 要顯示帶有可用數據集的報表設計器(從用戶創建的查詢中提取),我需要此功能。 「數據集」是查詢後提取的簡單字段列表。 順便說一句,我使用的FastReport 4 – 2009-12-17 20:39:04
創建客戶提出查詢:你爲什麼不使用附帶的快速報告快速查詢生成器。爲什麼不快速立方體? – 2009-12-17 21:50:22