with Table1 do begin IndexDefs.Add('index1','yourField1;yourField2',[ixCaseInsensitive, ixDescending]); IndexDefs[0].CaseInsFields := 'yourField1'; IndexDefs[0].DescFields := 'yourField2'; IndexName := 'index1'; Active := true; end;(注:還可手動設定)
不行呀。 在设计期我手动设定Table1的IndexDefs属性,设置一个IndexDefs[0],定义了其Fields为一个数据库字段名,其它属性未设置。 在运行时,如下代码: procedure TForm1.N7Click(Sender: TObject); var I:Integer; begin Table1.Active:=false; Table1.Exclusive:=true; Table1.IndexDefs.Update; for I:=0 to Table1.IndexDefs.Count-1 do if Table1.IndexDefs[I].Fields='PosStart' then Table1.IndexName :=Table1.IndexDefs.Items[I].Name; Table1.Exclusive:=false; Table1.Active:=true; end;可是程序报错说:"Index out of date".是什么原因啊。
table1.sort:=table1.indexdefs.items[i].name
実在不行、在Paradox数据库環境下建一個索引文件。CREATE INDEX yourIndex ON yourTable ( yourField1, yourField2 )
procedure TFormMain.MyDBGridTitleClick(Column: TColumn); var i:integer; begin if AdoQCX.Sort = Column.FieldName then begin For i:=0 to MyDBGrid.Columns.Count-1 do MyDBGrid.Columns[i].Title.RestoreDefaults; AdoQCX.Sort := Column.FieldName + ' DESC'; Column.Title.Font.Color:=clPurple; end else begin For i:=0 to MyDBGrid.Columns.Count-1 do MyDBGrid.Columns[i].Title.RestoreDefaults; AdoQCX.Sort := Column.FieldName; Column.Title.Font.Color:=clBlue; end; end;
to y31307 and anbangs:我用的是BDE的TTable,而不是ADO的TADOTable。TTable没有Sort属性,我看了TTable的帮助,似乎只能用IndexName属性来实现排序。
begin
IndexDefs.Add('index1','yourField1;yourField2',[ixCaseInsensitive, ixDescending]);
IndexDefs[0].CaseInsFields := 'yourField1';
IndexDefs[0].DescFields := 'yourField2';
IndexName := 'index1';
Active := true;
end;(注:還可手動設定)
在设计期我手动设定Table1的IndexDefs属性,设置一个IndexDefs[0],定义了其Fields为一个数据库字段名,其它属性未设置。
在运行时,如下代码:
procedure TForm1.N7Click(Sender: TObject);
var
I:Integer;
begin
Table1.Active:=false;
Table1.Exclusive:=true;
Table1.IndexDefs.Update;
for I:=0 to Table1.IndexDefs.Count-1 do
if Table1.IndexDefs[I].Fields='PosStart' then
Table1.IndexName :=Table1.IndexDefs.Items[I].Name;
Table1.Exclusive:=false;
Table1.Active:=true;
end;可是程序报错说:"Index out of date".是什么原因啊。
ON yourTable ( yourField1, yourField2 )
http://community.csdn.net/Expert/topic/2741/2741282.xml?temp=.8439447
只不过换个事件就可以了。
var i:integer;
begin
if AdoQCX.Sort = Column.FieldName then
begin
For i:=0 to MyDBGrid.Columns.Count-1 do
MyDBGrid.Columns[i].Title.RestoreDefaults; AdoQCX.Sort := Column.FieldName + ' DESC';
Column.Title.Font.Color:=clPurple;
end
else begin
For i:=0 to MyDBGrid.Columns.Count-1 do
MyDBGrid.Columns[i].Title.RestoreDefaults; AdoQCX.Sort := Column.FieldName;
Column.Title.Font.Color:=clBlue;
end;
end;