我會盡力幫助你,儘管事實是,你在你的問題的細節非常稀疏; - )
請創建一個新的VCL Forms應用程序 - 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 ...? – Wodzu 2012-01-07 17:49:44
數據在視圖中排序,但是當我嘗試在網格中顯示它時,它不再被排序。我正在使用ADOquery,XDBgrid,XQRgrid – Amanda 2012-01-07 17:56:14
嘗試先將它連接到標準的Delphi TDBGrid,它是否在這個組件中排序? – Wodzu 2012-01-07 17:59:46