一个小问题,一个人学delphi,真难

时间:2022-10-03 17:36:17
如果用户购买一件商品,在小票上显示就是这样:
类型      尺寸     单价    数量    金额
135彩色    3R       0.8    101      80.8
这样我很容易的用这样的语句在程序里实现:
form3.QRLabel9.Caption:=form3.Edit1.Text;
但是如果用户购买2件或者更多商品的时候,小票上显示的就该是这样的:
类型      尺寸     单价    数量    金额
135彩色    3R       0.8    101      80.8
120黑白    5R       0.7      4      2.8
我的窗体上的输入是按照只有一件商品的格式做成的,当数据输入完成的时候
,在提交到数据库前,在报表里用form3.QRLabel9.Caption:=form3.Edit1.Text;
打印出来,商品超过1后,这样肯定是不行的,数据已经入库了,当然就打印不出来了;
我想的办法是在后台建立一个临时表,我在窗体上输入一条记录后,数据就同时保存
到数据库和临时表里去,然后在所有的数据输入完成后,打印临时表并清空该表,行不行?
如果可行的话,程序部分应该如何实现,最好来段源码!

18 个解决方案

#1


我想你还是先去看一下delphi的demos里的报表程序吧,你好像是连报表怎么用也不知道的。

#2


请不要这样说话!你能说就说,就事论事吧!
不好意思,报表怎么用我还是知道的,不用去看了.

#3


你可以对每次输入的数据加标志,打印前过滤出来,打印后再取消不就得了,报表可以打印多条记录。从网上找资料查查。

#4


用临时表过滤出你所要打印的数据,用qrdbText连接就可以了,它不管你也多少条记录

#5


用临时表过滤出你所要打印的数据

#6


up

#7


找西门庆大哥嘛^_^
很简单的,你要用到的一TQRBand要设为Detail类型,然后在上面放几个TQRDBEdit
控件(只要一组),用它们链接到相应字段。然后所有相关的记录都有了。为有分隔线,可设TQRBand的Frams为底边。

#8


gz

#9


用临时表处理,比较方便简单,想如何处理就如何处理

#10


生成一个临时表的方法如下:
TTablePrint.TableName := 'table';
TTablePrint.Close;
TTablePrint.EmptyTable;
TTablePrint.Open;
把数据写入表中
执行打印后
TTablePrint.EmptyTable;

#11


leeky说的对.

#12


十分感谢朋友们并特别感谢 ouyang75928的比较有针对性的回答.
请问各位大虾们你们遇到这样的问题,是怎么解决的?因为这个问题每个只要
有过项目经验的人都会碰到,也许我的想法从一开始就是错的,还请指正!

#13


jia you

#14


据我了解,access后台不能建立临时表,这样我又陷入绝地,内存表我又不会,怎么办?
拿位大虾救救小弟.

#15


你笨呀,你在你的数据库里事先建好这个表不成吗?
非得拉屎了才挖茅坑吗?:P
那个表的唯一用途就是给你打印数据用,所以每次利用它后(或利用之前)就“过河拆桥”(清除所有记录),
另外我上一个贴子里的TQRDBEdit改为TQRDBText,"Detail"改为“rbDetail”,
告诉你小妹呀,程序员的功夫不仅是写几行代码。
就像昨天看到一个两星的高手对于求过两点且圆心角已知的圆之圆心的问题也无能为力,可要想一想了。

#16


to  leeky(雅痞·千年虫) :
谢谢你的指点,你说的方法我其实早就想到了,就是当时不知道是否可行,这样你说了
我才敢确定啊,多谢了!

#17


不知可行否?试试不行么?
它不是你老板。
简单问题就简单解决呗。

#18


难啊,难啊,就是难:P

#1


我想你还是先去看一下delphi的demos里的报表程序吧,你好像是连报表怎么用也不知道的。

#2


请不要这样说话!你能说就说,就事论事吧!
不好意思,报表怎么用我还是知道的,不用去看了.

#3


你可以对每次输入的数据加标志,打印前过滤出来,打印后再取消不就得了,报表可以打印多条记录。从网上找资料查查。

#4


用临时表过滤出你所要打印的数据,用qrdbText连接就可以了,它不管你也多少条记录

#5


用临时表过滤出你所要打印的数据

#6


up

#7


找西门庆大哥嘛^_^
很简单的,你要用到的一TQRBand要设为Detail类型,然后在上面放几个TQRDBEdit
控件(只要一组),用它们链接到相应字段。然后所有相关的记录都有了。为有分隔线,可设TQRBand的Frams为底边。

#8


gz

#9


用临时表处理,比较方便简单,想如何处理就如何处理

#10


生成一个临时表的方法如下:
TTablePrint.TableName := 'table';
TTablePrint.Close;
TTablePrint.EmptyTable;
TTablePrint.Open;
把数据写入表中
执行打印后
TTablePrint.EmptyTable;

#11


leeky说的对.

#12


十分感谢朋友们并特别感谢 ouyang75928的比较有针对性的回答.
请问各位大虾们你们遇到这样的问题,是怎么解决的?因为这个问题每个只要
有过项目经验的人都会碰到,也许我的想法从一开始就是错的,还请指正!

#13


jia you

#14


据我了解,access后台不能建立临时表,这样我又陷入绝地,内存表我又不会,怎么办?
拿位大虾救救小弟.

#15


你笨呀,你在你的数据库里事先建好这个表不成吗?
非得拉屎了才挖茅坑吗?:P
那个表的唯一用途就是给你打印数据用,所以每次利用它后(或利用之前)就“过河拆桥”(清除所有记录),
另外我上一个贴子里的TQRDBEdit改为TQRDBText,"Detail"改为“rbDetail”,
告诉你小妹呀,程序员的功夫不仅是写几行代码。
就像昨天看到一个两星的高手对于求过两点且圆心角已知的圆之圆心的问题也无能为力,可要想一想了。

#16


to  leeky(雅痞·千年虫) :
谢谢你的指点,你说的方法我其实早就想到了,就是当时不知道是否可行,这样你说了
我才敢确定啊,多谢了!

#17


不知可行否?试试不行么?
它不是你老板。
简单问题就简单解决呗。

#18


难啊,难啊,就是难:P