sql - SQL追加的Delphi 7中的表达式类型不匹配

标签 sql delphi

我有一个代码,它在加载表单时检查当前日期,执行简单计算,并在 Delphi 中附加 SQL。它适用于装有 Delphi 7 的 Windows 7,以及另一台装有 Xp 的计算机,但不适用于其他 3 台装有 Xp 的计算机。加载表单时,它显示“表达式中的类型不匹配”,并指向追加后的行。可能是什么问题?

procedure TfmJaunumi.FormCreate(Sender: TObject);
var d1, d2: TDate; 

begin  
 d1:= Date;  
 d2:= Date-30;  
 With qrJaunumi do
     begin
         Open;
         SQL.Append('WHERE Sanem_datums BETWEEN' + #39 + DateToStr(d1) +
         #39 + 'AND' + #39 + DateToStr(d2) + #39);
         Active := True; 
     end; 
end;

最佳答案

正如robsoft所说,这可能是国际化设置。您可以改用参数化查询 - 如果使用日期和时间,它们通常会更简单。

此外,with 开头之后的 Open 不是必需的 - 事实上,它会打开没有您要添加的 WHERE 子句的查询。

 procedure TfmJaunumi.FormCreate(Sender: TObject);

 var d1, d2: TDate; 

 begin  d1:= Date;  d2:= Date-30;  With
 qrJaunumi do
         begin
         SQL.Append('WHERE Sanem_datums BETWEEN :StartDate AND :EndDate');
         // exact expression will vary according to DB connection type.
         // Example is for TADOQuery.
         Parameters.ParamByName('StartDate').Value := d1;
         Parameters.ParamByName('EndDate').Value := d2;
         Active := True; 
         end; 
 end;

关于sql - SQL追加的Delphi 7中的表达式类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616858/

相关文章:

mysql - 使用 where not exists 检索不在用户文档中的记录

delphi - 如何在Delphi中解析JSON字符串?

delphi - 防止 Delphi 10.2 自动向 TForm 添加属性

mysql - MySQL 中何时使用单引号、双引号和反引号

delphi - Delphi-使用现有dll的问题

delphi - 在 Windows 中存储密码的安全方法

delphi - 如何将运行时创建的按钮添加到数组中?

sql - 将键并发插入表中

sql - Hibernate的PostgreSQL `could not determine data type of parameter`

sql - 随着表子项中记录数量的增加,DELETE FROM 表变得很重