Delphi 德尔菲排序法
我试图对记录进行排序(按降序)并在网格中显示数据,网格通过datasource连接到数据集Vw_EmpVacations 这是密码,请告诉我我做错了什么 顺便说一下,当我在数据库中执行视图时,它是按照开始日期降序排序的Delphi 德尔菲排序法,delphi,sorting,Delphi,Sorting,我试图对记录进行排序(按降序)并在网格中显示数据,网格通过datasource连接到数据集Vw_EmpVacations 这是密码,请告诉我我做错了什么 顺便说一下,当我在数据库中执行视图时,它是按照开始日期降序排序的 Vw_EmpVacations.Active:=false; Vw_EmpVacations.SQL.Text:='select * from Vw_EmpVacations where Branch_ID=:x and emp_id=:y and vac_id=:z order
Vw_EmpVacations.Active:=false;
Vw_EmpVacations.SQL.Text:='select * from Vw_EmpVacations where Branch_ID=:x and emp_id=:y and vac_id=:z order by Start_Date Desc ';
Vw_EmpVacations.Parameters[0].Value:=branch_ID;
Vw_EmpVacations.Parameters[1].Value:=emp_Id;
Vw_EmpVacations.Parameters[2].Value:=Vac_ID;
Vw_EmpVacations.Active:=true;
谢谢你我会尽力帮助你,尽管你对你的问题没有详细的了解;-) 请创建一个新的VCL表单应用程序-Delphi For Win32项目。 然后,将项目的源代码替换为以下代码:
program SortTest;
uses
Forms, ADODB, DB, DBGrids;
var
qrySortTest: TADOQuery;
conSQL2005: TADOConnection;
dsSortTest: TDataSource;
grdTest: TDBGrid;
MainForm: TForm;
begin
Application.Initialize;
conSQL2005 := TADOConnection.Create(Application);
with conSQL2005 do
begin
Name := 'conSQL2005';
//Do not forget to change the connection string
ConnectionString :=
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +
'fo=False;Data Source=WODZU-LAPTOP\SQL2005S';
LoginPrompt := False;
Provider := 'SQLOLEDB.1';
Connected := True;
end;
qrySortTest := TADOQuery.Create(Application);
with qrySortTest do
begin
Name := 'qrySortTest';
Connection := conSQL2005;
CursorType := ctStatic;
SQL.Clear;
SQL.Add('SELECT '#39'Kowalsky'#39' as Surname, 25 as Age');
SQL.Add('UNION');
SQL.Add('SELECT '#39'Smith'#39', 38');
SQL.Add('UNION');
SQL.Add('SELECT '#39'Jensen'#39', 11');
SQL.Add('UNION');
SQL.Add('SELECT '#39'Doe'#39', 26');
SQL.Add('UNION');
SQL.Add('SELECT '#39'Clarke'#39', 45');
SQL.Add('ORDER BY AGE DESC');
Active := True;
end;
dsSortTest := TDataSource.Create(Application);
with dsSortTest do
begin
Name := 'dsSortTest';
DataSet := qrySortTest;
end;
MainForm := TForm.Create(Application);
MainForm.Position := poScreenCenter;
grdTest := TDBGrid.Create(Application);
with grdTest do
begin
Name := 'grdTest';
Parent := MainForm;
Left := 8;
Top := 8;
Width := 320;
Height := 120;
DataSource := dsSortTest;
TabOrder := 0;
end;
MainForm.ShowModal;
Application.Run;
end.
请记住将正确的连接字符串放入SQL Server,否则它将无法工作。
运行测试,它是否显示按Age
列降序排序的行?如果是,那么这就是你开始的地方
用无参数查询替换qrySortTest.SQL,并检查其是否有效。如果不是,那么问题在于您的查询,而不是组件设置
希望这有帮助。那么您想按降序对已经按降序排序的行进行排序吗?对不起,我想你需要在你的问题上多做点工作。正确格式化代码,告诉我们您使用的数据库组件,dbGo、dbExpress、IBO、FIBPlus…?数据在视图中排序,但当我尝试在网格中显示它时,它不再排序。我正在使用ADOquery、XDBgrid、XQRGrid尝试首先将其连接到标准Delphi TDBGrid,它在该组件中排序吗?我尝试过,但仍然没有排序。。。我注意到一些奇怪的事情,当我在检查视图(我使用sql Server 2005)时,当我单击“视图-->设计”并运行它时,数据被排序,但如果我单击“视图-->打开视图”,我会看到数据没有排序。。。如何以及为什么??使用其他ADO Delphi代码(如)尝试基本+表+查询,然后如果一切正常,将您的代码与工作代码进行比较!我正在使用Delphi6,我尝试了New->Others->,但没有VCL表单应用程序。怎么办?您只需要创建一个新的VCL项目,我不记得Delphi6中该选项的确切名称。我已经为您创建了项目文件,从这里下载:非常感谢您,非常专业的测试方式,感谢您构建项目