請問為何我的ADOQuery會不執行? |
尚未結案
|
jimsam
一般會員 發表:3 回覆:4 積分:1 註冊:2003-09-23 發送簡訊給我 |
以下為我的程式碼... -----------------------------------------
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 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
jimsam
一般會員 發表:3 回覆:4 積分:1 註冊:2003-09-23 發送簡訊給我 |
我認為的出錯程式碼段....
----------------------------------------------
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 發送簡訊給我 |
您好!
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;參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |