数据库是acess2000,为什么这句话也执行错误了呢?
procedure Tfrmpm.Button2Click(Sender: TObject);
begin
adoquery6.Close;
adoquery6.SQL.Clear;
adoquery6.SQL.Add('insert into temp select xsbh,(select count(*)+1 from cy as b where a.总分<b.总分 ) as 县名次 from cy as a');
adoquery6.Open;
end;
上面我是想将cy这个表按总分排名次后,将xsbh和县名次两个字段的值放到temp表中,但是不行,不知应怎么改?
问题点数:0、回复次数:8Top
1 楼nyf1220(我是党员----不过听说最近风声紧,打算换名字)回复于 2004-12-01 23:16:14 得分 0
markTop
2 楼linzhisong(無聊)回复于 2004-12-01 23:18:18 得分 0
from cy as a??
Sql Server里 from cy aTop
3 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 08:20:59 得分 0
procedure Tfrmpm.Button2Click(Sender: TObject);
var
i: integer;
begin
i := 1;
with adoquery6 do
begin
Close;
SQL.Clear;
SQL.Text := 'Select * From cy Order By 总分 DESC';
Open;
end; // 按总分的降序排列;
adoquery6.First;
while not adoquery6.eof do
begin
adoquery6.Edit;
adoquery6.FieldByName('名次').asinteger := i;
adoquery6.Post;
adoquery6.Next;
i := i +1; // 排名次;
end;
Top
4 楼ghchen()回复于 2004-12-02 09:36:55 得分 0
from cy aTop
5 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 09:42:18 得分 0
楼上的, from cy a 和 from cy as a 是一样的吧。Top
6 楼whythinkwhy(小生)回复于 2004-12-02 09:45:39 得分 0
adoquery6.Open;改成adoquery6.EXECSQL 试试Top
7 楼nyf1220(我是党员----不过听说最近风声紧,打算换名字)回复于 2004-12-02 09:52:34 得分 0
coeltdit(每天多顶几下----->>>大虾就是这样练成的)
不错,用程序的方法实现了
SQL的方法应该有,不过似乎不大会,呵呵Top
8 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 10:03:02 得分 0
得改一下,当存在总分相同记录时排名就会有问题,差点误人子弟:
procedure TForm1.Button1Click(Sender: TObject);
var
i,total, nexttotal: integer;
begin
total := 0;
nexttotal := 0;
i := 1;
with adoquery6 do
begin
Close;
SQL.Clear;
SQL.Text := 'Select * From cy Order By 总分 DESC';
Open;
end; // 按总分的降序排列;
adoquery6.First;
while not adoquery6.eof do
begin
total := adoquery6.FieldByName('总分').asinteger;
adoquery6.Edit;
adoquery6.FieldByName('名次').asinteger := i;
adoquery6.Post;
adoquery6.Next;
nexttotal := adoquery6.FieldByName('总分').asinteger;
if nexttotal = total then
i := i // 排名次;
else
i := i + 1;
end;
end.
Top




