DBGrid控制元件里有多行成品品號和投產數量,成品品號對應的BOM已經建立,請問如何回圈DBGrid1每行成品品號,帶出對應的BOM清單和用量?以下是我的代碼,但是材料用量總是對應不上,各位大佬請指出問題所在,謝謝!
procedure TBOMTH.BitBtn2Click(Sender: TObject);
var
b,c,i,k:integer ;
d,e,f,g:string ;
kb,ka:string;
a:real;
begin
ka:=formatdatetime('yyyymmdd',date); //憑證號
with ADOQuery2 do
begin
close;
sql.Clear;
sql.Add('select max(TC001) as kaw from BOMTC where TC001 like'''+ka+'%''');
open;
if length(FieldByName('kaw').AsString)=0 then
begin
ka:=ka+'001';
end
else
begin
kb:=inttostr(strtoint(copy(FieldByName('kaw').AsString,9,3))+1);
while length(kb)<3 do
kb:='0'+kb;
ka:=ka+kb;
end;
if dbgrid1.DataSource.DataSet.FieldByName('憑證號').AsString='' then
application.MessageBox('沒有生產計劃可生成!','提示',0+64)
else
begin
ADOQuery1.First;
while not ADOQuery1.Eof do
// begin
with ADOQuery2 do
begin
close;
sql.Clear;
sql.Add('select TA001,TA006,TA007,TA008,TA009,TA011 from BOMTA WHERE TA001='''+DBGrid1.Fields[1].Value+'''');
open;
//end;
if ADOQuery1.RecordCount>0 then
d:=DBGrid1.Fields[0].Value ; //原憑證號
e:=DBGrid1.Fields[8].Value ; //物料需求日期
//a:=strtofloat(ADOQuery2.FieldByName('TA011').AsString)*DBGrid1.Fields[5].Value;
ADOQuery1.Next;
//end;
// begin
ADOQuery2.First;
while not ADOQuery2.Eof do
with ADOQuery3 do
begin
close;
sql.clear;
sql.add('insert into BOMTC(TC001,TC002,TC003,TC004,TC005,TC006,TC007,TC008,TC009) VALUES(:a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8,:a9)');
Parameters.ParamByName('a1').Value:=ka; // 憑證號
Parameters.ParamByName('a2').Value:=d ; //原憑證號 //ADOQuery4.FieldByName('TB001').AsString;
Parameters.ParamByName('a3').Value:=ADOQuery2.FieldByName('TA006').AsString; //材料品號
Parameters.ParamByName('a4').Value:=ADOQuery2.FieldByName('TA007').AsString; //材料品名
Parameters.ParamByName('a5').Value:=ADOQuery2.FieldByName('TA008').AsString; //材料規格
Parameters.ParamByName('a6').Value:=ADOQuery2.FieldByName('TA009').AsString; //單位
Parameters.ParamByName('a7').Value:=strtofloat(ADOQuery2.FieldByName('TA011').AsString)*DBGrid1.Fields[5].Value; //材料用量 //strtoint(ADOQuery4.FieldByName('TB006').AsString);
Parameters.ParamByName('a8').Value:=e; //物料需求日期 //ADOQuery4.FieldByName('TB009').AsString;
Parameters.ParamByName('a9').Value:=1;
execsql;
ADOQuery2.Next;
// Next;
end;
end;
uj5u.com熱心網友回復:
能帶對應帶出材料品號,但是材料用量卻無法我成品的投產用量對應上。uj5u.com熱心網友回復:
多簡單邏輯,按想法實作就好了uj5u.com熱心網友回復:
我剛接觸Delphi7,對回圈不太會用,麻煩各位指點一二,謝謝!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/26000.html
標籤:數據庫相關
上一篇:來個大佬告訴這個怎么弄
下一篇:fastreport遇到問題
