query.first;
while not query.eof do
begin
stringgrid.cell[i,j]:=query.fieldbyname().asstring;
i=i+1;
query.next;
end;
while not query.eof do
begin
stringgrid.cell[i,j]:=query.fieldbyname().asstring;
i=i+1;
query.next;
end;
procedure PrintGrid(sGrid: TStringGrid; sTitle: String);
var
X1, X2 : Integer;
Y1, Y2 : Integer;
TmpI : Integer;
F : Integer;
TR : TRect;
begin
Printer.Title:=sTitle;
Printer.BeginDoc;
Printer.Canvas.Pen.Color:=0;
Printer.Canvas.Font.Name:='Times New Roman';
Printer.Canvas.Font.Size:=12;
Printer.Canvas.Font.Style:=[fsBold, fsUnderline];
Printer.Canvas.TextOut(0, 100, Printer.Title);
For F:=1 to sGrid.ColCount-1 do begin
X1:=0;
For TmpI:=1 to (F-1) do
X1:=X1+5*(sGrid.ColWidths[TmpI]);
Y1:=300;
X2:=0;
For TmpI:=1 to F do
X2:=X2+5*(sGrid.ColWidths[TmpI]);
Y2:=450;
TR:=Rect(X1, Y1, X2-30, Y2);
Printer.Canvas.Font.Style:=[fsBold];
Printer.Canvas.Font.Size:=7;
Printer.Canvas.TextRect(TR, X1+50, 350, sGrid.Cells[F, 0]);
Printer.Canvas.Font.Style:=[];
For TmpI:=1 to sGrid.RowCount-1 do begin
Y1:=150*TmpI+300;
Y2:=150*(TmpI+1)+300;
TR:=Rect(X1, Y1, X2-30, Y2);
Printer.Canvas.TextRect(TR, X1+50, Y1+50, sGrid.Cells[F, TmpI]);
end;
end;
Printer.EndDoc;
end;
1、使用ado检索数据库,把检索结果通过stringgrid来显示。
代码如下:
with stringgrid1 do
begin
rowcount := 2;
rows[1].clear;
try
with DataModule1.adoquery1 do
begin
close;
sql.clear;
sql.add('select * from log_tab where op_time between :date1 and :date2');
sql.add(' order by op_time');
parameters.parambyname('date1').value := datetimepicker1.date;
parameters.parambyname('date2').value := datetimepicker2.date;
open;
while not eof do
begin
cells[0, rowcount - 1] := fieldbyname('operate').asstring;
cells[1, rowcount - 1] := fieldbyname('runner').asstring;
cells[2, rowcount - 1] := fieldbyname('info').asstring;
cells[3, rowcount - 1] := fieldbyname('op_time').asstring;
rowcount := rowcount + 1;
rows[rowcount - 1].clear;
next;
end;
close;
end;
except
application.MessageBox('检索数据库出错,请检查!', '提示', 0 + mb_iconinformation);
exit;
end;
rowcount := rowcount + 1;
rows[rowcount - 1].clear;
cells[0, rowcount - 1] := '合计';
cells[1, rowcount - 1] := inttostr(rowcount - 3);
rowcount := rowcount + 1;
rows[rowcount - 1].clear;
end;2、新建一窗口,使用quickreport来布置打印位置。
注意:stringgrid的数据要在quickreport的onneeddate事件中读取。
3、有问题可发短信息给我。
其实如果是这样的话,最终还是要建立一个QuickReport来实现打印的
那如果用DBGrid来显示有什么不同呢?还是说DBGrid与QuickReport的连接不好?
另:
(不好意思,问题多了一点)
在显示的时候,我以查询实现显示如何做呢?
比如EDit框中输入英语系,点击Button以后显示的是库表中英语系的全部信息