如何在Delphi中正确翻译sql代码

时间:2018-12-12 21:14:52

标签: sql delphi firebird

在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代码?

1 个答案:

答案 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''');