2012-01-07 13 views
0

데이터를 내림차순으로 정렬하고 데이터 소스에 연결된 데이터를 데이터 세트에 표시하려고합니다. Vw_EmpVacations 여기 코드가 잘못 되었습니까? By the 나는 데이터베이스에 실행하면 방법은,보기가델파이 정렬 내림차순

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; 

당신에게

감사 시작일에 따라 내림차순으로 정렬됩니다
+2

그래서 이미 내림차순으로 정렬 된 내림차순으로 행을 정렬 하시겠습니까? 미안 해요, 당신 질문에 좀 더 일할 필요가 있다고 생각합니다. 포맷 코드가 올바르다면, dbGo, dbExpress, IBO, FIBPlus ...를 사용하고있는 데이터베이스 구성 요소를 알려주십시오. – Wodzu

+0

데이터는 뷰에서 정렬되지만 그리드에 표시하려고하면 더 이상 정렬되지 않습니다. ADOquery, XDBgrid, XQRgrid를 사용하고 있습니다. – Amanda

+0

먼저이 컴포넌트에서 표준 Delphi TDBGrid에 연결해보십시오. – Wodzu

답변

0
난 당신이 문제에 대한 자세한 내용은 매우 드물다는 사실에도 불구하고 당신을 돕기 위해 노력할 것입니다

; -)

새로운 VCL Forms Application - 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을 매개 변수가없는 쿼리로 바꾸고 작동하는지 확인하십시오. 그렇지 않다면 문제는 구성 요소 설정이 아닌 쿼리에 있습니다.

희망이 도움이됩니다.

+0

도움을 주셔서 감사합니다. 시도해보고 알려 드리겠습니다. – Amanda

+0

저는 Delphi6을 사용하고 New -> Others -> 시도했지만 VCL Form 응용 프로그램이 없습니다. 어떻게해야할까요? – Amanda

+0

새로운 VCL 프로젝트를 생성하기 만하면 델파이 6에서 그 옵션의 정확한 이름을 기억하지 못합니다. 프로젝트 파일을 만들었습니다. 여기에서 다운로드하십시오 : http://www.speedyshare.com/ file/xShfp/SortTest.dpr – Wodzu

관련 문제