Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 德尔菲排序法_Delphi_Sorting - Fatal编程技术网

Delphi 德尔菲排序法

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

我试图对记录进行排序(按降序)并在网格中显示数据,网格通过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 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中该选项的确切名称。我已经为您创建了项目文件,从这里下载:非常感谢您,非常专业的测试方式,感谢您构建项目