procedure Tputout.Readputout;
var
I:integer;
begin
if ptcode='' then
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Text:='select 编号,日期,单位,类别,经手,做单,备注,金额 from putout ';
ADOQuery2.Open;
ADOQuery2.Last;
Datetimepicker1.DateTime:=ADOQuery2.FieldByName('日期').asdatetime;
Combobox1.Style:=csDropDown;
Combobox1.Text:=ADOQuery2.fieldbyname('单位').asstring;
Combobox2.Style:=csDropDown;
Combobox2.Text:=ADOQuery2.fieldbyname('类别').asstring;
Combobox3.Style:=csDropDown;
Combobox3.Text:=ADOQuery2.fieldbyname('经手').asstring;
Edit1.Text:=ADOQuery2.fieldbyname('备注').asstring;
Label11.Caption:=ADOQuery2.fieldbyname('编号').asstring;
Label12.Caption:=ADOQuery2.fieldbyname('金额').asstring;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 编码,名称,规格,单位,单价,数量,金额,备注 from putoutdl where 编号='''+Label11.Caption+'''';
ADOQuery1.Open;
with ADoQuery1 do
begin
StringGrid1.RowCount:=ADoQuery1.RecordCount+1;
//StringGrid1.ColCount:=ADOQuery1.Fields.Count+1;
while not Eof do
begin
for i:=1 to StringGrid1.RowCount do
begin
stringgrid1.Cells[0,i]:=inttostr(i);
stringgrid1.cells[1,i]:=ADOQuery1.Fields[0].AsString ;
stringgrid1.cells[2,i]:=ADOQuery1.Fields[1].AsString ;
stringgrid1.cells[3,i]:=ADOQuery1.Fields[2].AsString ;
stringgrid1.cells[4,i]:=ADOQuery1.Fields[3].AsString ;
stringgrid1.cells[5,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[4].AsString));
stringgrid1.cells[6,i]:=ADOQuery1.Fields[5].AsString;
stringgrid1.cells[7,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[6].AsString));
stringgrid1.cells[8,i]:=ADOQuery1.Fields[7].AsString ;
ADOQuery1.Next;
end;
end; end;
end
这一段代码是为了,在窗口打开时读入一张入库单数据,现在问题是可以读入表头部份,明细数据读不出来(红色部分),但是如果把红色部份做一个按钮click事件来执行,就可以读出明细数据到表格中,我找了一个上午硬是没有找出问题在哪里?
var
I:integer;
begin
if ptcode='' then
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Text:='select 编号,日期,单位,类别,经手,做单,备注,金额 from putout ';
ADOQuery2.Open;
ADOQuery2.Last;
Datetimepicker1.DateTime:=ADOQuery2.FieldByName('日期').asdatetime;
Combobox1.Style:=csDropDown;
Combobox1.Text:=ADOQuery2.fieldbyname('单位').asstring;
Combobox2.Style:=csDropDown;
Combobox2.Text:=ADOQuery2.fieldbyname('类别').asstring;
Combobox3.Style:=csDropDown;
Combobox3.Text:=ADOQuery2.fieldbyname('经手').asstring;
Edit1.Text:=ADOQuery2.fieldbyname('备注').asstring;
Label11.Caption:=ADOQuery2.fieldbyname('编号').asstring;
Label12.Caption:=ADOQuery2.fieldbyname('金额').asstring;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 编码,名称,规格,单位,单价,数量,金额,备注 from putoutdl where 编号='''+Label11.Caption+'''';
ADOQuery1.Open;
with ADoQuery1 do
begin
StringGrid1.RowCount:=ADoQuery1.RecordCount+1;
//StringGrid1.ColCount:=ADOQuery1.Fields.Count+1;
while not Eof do
begin
for i:=1 to StringGrid1.RowCount do
begin
stringgrid1.Cells[0,i]:=inttostr(i);
stringgrid1.cells[1,i]:=ADOQuery1.Fields[0].AsString ;
stringgrid1.cells[2,i]:=ADOQuery1.Fields[1].AsString ;
stringgrid1.cells[3,i]:=ADOQuery1.Fields[2].AsString ;
stringgrid1.cells[4,i]:=ADOQuery1.Fields[3].AsString ;
stringgrid1.cells[5,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[4].AsString));
stringgrid1.cells[6,i]:=ADOQuery1.Fields[5].AsString;
stringgrid1.cells[7,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[6].AsString));
stringgrid1.cells[8,i]:=ADOQuery1.Fields[7].AsString ;
ADOQuery1.Next;
end;
end; end;
end
这一段代码是为了,在窗口打开时读入一张入库单数据,现在问题是可以读入表头部份,明细数据读不出来(红色部分),但是如果把红色部份做一个按钮click事件来执行,就可以读出明细数据到表格中,我找了一个上午硬是没有找出问题在哪里?
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 编码,名称,规格,单位,单价,数量,金额,备注 from putoutdl where 编号='''+Label11.Caption+'''';
ADOQuery1.Open;
with ADoQuery1 do
begin
StringGrid1.RowCount:=ADoQuery1.RecordCount+1;
//StringGrid1.ColCount:=ADOQuery1.Fields.Count+1;
while not Eof do
begin
for i:=1 to StringGrid1.RowCount do
begin
stringgrid1.Cells[0,i]:=inttostr(i);
stringgrid1.cells[1,i]:=ADOQuery1.Fields[0].AsString ;
stringgrid1.cells[2,i]:=ADOQuery1.Fields[1].AsString ;
stringgrid1.cells[3,i]:=ADOQuery1.Fields[2].AsString ;
stringgrid1.cells[4,i]:=ADOQuery1.Fields[3].AsString ;
stringgrid1.cells[5,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[4].AsString));
stringgrid1.cells[6,i]:=ADOQuery1.Fields[5].AsString;
stringgrid1.cells[7,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[6].AsString));
stringgrid1.cells[8,i]:=ADOQuery1.Fields[7].AsString ;
ADOQuery1.Next;
end;
end;
这部份可以用一个按钮CLICK事件实现 ....
ADOQuery1.Next;{问题出在这里,应该放在FOR 以外的}{
while not Eof do
begin
for i:=1 to StringGrid1.RowCount do
begin
//.............
end;
ADOQuery1.Next; end;}
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select 编码,名称,规格,单位,单价,数量,金额,备注 from putoutdl where 编号='''+Label11.Caption+'''';
ADOQuery1.Open;
with ADoQuery1 do
begin
StringGrid1.RowCount:=ADoQuery1.RecordCount+1;
//StringGrid1.ColCount:=ADOQuery1.Fields.Count+1;
while not Eof do
begin
for i:=1 to StringGrid1.RowCount do
begin
stringgrid1.Cells[0,i]:=inttostr(i);
stringgrid1.cells[1,i]:=ADOQuery1.Fields[0].AsString ;
stringgrid1.cells[2,i]:=ADOQuery1.Fields[1].AsString ;
stringgrid1.cells[3,i]:=ADOQuery1.Fields[2].AsString ;
stringgrid1.cells[4,i]:=ADOQuery1.Fields[3].AsString ;
stringgrid1.cells[5,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[4].AsString));
stringgrid1.cells[6,i]:=ADOQuery1.Fields[5].AsString;
stringgrid1.cells[7,i]:=formatfloat('0.00',strtofloat(ADOQuery1.Fields[6].AsString));
stringgrid1.cells[8,i]:=ADOQuery1.Fields[7].AsString ;
end;
ADOQuery1.Next;
end;