我来回答第一个问题。我有两个解决方案:
(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;
如果别人有更好的解决方法,请你通知我。谢谢!
(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;
如果别人有更好的解决方法,请你通知我。谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货