【发布时间】:2010-04-11 11:35:04
【问题描述】:
我有一个代码,它检查加载表单时的当前日期,执行简单的计算,并在 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;
【问题讨论】:
-
比较电脑上的区域设置,首先是日期格式
-
OT 我知道,但我就是不能忍受看着格式不正确的代码。如果我正在审查这个,我会让你修复缩进并将这些日期分配放在他们自己的行中. jcl.delphi-jedi.org/documents/styleguide.html#4.3
-
使用参数而不是连接 SQL 语句。这使得切换连接层变得更加容易,并使 SQL 注入攻击更难成功。根据您的连接层,使用参数的语法略有不同。
-
如果参数化查询不能解决问题,我会查看不同机器的客户端库版本号。
-
您连接到什么数据库,使用什么类型的数据库连接(dbExpress、dbGo(TADOQuery 等)或 BDE)?