Есть ли способ автоматически удалить все начальные и конечные пробелы в текстовых полях - PullRequest
4 голосов
/ 04 октября 2011

В приложении Delphi, которое использует компоненты TADODataSet для доступа к базе данных Access, есть ли способ удалить начальные и конечные пробелы из текстовых полей при записи записи на диск? или, возможно, при получении данных, но без изменения всех моих запросов.

Я имею в виду в движке ADO, не кодируя себя, используя Trim() в BeforePost на каждой таблице.

Ответы [ 3 ]

6 голосов
/ 04 октября 2011

Со всеми установленными вами ограничениями ... Нет

Мой совет - кодировать событие BeforePost только один раз и связывать все таблицы с одним и тем же событием beforepost.

В объекте инспектор

Table1.BeforePost:= TrimFieldsBeforePost;
Table2.BeforePost:= TrimFieldsBeforePost;
....

В вашем коде

procedure TMyForm.TrimFieldsBeforePost(DataSet: TDataSet);
var
  i: integer;
begin
  i:= 0;
  while i < Dataset.Fields.Count do begin
    if (Dataset.Fields[i].DataType in
      [ftString, FtMemo, ftFixedChar, ftWideString,FtVariant, ftFixedWideChar, ftWideMemo]) then begin
      Dataset.Fields[i].AsString:= Trim(Dataset.Fields[i].AsString);
    end;
    Inc(i);
  end;
end;
5 голосов
/ 04 октября 2011

Создайте свой собственный TADODataSet компонент-потомок (TJuanADODataSet) и включите желаемое поведение в событие BeforePost. Рефакторинг для преобразования всех существующих TADODataSet s в TJuanADODataset s.

0 голосов
/ 05 октября 2011

Я не обращался к Access в течение многих лет, но разве нет функции автоматической обрезки в текстовых полях?

...