在sql-editor中,此代码可以正常工作:
Select *
from Journal
where status<>'D'
order by JDate,J_ID
但是无法在Delphi中编写正确的代码。
1)
dstJournal.Close;
dstJournal.SQL.Clear;
dstJournal.SQL.CommaText:='Select * from Journal order by JDate,J_ID';
sql错误代码= -104:令牌未知J_ID
如果我只写“按JDate排序”或仅写“按J_ID排序”,那么它将起作用。
2) 如果我写:
dstJournal.SQL.CommaText:='Select * from Journal where Status<>"D" ';
它得到错误:sql错误代码= -206:列D不明。
我尝试了'D',但是delphi无法编译并显示“缺少运算符或分号”消息。
如何编写正确的delphi代码?
答案 0 :(得分:3)
请勿使用CommaText
。它用于将SDF格式的文本(用引号引起来,用逗号分隔)解析为TStrings
对象中的内容。那不是你在做什么,所以不要使用它。
改为设置Text
:
dstJournal.SQL.Text := 'SELECT * FROM Journal WHERE status <> ''D'' ORDER BY JDate, J_ID';
或使用Add()
方法:
dstJournal.SQL.Clear;
dstJournal.SQL.Add('SELECT * FROM Journal');
dstJournal.SQL.Add('WHERE status <> ''D''');
dstJournal.SQL.Add('ORDER BY JDate, J_ID');
我尝试了'D',但是delphi无法编译:缺少运算符或分号。
Delphi字符串用单引号引起来,因此,如果要将其放入查询中,则必须使用两个单引号将其转义。
dstJournal.SQL.Add('WHERE status <> ''D''');