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

請問為何我的ADOQuery會不執行?

尚未結案
jimsam
一般會員


發表:3
回覆:4
積分:1
註冊:2003-09-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-28 17:06:13 IP:163.26.xxx.xxx 未訂閱
以下為我的程式碼... ----------------------------------------- procedure TfMO_Close_Posting.BitBtn1Click(Sender: TObject); var DATE1:String; DATE2:String; DATE3:String; DATE4:String; DATE5:String; strSQL_M:String; strSQL_D:String; mSQL:String; begin DATE1:=datetostr(dtpDATE_S.Date); DATE2:=datetostr(dtpDATE_E.Date); showmessage(DATE1); showmessage(DATE2); Date_S:=fMO_Clear.DateTransform(DATE1); Date_E:=fMO_Clear.DateTransform(DATE2); strSQL_M:='select * from MO_M where MO_ID IN (Select MO_ID FROM MO_CLOSE_D WHERE Posting = ''N'' AND'; if length(txtOSC_ID_S.Text) > 0 then begin if length(txtOSC_ID_E.Text) > 0 then strSQL_M:= strSQL_M ' (MOC_ID BETWEEN ''' txtOSC_ID_S.Text ''' AND ''' txtOSC_ID_E.Text ''') AND'; end; if length(datetostr(dtpDATE_S.Date)) > 0 then begin if length(datetostr(dtpDATE_E.date)) > 0 then strSQL_M:= strSQL_M ' (RDATE BETWEEN ''' DATE_S ''' AND ''' DATE_E '''))'; end; dmMO_Close.adqDataOut.Close; dmMO_Close.adqDataOut.SQL.Clear; dmMO_Close.adqDataOut.SQL.Add(strSQL_M); dmMO_Close.adqDataOut.Open; IF not dmMO_Close.adqDataOut.Eof then begin mMGS:=Application.MessageBox('確定要進行製令結案過帳作業','過帳作業',MB_YESNO); if mMGS = 6 then BEGIN while not dmMO_Close.adqDataOut.Eof do begin DATE5:=DATETOSTR(dmMO_Close.adqDataOut['DateSheet']); DATE5:=fMO_Clear.DateTransform(DATE5); dmMO_Close.adqDataIn.Close; dmMO_Close.adqDataIn.SQL.Clear; mSQL := 'INSERT INTO MO_HT_M VALUES (''' trim(dmMO_Close.adqDataOut['MO_ID']) ''', ''' trim(dmMO_Close.adqDataOut ['DEP_ID']) ''' , ''' trim(dmMO_Close.adqDataOut['EMP_ID']) ''' , '''; mSQL := mSQL DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')'; //dmMO_Close.adqDataIn.SQL.Add('INSERT INTO MO_HT_M VALUES (''' dmMO_Close.adqDataOut['MO_ID'] ''', ''' dmMO_Close.adqDataOut['DEP_ID'] ''' , ''' dmMO_Close.adqDataOut['EMP_ID'] ''' , ''' DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')'); dmMO_Close.adqDataIn.SQL.Add (mSQL); dmMO_Close.adqDataIn.ExecSQL;<--這個元件不會執行,執行緒會消失,就不會再執行下去了! dmMO_Close.adqDataOut.Next; end; strSQL_M:=Copy(strSQL_M,25,Length(strSQL_M)-24); strSQL_D:='Select * from MO_D' strSQL_M; dmMO_Close.adqDataOut.Close; dmMO_Close.adqDataOut.SQL.Clear; showmessage(strSQL_D); dmMO_Close.adqDataOut.SQL.Add(strSQL_D); dmMO_Close.adqDataOut.Open; IF NOT dmMO_Close.adqDataOut.Eof THEN begin while not dmMO_Close.adqDataOut.Eof do begin DATE1:=DATETOSTR(dmMO_Close.adqDataOut['DateGO']); DATE2:=DATETOSTR(dmMO_Close.adqDataOut['DateDone']); DATE3:=DATETOSTR(dmMO_Close.adqDataOut['DateR']); DATE4:=DATETOSTR(dmMO_Close.adqDataOut['DateEdit']); DATE1:=fMO_Clear.DateTransform(DATE1); DATE2:=fMO_Clear.DateTransform(DATE2); DATE3:=fMO_Clear.DateTransform(DATE3); DATE4:=fMO_Clear.DateTransform(DATE4); dmMO_Close.adqDataIn.Close; dmMO_Close.adqDataIn.SQL.Clear; showmessage('INSERT INTO MO_HT_D VALUES (''' dmMO_Close.adqDataOut['MO_ID'] ''', ''' dmMO_Close.adqDataOut['MO_SN'] ''' , ''' dmMO_Close.adqDataOut['OR_ID'] ''' , ''' dmMO_Close.adqDataOut['OR_SN'] ''' , ''' dmMO_Close.adqDataOut['MA_ID'] ''' , ''' dmMO_Close.adqDataOut['WA_ID'] ''' , ''' dmMO_Close.adqDataOut['UN_ID'] ''' , ''' dmMO_Close.adqDataOut['WA_ID_S'] ''' , ''' dmMO_Close.adqDataOut['UN_ID'] ''' , ''' dmMO_Close.adqDataOut['BATCHID'] ''', ''' dmMO_Close.adqDataOut['PJ_ID'] ''', ''' DATE1 ''' , ''' DATE2 ''' , ''' DATE3 ''' , ''' DATE4 ''' , To_number(''' inttostr(dmMO_Close.adqDataOut['QTY']) ''', ''99999999999.999'') , To_number(''' inttostr(dmMO_Close.adqDataOut['QTYDONE']) ''', ''99999999999.999'') , To_number(''' inttostr(dmMO_Close.adqDataOut['QTYBAD']) ''', ''99999999999.999'') , To_number(''' inttostr(dmMO_Close.adqDataOut['QTYPLAN']) ''', ''99999999999.999'') , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''')'); dmMO_Close.adqDataIn.SQL.Add('INSERT INTO MO_HT_D VALUES (''' dmMO_Close.adqDataOut['MO_ID'] ''', ''' dmMO_Close.adqDataOut['MO_SN'] ''' , ''' dmMO_Close.adqDataOut['OR_ID'] ''' , ''' dmMO_Close.adqDataOut['OR_SN'] ''' , ''' dmMO_Close.adqDataOut['MA_ID'] ''' , ''' dmMO_Close.adqDataOut['WA_ID'] ''' , ''' dmMO_Close.adqDataOut['UN_ID'] ''' , ''' dmMO_Close.adqDataOut['WA_ID_S'] ''' , ''' dmMO_Close.adqDataOut['UN_ID'] ''' , ''' dmMO_Close.adqDataOut['BATCHID'] ''', ''' dmMO_Close.adqDataOut['PJ_ID'] ''', ''' DATE1 ''' , ''' DATE2 ''' , ''' DATE3 ''' , ''' DATE4 ''' , To_number(''' inttostr(dmMO_Close.adqDataOut['QTY']) ''', ''99999999999.999'') , To_number(''' inttostr(dmMO_Close.adqDataOut['QTYDONE']) ''', ''99999999999.999'') , To_number(''' inttostr(dmMO_Close.adqDataOut['QTYBAD']) ''', ''99999999999.999'') , To_number(''' inttostr(dmMO_Close.adqDataOut['QTYPLAN']) ''', ''99999999999.999'') , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''')'); dmMO_Close.adqDataIn.ExecSQL;<--這個元件不會執行,執行緒會消失,就不會再執行下去了! dmMO_Close.adqDataOut.Next; END; SHOWMESSAGE('製令結案過帳完成!'); dmMO_Close.adqOSE_ID.Close; dmMO_Close.adqOSE_ID.SQL.Clear; dmMO_Close.adqOSE_ID.SQL.Add('update MO_CLOSE_D SET Posting = ''Y'' WHERE (MOC_ID BETWEEN ''' txtOSC_ID_S.Text ''' AND ''' txtOSC_ID_E.Text ''') AND' ' (RDATE BETWEEN ''' DATE_S ''' AND ''' DATE_E ''')'); dmMO_Close.adqOSE_ID.ExecSQL; end; end; end ELSE SHOWMESSAGE('無此委外結案單或委外結案單己過帳!'); end; end. ---------------------------- 麻煩了
kensoong
初階會員


