我写了这样的代码:
sql1 :='select sum(jumlah) as debet from kasir_kas_transaksi where flag in (1,3) and tanggal = to_date('+quotedstr(after)+','+quotedstr('dd-mm-yyyy')+')';
with zquery1 do begin
close;
sql.clear;
sql.Add(sql1);
execSQL;
end;
edit1.Text:=zquery1.fieldbyname('debet').asstring;
然后,发生错误的错误是不存在的。代码中有问题吗?我将Delphi 7和Zeos用作连接,以及Oracle 11g作为DB。谢谢!
使用Open
,而不是ExecSQL
。ExecSQL
用于不返回结果集的查询(INSERT
,DELETE
和UPDATE
)。Open
用于返回行的查询。您也不需要使用SQL.Clear;
,然后使用SQL.Add();
-您可以直接设置SQL.Text
。
(您应该停止使用with
;这是一个不同的主题,但我在这里留在这里,因为它是您的代码而不是我的代码。)
with ZQuery1 do
begin
SQL.Text := sql1;
Open;
end;
Edit1.Text := ZQuery1.FieldByName('debet').AsString;
和注意,请停止串联SQL并改用参数。与用户输入的字符串串联使您可以开放以进行SQL注入。Google Little Bobby Tables 找出如果您不知道这是一件坏事。您可以在这里找到一个使用参数编写代码的示例。