fastreport 问题 ( 积分: 18 )

  • 主题发起人 主题发起人 tofiofans
  • 开始时间 开始时间
T

tofiofans

Unregistered / Unconfirmed
GUEST, unregistred user!
sql数据库格式为
B T Q
1 a 10
2 a 5
2 b 2
2 d 1
3 b 6
4 c 5
5 c 5
.
.
.
 
sql数据库格式为
B T Q
1 a 10
2 a 5
2 b 2
2 d 1
3 b 6
4 c 5
5 c 5
.
.
.
 
布干胶有一定的尺寸
假设一块布干胶可以打印2条记录
B值不相同的记录 必须打印在不同的干布胶上
B值相同的记录 如果有2条 打同一干布胶上
B值相同的记录 如果有3条 2条打同一干布胶上 另外一条打接下去的干布胶上
以此类推
干布胶 gbj
gbj1: 1 a 10
gbj2: 2 a 5
2 b 2
gbj3: 2 d 1
.
.
.
 
请问该怎么设置
谢谢!!!
 
布干胶的尺寸是固定的
 
弄不明白的地方在于
如何确定每行的高度
以及超过这个高度 自动换下一块干布胶
 
大家帮忙看看啊
 
急啊,,
都没人用fastreport
还是问题太简单了?
 
怎么就没人愿意伸出援手呢??
 
你打印机一次打印放一块干布胶还是多个干布胶可以排在一起一起打印?
 
干布胶是几块连在一起的
 
1.分組,以B值為標准,SQL語句中用GROUP BY B,FASTREPORT中設定以B值分組,並且不同組分頁
2.設定紙張高度為不干膠高度(好像FR3X才可以)
 
这种情况,我觉得应该只能用最笨的方法了。
分析问题:
因为布干胶有一定的尺寸,而且最多只能打印2条记录。
那么也就是说一块布干胶要么打印2条B值相同的记录,要么就打印一条记录,另一条空记录。
解决方法:
把每块布干胶都当成打印2条记录来处理(B值不相同的空记录代替),这样子的话就要我们重新对这个表的记录进行整理,在打印前重新循环这个表生成另一个要打印的新表。
var
TempStr :String;//存放上一条记录的B字段值,主要作用是和当前记录的B字段值作比较。
begin
TempStr := '';
OldTable.First;
While Not OldTable.Eofdo
begin
If TempStr = OldTable.FieldByName('B').AsString then
//判断上条记录如果要当前记录相同则追加OldTable(旧表)数据到NewTable(新表)。
begin
NewTable.Append;
NewTable.FieldByName('B').AsString := OldTable.FieldByName('B').AsString;
NewTable.FieldByName('Q').AsString := OldTable.FieldByName('Q').AsString;
NewTable.FieldByName('T').AsString := OldTable.FieldByName('T').AsString;
NewTable.Post;
End else
//判断上条记录如果要当前记录不相同则追加NewTable(新表)一条空记录。
begin
NewTable.Append;
NewTable.Post;
end;
TempStr := OldTable.FieldByName('B').AsString;
OldTable.Next;
end;
end;
 
一片布干胶有12小块
小块的尺寸是8*6cm
8*3=24 长
6*4=24 高
横向3小块
纵向4小块
B值一样的 如果超过一小块 就把剩余打印到下一小块 依次类推
如果B值不一样 就换到另一小块
问题就在于如何把整张纸设置成上面说的12个小块
以及如何设置每小块能写进的最大记录数
 
修罗:
'因为布干胶有一定的尺寸,而且最多只能打印2条记录。
那么也就是说一块布干胶要么打印2条B值相同的记录,要么就打印一条记录,另一条空记录。'
如果是最多能打印8条记录呢?
那不是要添加7条空记录
这样的效率太低了
 
多人接受答案了。
 
后退
顶部