DELPHI的简单简单小问题,答对必奖!!!

LWWANDVB 2000-08-18 10:25:00
HELLO!我在数据库编程中遇到了三个问题,你能为我指点一下吗?
1、在TDBGrid控件中显示数据时如何能显示行号?
例:有一个查询表:
姓名 年龄
ABC 19
DEF 12
GHI 17
… …

我想在TDBGrid控件中作如下显示:
顺序 姓名 年龄
1 ABC 19
2 DEF 12
3 GHI 17
… … …

当上表为一个数据表时又如何做呢?

2、使用QuickReport报表如何能做到动态插入空行?
例:有一个数据表,种类字段是有序的:
产品 种类
AAA 1
BBB 1
CCC 1
DDD 2
EEE 2
… …

我想在报表输出时如下格式:
产品 种类
AAA 1
BBB 1
CCC 1
<<--按种类的不同分类出现了一个空行,如何能做到?
DDD 2
EEE 2
… …

3、DELPHI有什么语句能直接把字串输出到打印机的端口?

...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sophies 2000-08-20
  • 打赏
  • 举报
回复
第二个问题:在设定QuickReport的连接数据表时,设定为空,然后在QuickReport的beforeprint与onnewdata事件中自己编写代码进行判断,控制数据库的打印,我原来就是这么干的
linkie 2000-08-20
  • 打赏
  • 举报
回复
我来回答第一个问题。我有两个解决方案:
(1)如果单纯要显示记录的行号,那么最简单的方法就是在数据库中的数据表里设置自动编号的字段,那么当你每次往数据表里添加记录时,数据库将自动产生一个编号来记录该记录的编号的,该编号即说明该记录的行号了。但是,这有一个缺点,就是自动编号是按照自然数递增的,即使你将其中的记录删除了,其他记录的编号不会刷新的,还是保持原来的编号的,也就是被删除记录的编号将成为缺号的。
(2)实际上,第二种方法克服对第一种方法的不足的。原始数据表里不要建立自动编号的字段,而是将你要的数据选出来,然后将这些数据Insert到一个临时的数据表中,该临时表里面要求有自动编号的字段,这样在将这里的数据显示的界面上,也就是在TDbGrid控件里,就会有各行对应的行号了,当然每次Insert之前,必须将临时数据表里的数据全部清空(形如:Delete from TempTableName)。
如果你采用TF1Book控件,那我将有第三种解决方案。就是采用TQuery控件将你要显示的数据先选出来,然后采用如下方法将数据显示到TF1Book的表格中:
...
with Query1 do
begin
...
Close();
Sql.Clear();
Sql.Add(SqlStr);{SqlStr:String就是你要查询的Sql语句}
Open();
first();
iK:=1;{iK用来表示当前记录的行号}
while not eof do
begin
for n=-1 to fieldCount-1 do
beign
if n=-1 then F1Book1.TextRC[iK,1]:=intostr(iK);
else F1book1.TextRC[iK,n]:=fields.fields[n].asstring;
end;
iK:=iK+1;
end;
...
end;
如果别人有更好的解决方法,请你通知我。谢谢!
torent 2000-08-19
  • 打赏
  • 举报
回复
关注

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