發表:31
回覆:70
積分:45
註冊:2003-05-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-28 17:19:56 IP:61.56.xxx.xxx 未訂閱
您的INSERT INTO指令有誤!!! 基本語法:請參考... INSERT INTO target [(field1[, field2[, ...]])] VALUES (value1[, value2[, ...]) ex: mSQL := 'INSERT INTO MO_HT_M (field1,field2) VALUES (' .... 請試試...
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-28 18:14:59 IP:63.84.xxx.xxx 未訂閱
您好﹗    這樣找錯誤﹐感覺會暈暈喔 建議您把出錯信息貼出來﹐然后貼出引發錯誤的部分程式碼即可﹐眼睛省力一些﹐幫您找錯誤當然就更有效率了﹗ 如果涉及的程式碼部分真的太多的話﹐請您用格式列的<>插入>的方法將程式碼進行整排﹐貼出后會漂亮一些﹗ 參考看看﹗ <><>===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
jimsam
一般會員


發表:3
回覆:4
積分:1
註冊:2003-09-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-29 00:03:40 IP:203.70.xxx.xxx 未訂閱
我認為的出錯程式碼段.... ---------------------------------------------- dmMO_Close.adqDataIn.SQL.Clear; mSQL := 'INSERT INTO MO_HT_M VALUES (''' trim(dmMO_Close.adqDataOut['MO_ID']) ''', ''' trim(dmMO_Close.adqDataOut ['DEP_ID']) ''' , ''' trim(dmMO_Close.adqDataOut['EMP_ID']) ''' , '''; mSQL := mSQL DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')'; dmMO_Close.adqDataIn.SQL.Add('INSERT INTO MO_HT_M VALUES ''' dmMO_Close.adqDataOut['MO_ID'] ''', ''' dmMO_Close.adqDataOut['DEP_ID'] ''' , ''' dmMO_Close.adqDataOut['EMP_ID'] ''' , ''' DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')'); dmMO_Close.adqDataIn.SQL.Add (mSQL); dmMO_Close.adqDataIn.ExecSQL; -------------------- 我的這個程式沒有任何的錯誤訊息... 不過程式會執行到上段程式碼的最後一行... 似乎像當掉..又像執行緒消失了... 就沒在往下執行了... 實在不知問題出在那呀~~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-29 01:02:47 IP:63.84.xxx.xxx 未訂閱
您好! dmMO_Close.adqDataIn.SQL.Clear; mSQL := 'INSERT INTO MO_HT_M VALUES (''' trim(dmMO_Close.adqDataOut['MO_ID']) ''', ''' trim(dmMO_Close.adqDataOut ['DEP_ID']) ''' , ''' trim(dmMO_Close.adqDataOut['EMP_ID']) ''' , '''; mSQL := mSQL DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')'; dmMO_Close.adqDataIn.SQL.Add('INSERT INTO MO_HT_M VALUES ''' dmMO_Close.adqDataOut['MO_ID'] ''', ''' dmMO_Close.adqDataOut['DEP_ID'] ''' , ''' dmMO_Close.adqDataOut['EMP_ID'] ''' , ''' DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')'); dmMO_Close.adqDataIn.SQL.Add (mSQL); dmMO_Close.adqDataIn.ExecSQL; 怎么紅色處和藍色處是相同的SQL字串呢? 這樣的話, 在藍色處用程式碼設定了dmMO_Close.adqDataIn的SQL語句, 然后在綠色處又加上同樣的一段SQL語句[Add(mSQL)], 這樣在SQL中就有兩段合并的SQL了, 把紅色處全部刪除, 只留下藍色處和綠色處再試試, 如下:
begin
  dmMO_Close.adqDataIn.Close;
  dmMO_Close.adqDataIn.SQL.Clear;
  dmMO_Close.adqDataIn.SQL.Add('INSERT INTO MO_HT_M VALUES (''' dmMO_Close.adqDataOut['MO_ID'] ''', ''' dmMO_Close.adqDataOut['DEP_ID'] ''' , ''' dmMO_Close.adqDataOut['EMP_ID'] ''' , ''' DATE5 ''' , ''' dmMO_Close.adqDataOut['OK'] ''' , ''' dmMO_Close.adqDataOut['GIVEUP'] ''' , ''' dmMO_Close.adqDataOut['CLOSE'] ''')');
  dmMO_Close.adqDataIn.ExecSQL;
end;
參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-11-23 0:26:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!