有一查询TQuery (QryCxCk 查询结存和未结存的仓库)
按结存名称(JCMC)排序如下
(仓库代码,结存名称,仓库名称)
CKDM JCMC CKMC
--- ------ ----------------------------------------
004 未结存 3#成品库(科技园)
005 未结存 配装库
006 未结存 军区仓库
002 已结存 1#成品库(装一北线)
003 已结存 2#成品库(装一南线) 结果集加入TListBox(SrcList 源数据显示)
002 已结存1#成品库(装一北线)
003 已结存2#成品库(装一南线)
004 未结存3#成品库(科技园)
005 未结存配装库
006 未结存军区仓库 未按结存名称(JCMC)排序,相应的事件语句为:
QryCxCk.close;
QryCxCk.open;
SrcList.Items.Clear;
QryCxCk.First;
while not QryCxCk.Eof do
begin
SrcList.Items.Add(QryCxCk.fieldbyname('ckdm').asstring+' '+QryCxCk.fieldbyname('jcmc').asstring+QryCxCk.fieldbyname('ckmc').asstring);
QryCxCk.next;
end;请高手指点!
按结存名称(JCMC)排序如下
(仓库代码,结存名称,仓库名称)
CKDM JCMC CKMC
--- ------ ----------------------------------------
004 未结存 3#成品库(科技园)
005 未结存 配装库
006 未结存 军区仓库
002 已结存 1#成品库(装一北线)
003 已结存 2#成品库(装一南线) 结果集加入TListBox(SrcList 源数据显示)
002 已结存1#成品库(装一北线)
003 已结存2#成品库(装一南线)
004 未结存3#成品库(科技园)
005 未结存配装库
006 未结存军区仓库 未按结存名称(JCMC)排序,相应的事件语句为:
QryCxCk.close;
QryCxCk.open;
SrcList.Items.Clear;
QryCxCk.First;
while not QryCxCk.Eof do
begin
SrcList.Items.Add(QryCxCk.fieldbyname('ckdm').asstring+' '+QryCxCk.fieldbyname('jcmc').asstring+QryCxCk.fieldbyname('ckmc').asstring);
QryCxCk.next;
end;请高手指点!
begin
Active:=False;
sql.clear;
sql.add('select * from tabel order by CKDM');
Active:=True;
SrcList.Items.Clear;
First;
while not Eof do
begin
SrcList.Items.Add(Fieldbyname('ckdm').asstring+' '+Fieldbyname('jcmc').asstring+Fieldbyname('ckmc').asstring);
next;
end;
end;
碰到问题查不到,花了半天时间作了一个,不敢独享。
ADO类的数据集有Sort,但是TClientDataSet没有,故作。procedure SortCDS(Column:TColumn);
function FindColumn(Grid:TDbGrid;Name:string):TColumn;
var
i:integer;
begin
Result:=nil;
for i:=0 to Grid.Columns.Count-1 do
if Grid.Columns.Items[i].FieldName=Name then
Result:=Grid.Columns.Items[i];
end;
var
DataSet:TClientDataSet;
ASC:boolean;
Clm:TColumn;
begin
DataSet:=TClientDataSet(Column.Field.DataSet);
if Assigned(DataSet) and (not DataSet.IsEmpty) then
begin
if DataSet.IndexName=Column.Fieldname then
ASC:=StrPos(PChar(Column.Title.Caption),'▼')<>nil;
Clm:=FindColumn(TDbGrid(Column.Grid),DataSet.IndexName);
if Assigned(Clm) then
begin
DataSet.DeleteIndex(DataSet.IndexName);
Clm.Title.Caption:=Copy(Clm.Title.Caption,1,Length(Clm.Title.Caption)-2);
end;
if Asc then
begin
DataSet.AddIndex(Column.Fieldname,Column.FieldName,
[ixCaseInsensitive,ixDescending]);
Column.Title.Caption:=Column.Title.Caption+'▲';
end
else begin
DataSet.AddIndex(Column.Fieldname,Column.FieldName,[ixCaseInsensitive]);
Column.Title.Caption:=Column.Title.Caption+'▼';
end;
DataSet.IndexName:=Column.Fieldname;
end;
end;