線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1546
推到 Plurk!
推到 Facebook!

資料加總問題

答題得分者是:chih
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-02 00:43:43 IP:61.64.xxx.xxx 未訂閱
請教各位先進 Var T:String; begin // ==從1日 ~ 31日 加總=== DM_DataBase.ADOQ_WorkpeoplFeat.Close; DM_DataBase.ADOQ_WorkpeoplFeat.SQL.Clear; DM_DataBase.ADOQ_WorkpeoplFeat.SQL.Add('Select * From 員工業績總表 where 姓名=''' DBLCbx_Name.Text ''' and (Select Sum(業績) As ''' T ''' From 員工業績總表)'); DM_DataBase.ADOQ_WorkpeoplFeat.Open; showmessage(T); end; 為何T無資料
zong
初階會員


發表:11
回覆:51
積分:42
註冊:2002-08-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-02 02:11:38 IP:61.219.xxx.xxx 未訂閱
sql語法有誤! 修正如下! try try看! 可不可以! DM_DataBase.ADOQ_WorkpeoplFeat.SQL.Add('Select Sum(業績) As ''' T ''' From 員工業績總表 where 姓名=''' DBLCbx_Name.Text ''' ');
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-02 02:43:39 IP:61.216.xxx.xxx 未訂閱
你宣告了String T,但是你的程式到SHOWMESSAGE之前都沒有給T值,所以T當然不會有資料
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-02 09:20:29 IP:211.76.xxx.xxx 未訂閱
如同 chih 前輩的說明, T 只是在 delphi 中的一個變數, 所以要將結果存入 T 中, 必須再使用 Fields 的相關函數才行, 另外你原來的 SQL command 也是有問題的, 也必須一併修改, 建議修改程式如下:
Var
   T:String;
begin
  // ==從1日 ~ 31日 加總===
      DM_DataBase.ADOQ_WorkpeoplFeat.Close;
      DM_DataBase.ADOQ_WorkpeoplFeat.SQL.Clear;
      DM_DataBase.ADOQ_WorkpeoplFeat.SQL.Add('Select * From 員工業績總表 where 姓名='''+DBLCbx_Name.Text+''' and (Select Sum(業績) As '''+T+''' From 員工業績總表)');
      DM_DataBase.ADOQ_WorkpeoplFeat.SQL.Add('Select Sum(業績) AS TOTSALES From 員工業績總表 where 姓名='''+DBLCbx_Name.Text+''' ');
      DM_DataBase.ADOQ_WorkpeoplFeat.Open;
      If not DM_DataBase.ADOQ_WorkpeoplFeat.IsEmpty Then
      Begin
        T := IntToStr(DM_DataBase.ADOQ_WorkpeoplFeat.FieldByName('TOTSALES').AsString;
      End;
      showmessage(T);
end;
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-02 09:54:37 IP:61.64.xxx.xxx 未訂閱
T := IntToStr(DM_DataBase.ADOQ_WorkpeoplFeat.FieldByName('TOTSALES').AsString; 執行這一行出現的訊息 [Error] Unit_CalculateFeat.pas(408): There is no overloaded version of 'IntToStr' that can be called with these arguments 怎麼將計算出來的資料寫入另一個資料(薪資表)表的當月業績裡 發表人 - sword185 於 2003/05/02 09:59:27
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-02 10:05:39 IP:211.76.xxx.xxx 未訂閱
引言: T := IntToStr(DM_DataBase.ADOQ_WorkpeoplFeat.FieldByName('TOTSALES').AsString; 執行這一行出現的訊息 [Error] Unit_CalculateFeat.pas(408): There is no overloaded version of 'IntToStr' that can be called with these arguments 怎麼將計算出來的資料寫入另一個資料(薪資表)表的當月業績裡
Sorry, 後面已用了 .AsString 前面就不用轉了....
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-02 14:17:53 IP:61.64.xxx.xxx 未訂閱
Var T:String; begin // ==從1日 ~ 31日 加總=== ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select Sum(業績) AS TOTSALES From 員工業績總表 where 姓名=''' Edit1.Text ''' '); ADOQuery1.Open; If not ADOQuery1.IsEmpty Then Begin T := IntToStr(ADOQuery1.FieldByName('TOTSALES').AsInteger); End; showmessage(T); ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('UPDATE 員工薪資表 SET 當月總業績=''' T ''' where 姓名=''' Edit1.Text ''' '); ADOQuery2.Open; end; UPDATE........有錯
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-02 16:05:07 IP:211.76.xxx.xxx 未訂閱
請修改如下:    
//...
      ADOQuery2.Close;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Add('UPDATE 員工薪資表 SET 當月總業績=''' T ''' where 姓名=''' Edit1.Text ''' ');
      ADOQuery2.Open;
      ADOQuery2.ExecSQL;
//...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-02 16:13:57 IP:61.216.xxx.xxx 未訂閱
其實你的T可以不用宣告了...改成這樣...
begin
  // ==從1日 ~ 31日 加總===
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select Sum(業績) AS TOTSALES From 員工業績總表 where 姓名=''' Edit1.Text ''' ');
      ADOQuery1.Open;
      If not ADOQuery1.IsEmpty Then
      Begin
      showmessage(ADOQuery1.FieldByName('TOTSALES').AsString);
      ADOQuery2.Close;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Add('UPDATE 員工薪資表 SET 當月總業績=' #39 ADOQuery1.FieldByName('TOTSALES').AsString #39 ' where 姓名=' #39 Edit1.Text #39');
      ADOQuery2.ExecSQL;
      End;
end;
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-02 16:27:31 IP:61.64.xxx.xxx 未訂閱
非常謝謝您 // ==從1日 ~ 31日 加總=== ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select Sum(業績) AS TOTSALES From 員工業績總表 where 姓名=''' Edit1.Text ''' '); ADOQuery1.Open; If not ADOQuery1.IsEmpty Then Begin showmessage(ADOQuery1.FieldByName('TOTSALES').AsString); ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('UPDATE 員工薪資表 SET 當月總業績=' #39 ADOQuery1.FieldByName('TOTSALES').AsString #39 ' where 姓名=' #39 Edit1.Text #39'');//應該要''); ADOQuery2.ExecSQL; End;
系統時間:2024-06-29 18:46:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!