如何在包含空格的字段名上对ADO表进行排序?

lke*_*ler 0 delphi sorting ms-access ado tadotable

我正在使用Delphi,但这是一个简单而普遍的问题:

我正在做以下事情:

var
  ArticlesTable: TADOTable;

begin
  ArticlesTable.DisableControls;
  ArticlesTable.Sort := 'CITY';
  ArticlesTable.First;
  while not ArticlesTable.Eof do begin
    ...
    ArticlesTable.Next;
  end;
Run Code Online (Sandbox Code Playgroud)

这非常有效,并且允许我逐个有效地处理记录,并且当它们进入时,CITY字段按顺序递增记录.

但是,现在我想通过"LAST NAME"字段订购,其中包含一个嵌入式空间.但是当我使用声明时:

  ArticlesTable.Sort := 'CITY';
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

  EOleException:  Arguments are of the wrong type, are out of acceptable range, 
                  or are in conflict with one another.
Run Code Online (Sandbox Code Playgroud)

我已经看到了SORT字符串语法的帮助.它表示用逗号分隔多个字段,并在字段之后添加ASC或DESC以对升序或降序进行排序.但它没有说明如果fieldname中有空格怎么办.

我已经尝试将字段名称放在单引号和双引号中,甚至使用#20作为空格字符,但这些不起作用.

我无法更改Microsoft Access数据库上的字段名称,因为还有其他程序我不能使用它依赖它.

我确信必须有一种简单的方法来做到这一点,我不知道.

ska*_*adt 10

您是否尝试过用方括号括起字段名?例如:

ArticlesTable.Sort := '[LAST NAME]';
Run Code Online (Sandbox Code Playgroud)