这种情况,我觉得应该只能用最笨的方法了。
分析问题:
因为布干胶有一定的尺寸,而且最多只能打印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;