以身相许!!(100分)

看了题目我还有点原始的冲动,进来一看,差点吐了。
 
你在表中添加一个字段,有来计算新的id号不行!每找到一条+1
 
type
Tf_dbgrid=Class(TDBGrid);

Procedure TForm1.DBGrid1ColEnter(Sender:Tobject) ;
Begin
Label1.Caption:=Format('Column: %D ',[Tf_dbgrid(DBGrid1).Col ] )
End ;

Procedure TForm1.DataSource1DataChange(Sender:Tobject;Field:TField) ;
Begin
DbGrid1ColEnter(Sender) ;
End ;
 
我的苯办法:
var strlist:Tstringlist;
...
procedure Tordersfrm.FormCreate(Sender: TObject);
begin
strlist:= TStringList.create;
end;
procedure Tordersfrm.Query1BeforeOpen(DataSet: TDataSet);
var sqlstr:string;
begin
serialstr1.Clear ;
sqlstr:=query1.SQL.Text ;
with mainfrm.query2 do
begin
close;
sql.clear;
sql.Add(sqlstr);
open;
if RecordCount>0 then
begin
first;
while not Eof do
begin
serialstr1.Add (fieldbyname('id').asstring);//id字段值是唯一的索引值(这很重要)
Next ;
end;
end;
end;
end;
//在query1中创建IDNO计算字段
procedure Tordersfrm.Query1CalcFields(DataSet: TDataSet);
var
i:integer;
begin
for i:=0 to strlist.Count-1 do
begin
if query1id.AsString =serialstr1 then
begin
query1idno.value:=i+1;
end;
end;
end;

对数据量大时的效果不是很好。
 
顶部