Как я могу отсортировать таблицу ADO по имени поля, содержащему пробел? - PullRequest
0 голосов
/ 16 ноября 2009

Я использую Delphi, но это простая и общая проблема:

Я делаю следующее:

var
  ArticlesTable: TADOTable;

begin
  ArticlesTable.DisableControls;
  ArticlesTable.Sort := 'CITY';
  ArticlesTable.First;
  while not ArticlesTable.Eof do begin
    ...
    ArticlesTable.Next;
  end;

Это работает очень хорошо и позволяет мне эффективно обрабатывать записи одну за другой с записями, упорядоченными по возрастанию в поле CITY по мере их поступления.

Однако теперь я хотел заказать по полю «ПОСЛЕДНЕЕ ИМЯ», в котором есть встроенное пространство. Но когда я использую утверждение:

  ArticlesTable.Sort := 'CITY';

Я получаю сообщение об ошибке:

  EOleException:  Arguments are of the wrong type, are out of acceptable range, 
                  or are in conflict with one another.

Я видел справку по синтаксису строки SORT . В нем говорится разделять несколько полей запятыми и добавлять ASC или DESC после поля для сортировки по возрастанию или по убыванию. Но в нем не сказано, что делать, если в имени поля есть пробел.

Я пытался поместить имя поля в одинарные и двойные кавычки и даже использовать # 20 в качестве пробела, но они не работают.

Я не могу изменить имя поля в базе данных Microsoft Access, потому что есть другие программы, с которыми я не работаю, которые зависят от него.

Я уверен, что должен быть простой способ сделать это, о котором я не знаю.

1 Ответ

10 голосов
/ 16 ноября 2009

Вы пробовали окружать имя поля квадратными скобками? например:

ArticlesTable.Sort := '[LAST NAME]';
...