3
這是原來的SQL服務器查詢其工作原理:轉換SQL Server查詢德爾福語法
use HIS
SELECT
room_type,rate_start_date,rate_end_date,rate
, DATEDIFF(DAY,case when rate_end_date < '2011.08.21'
then '2011.08.19'
else rate_start_date
end,
case when rate_start_date > '2011.08.19'
then '2011.08.21'
else rate_end_date
end
) AS days FROM room_rates
WHERE room_type = 'DBLMS' AND rate_start_date <= '2011.08.21'
AND rate_end_date > '2011.08.19'
我把它轉化爲德爾福SQL:
procedure TForm1.Button1Click(Sender: TObject);
begin
uniQuery1.Close;
uniQuery1.SQL.Clear;
uniQuery1.SQL.Add('SELECT room_type,rate_start_date,rate_end_date,rate,');
uniQuery1.SQL.Add('DATEDIFF(DAY,case when rate_end_date < 2011.08.21 then 2011.08.19 else rate_start_date end,');
uniQuery1.SQL.Add('case when rate_start_date > 2011.08.19');
uniQuery1.SQL.Add('then 2011.08.21 else rate_end_date end) AS days FROM room_rates');
uniQuery1.SQL.Add('WHERE room_type = DBLMS AND rate_start_date <= 2011.08.21');
uniQuery1.SQL.Add('AND rate_end_date > 2011.08.19');
uniQuery1.Open;
end;
但是我得到「無效的列名稱DBLMS''
我在這裏錯過了什麼? DBLMS不是一列。
我運行您的查詢,我的'天'欄不顯示。 – user763539
我用你的建議,並用參數替換日期,room_types,但仍然不顯示。有趣... SQL服務器顯示天沒有問題...這是爲什麼? – user763539
看來,TMS網格以及cxGrid不想顯示'days'字段,而Delphi 8標準的網格則是這樣)。這確實很奇怪.... – user763539