我有一表 字段--->F1, F2, F3, F4 F1, F2, F3, F4
p001 20 1 a p001 20 1 a
p001 22 2 b 22 2 b
p001 23 3 c 實現數據源--> 23 3 c
p002 24 4 d p002 24 4 d
p002 25 5 e 25 5 e
p003 26 6 f p003 26 6 f
把數據源放到rave報表中,實現
| F1 | F2 | F3 | F4 |
--------------------
| 20 1 a
| ---------------
p001| 22 2 b
| ----------------
| 23 3 c
---------------------
| 24 4 d
p002| ---------------
| 25 5 e
---------------------
p003| 26 6 f
愁死我了,希望你給我提點建議,如果能鉤解決,在下感激不盡!中秋快樂!
解决方案 »
- 已设置DBGrideh的某一字段为checkboxes,如何将这个字段内符合条件的cell内的checkbox不可见或者ReadOnly
- integer转single类型??
- 请问怎样把yyyymmdd格式的日期转化为yyyy-mm-dd格式的?
- 怎样把word的内容存进sql数据库,并且读出来
- 怎么用extracticon得到程序实际使用的图标?
- 一个关于delphi中treeview控件的问题,问高手,急呀!!!!
- 有人用wwdbgrid么
- 用Indy的IdBase64Decoder解码??请各位看下面例子。
- 求TStringGrid的基本用法
- 可以在StringGrid中加入进度条吗?
- 救命!在Delphi中使用IBM Informix OLEDB Provider出报表时,数据小了10倍!
- 關於nmsmtp1發郵件得問題,我現在可以發正文,但是我卻不知道怎麼發附件,可以用該控件發附件嗎?
from tmp a
在線等!
再生成rave的简单报表就可以了
我了解,不過公司很注重外表,要生成如題之樣子,p001,p002,p003盡量讓其居中,還有
注意p001,p002,p003之間的線! 等你!
不會吧,csdn裡面高手如雲,怎麼中秋節都不在啊,此問題非rave高人才能解決
begin
RvSystem1.Execute;
end;procedure TForm1.RvSystem1Print(Sender: TObject);
var
i,row: Integer;
base, rSpace, cSpace: Double;
f1: String;
begin
rSpace := 0.5; //行距
cSpace := 1.0; //列距 with Sender as TBaseReport do
begin
SectionTop := 0.75; // 设置表头
SetFont('黑體', 24);
Underline := false;
Home;
YPos := 1.0;
//FontRotation := 15;
PrintCenter('title', PageWidth / 2); SetFont('宋體', 9); //设置页角
SectionBottom := 10.75;
PrintFooter(' page' + IntToStr(CurrentPage) + ' ', pjLeft);
PrintFooter('date:' + DateToStr(date) + ' ', pjRight); SetPen(clBlack, psSolid, -1, pmCopy); //设置列头
for i := 0 to 3 do
begin
GotoXY(cSpace * (i + 1), 2);
print('f' + IntToStr(i + 1));
GotoXY(cSpace * (i + 0.5), 2);
print('|');
end;
GotoXY(1.0 * (i + 0.5), 2);
print('|');
println(''); //画横线
SetPen(clBlack, psDot, -1, pmCopy);
MoveTo(1.0, 2.1);
Lineto(4.5 * cSpace, 2.1);
i := 0;
f1 := '';
row := 1;
ADOQuery1.First;
While not(ADOQuery1.Eof) do
begin
if Trim(ADOQuery1.FieldByName('f1').AsString) <> '' then
begin
if i > 0 then
begin
GotoXY(1.0, base + rSpace * (i - 1) / 2);
Print(f1);
end;
f1 := ADOQuery1.FieldByName('f1').AsString;
i := 1;
base := 2 + rSpace * row;
if (row > 1) and (row <= (ADOQuery1.RecordCount -1)) then
begin
MoveTo(1.0, 2.1 + rSpace * (row - 1));
Lineto(4.5 * cSpace, 2.1 + rSpace * (row -1));
end;
end
else
i := i + 1;
GotoXY(2 * cSpace, 2 + rSpace * row);
Print(ADOQuery1.FieldByName('f2').AsString);
GotoXY(3.0 * cSpace, 2 + rSpace * row);
Print(ADOQuery1.FieldByName('f3').AsString);
GotoXY(4.0 * cSpace, 2 + rSpace * row);
Print(ADOQuery1.FieldByName('f4').AsString);
Println('');
if ((row > 0) and (row <= (ADOQuery1.RecordCount -1))) then
begin
MoveTo(1.5, 2.1 + rSpace * row);
Lineto(4.5 * cSpace, 2.1 + rSpace * row);
end;
ADOQuery1.Next;
row := row + 1;
end;
GotoXY(1.0, base + rSpace * (i - 1) / 2);
Print(f1);
SetPen(clBlack, psDash, -1, pmCopy);
MoveTo(1.0 + rSpace, 2);
LineTo(1.0 + rSpace, 2 + rSpace * (row -1) );
end;
end;
好感謝! 解決之後在開帖!分不是重要的,我知道你很厲害!
我的qq;17721318
字段名稱應調用adoquery1字段