如何将ADOQUERY中查询的结果打印输出,或者说将一个库表中的记录如何打印出,我的代码有什么错误(100分)

L

lili365

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,x,y:integer;
str:string;
begin

x:=10;
y:=10;
str:='';
with printerdo

begin

begin
doc;
for j:=0 to adoquery2.RecordCount-1do

begin

for i:=0 to adoquery2.FieldCount-1do

begin

str:=str+adoquery2.Fields.asstring;
end;

canvas.TextOut(x,y,str);
adoquery2.Next;
end;

enddoc;
end;

end;


这段代码不能将我的记录正常打印,请大侠们指正
 
这里的高手都到那去了
 
每人能解决
 
X,Y始终是10?那么不打到一行上去啦?
 
我将Y:=y+10也是一样的
 
你的x,y的值都是固定的肯定会打成一行
你要把你的x,y加到循环中去,而且要判断,到了最后一个字段要把x的值变为初始值
 
同意楼上
 
最好用dbgrideh
 
你的Canvas.textout一直打在一个位置,x,y也要变呀!
 
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,x,y:integer;
str:string;
begin

x:=10;
y:=10;
str:='';
adoquery2.First;
with printerdo

begin

begin
doc;
for j:=0 to adoquery2.RecordCount-1do

begin

for i:=0 to adoquery2.FieldCount-1do

begin

str:=str+adoquery2.Fields.asstring;
x:=x+100;
end;

canvas.TextOut(x,y,str);
str:='';
y:=y+100;
x:=10;
adoquery2.Next;
end;


enddoc;
end;

end;

没问题的我测试过位置自己调,希望对你有帮助
 
希望你能静下心来想想老兄希望你能静下心来想想
你犯了错误在于:
1.首先你要把数据指向首条记录
2.变量都没有复位也没有控制(我没有判断是否出纸,希望你自己加上)
2.X,Y根本没变
3.STR变量当记录跳到下一行时根本没有清空变量还在加要时几万条你是想死机呀呵呵
希望你能总结一下,呵呵
 
to lyjnew:
两个字---佩服!
 
谢谢各位,经过大家的提示我发现我程序的主要原因不在X、Y的变化上,而是Y值变化多少上
我将其加100后结果正确,X值无须在变
 
顶部