两个问题(50分)

  • 主题发起人 主题发起人 小二郎
  • 开始时间 开始时间

小二郎

Unregistered / Unconfirmed
GUEST, unregistred user!
问题1:我将两个字段的值从一个表考到另一个表中,
在bde中好使但在ado一样的代码就是不好使为什么?
table1.Edit;
table1.last;
query2.ExecSQL;
table1.Refresh;
query2的sql属性为
insert into 考试表 (学号,姓名)select distinct
总表.学号,总表.姓名 from 总表;
ado表的为
adotable1.Edit;
adotable1.last;
adoquery2.ExecSQL;
adotable1.Refresh;
query2的sql属性为
insert into 考试表 (学号,姓名)select distinct
总表.学号,总表.姓名 from 总表;

问题2:怎么样在一个表或是查询(表或是查询已经按某一字段排序)中,
加入一个自动排序字段,而且是加在第一列上,例如比学生算完成绩,最后加上名次字段?
 
问题1:
试验一下
adotable1.Edit;
adotable1.last;
adoquery2.ExecSQL;
adotable1.Close;
adotable1.Open;
2:
可以用一个虚拟计算字段。 设一个变量,每次表打开时讲变量清0
表 的 Oncalculatefield 事件里给计算字段赋值并 inc(变量)


 
学习第二个问题!

收藏了~
 
第二个问题能不能具体一点,我没有听懂,谢谢了,这个问题很难的呀!
 
2.动态创建一个计算字段试试.
 
怎么加呀,我刚学delphi不太懂,您能不能给我写一短呢
 
select rownum as seq_id,service_id from t_service
 
什么呀?不好意思我还是没有明白。太少了。
 
问题二真的这么难吗、连各位高手也没有办法,那看样子是实现不了了?
 
第一个问题,你说得不太清楚。
第二个问题,你可以加一个固定字段,然后进行计算、排序,将序号赋给这个固定字段。
 
第二个问题用RowNum就可以了啊,我用的是Oracle,你自已新建一个临时的字段,显示记录号。
 
什么序号?
 
我用的是parodox啊
 
sorry,第2个问题看错了要求
如果你需要对某一字段进行排序。 比如按成绩排序。最好的办法是用AdoQuery替代
ADOTABLE。
SELECT * FROM Your_Table order by 成绩 desc

如果你的程序里替换为ADOQUERY的工作量比较大的话。 可以用自带排序功能的
网格 控件替换DBGRID, 比如DEVEXPRESS 的 DxDbGrid
或是Ehlib.
 
我已经排序过了,现在是想加入一个名次字段并且自动把名次显示出来。
 
adoQuery上 双击鼠标。 进入FIELD EDITOR
添加一个字段名 "calc_id" 类型Calculated 数据类型:整数Integer
添加一个全局变量 var Id : Integer;

//AdoQuery的BeforeOpen事件
procedure Tform1.AdoQuery1BeforeOpen(DataSet : TdataSet);
begin
Id := 0;
end;

//AdoQuery的 OnCalcFields 事件
procedure Tfrm_qry_yp_xiaohao.ADOQuery1CalcFields(DataSet: TDataSet);
begin
AdoQuery1.FieldByName('Calc_Id').AsInteger := Id;
Inc(Id);
end;
上面我用的是 AdoQuery 如是 AdoTable 请更换
 
问题2:
在QUERY中添加一个计算字段,名称为“序号”。在query1.oncalcfields中加入
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
query1.FieldByName('序号').AsInteger:=query1.RecNo;
end;

在query1中: query1.close;
query1.sql.text:='select * from chjb order by 总分 desc';
query1.open;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部