Query元件的問題

有段程式碼,是要動態產生SQL的敘述,是這樣的:

Query1.SQL.Add('delete * from 應收明細 where 銷帳編號 =:caano');

結果編譯時出現下列錯誤訊息:

[Error] Unit1.pas(49): Statement expected, but expression of type 'Integer' found

雖然Query1.SQL.Add會傳回一個integer的值,但是在之前同樣的敘述卻沒有這樣的問題,不知是哪個設定錯誤了,請各位幫忙解決,謝謝

Update:

前後是這樣的

s1:=copy(s,1,14);

Query1.SQL.Add('delete * from 應收明細 where 銷帳編號 =:caano');

Query1.Params[0].AsString:=s1;

Query1.Prepare;

Query1.ExecSQL;

Query1只有一個params,就是caano

Update 2:

我的另外一行也是出現同樣的錯誤訊息:

Query1.SQL.Add('insert into 應收明細 (代收類別,銷帳編號,收入科目,填發機關代碼,繳款機關,繳款期限,應收金額,收款書日期,款項所屬起日,款項所屬迄日) values(:s8,:s1,:s6,:s10,:s3,:s7,:s2,:s9,:s4,:s5)');

同樣的程式碼,之前可以編譯,但不知動到甚麼設定之後就有錯誤訊息出現了....苦惱中阿...

Update 3:

感謝狼鷹回答,不過我的程式碼並沒有類似情況,而且錯誤訊息確實是指向這2行的敘述.....

結案日期逼近啦.....

Update 4:

要如何寄給您?

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    delete 語法 有問題唷

    Query1.SQL.Add('delete from 應收明細 where 銷帳編號 =:caano'); //你的多了個 * 號

    --------------------------------------------------------------------------------------

    不過錯誤訊息不是這個原因

    最好把程式碼的前後幾行 post 上來

    2007-08-22 00:02:36 補充:

    確認一下

    在你的程式中

    可能有類似以下的情形:

    procedure TForm1.Button1Click(Sender: TObject);

    var

    s ,s1 :string;

    begin

    5; // <=== 就是這樣造成錯誤的

    s1:=copy(s , 1,14);

    Query1.SQL.Add('delete from 應收明細 where 銷帳編號 =:caano');

    Query1.Params[0].AsString:=s1;

    Query1.Prepare;

    Query1.ExecSQL;

    end;

    2007-08-22 14:46:33 補充:

    由於補充有字數限制

    不介意的話直接

    把程式(.pas跟.dfm)寄給我

    2007-08-22 23:49:15 補充:

    已回信告知Email Address

    2007-08-25 08:47:25 補充:

    Project選單->Option->Compiler頁籤

    勾選 Extended Syntax即可

Still have questions? Get your answers by asking now.