Обновление списка полей в ADOQuery

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

27 апр 2007, 06:33

Всем привет!!! Такая вот штуковина, я создал SQL запрос в ADO и в FieldsEditor'е обновил список полей. Теперь в коде программы я меняю SQL запрос, и естественно меняется список полей, но как мне их программно обновит в FieldsEditor'е? Чтоб можно было обращатся к полю как Adoquery1FIO.text и т.д. А то adoquery1.fields.fields[1].text не очеть удобно, так как не знаю заранне в каком порядке будут расположены поля...
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

27 апр 2007, 08:50

Для обеспечения гибкости не нужно создавать объекты TXXXField в Design-Time.
Устанавливайте свойства полей (такие как DisplayWidth, DisplayFormat...) программно.
Обращаться к полям нужно по имени

Table1.FieldByName('...')...

или по индексу

Table1.Fields...


А вот так чтобы в коде зарранее написать Adoquery1FIO, а добавить поле потом - так не получится!
Это не скомпилируется!
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

27 апр 2007, 09:29

Гы :) Получится та получилось, но вот про FieldByName чего-то не подумал :) Сенькс!
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
SergeyS
Сообщения: 193
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

28 апр 2007, 06:37

&quot писал(а):А вот так чтобы в коде зарранее написать Adoquery1FIO, а добавить поле потом - так не получится!
Это не скомпилируется!
&quot писал(а):Гы Получится та получилось
Это как же у тебя получилось? Поделись опытом.
Я тоже считаю что это невозможно.
Udaw
Сообщения: 6
Зарегистрирован: 08 окт 2004, 14:33
Контактная информация:

28 апр 2007, 08:50

Если я прально понял, то вот пример(из реальной работающей программы), как можно добавить поле в запрос.


function ……………..
//Описание добавляемого поля
var iField: TIntegerField;
begin
try
//Описание запроса
tProgram.Close;
tProgram.SQL.Clear;
tProgram.SQL.Add('… ');
....
if (условие1) then
begin
//Добавление поля
iField := TIntegerField.Create(nil);
iField.fieldname := 'dvp_uid';
iField.FieldKind := fkData;
iField.Dataset:=tProgram;
tProgram.Fields.Add(iField);
end;
//Выполнение запроса
tProgram.Open;
dvp^ := tProgram.FieldByName('dvp_uid').AsInteger;
if (условие1 ) then
begin
// Удаление поля
tProgram.Fields.Remove(tProgram.FieldByName('dvp_uid'));
tProgram.Close;
iField.Dataset := nil;
end
finally
FreeAndNil(frmSelLicProgram);
if (условие1) then
begin
//Уничтожение экземпляра
iField.Free;
end;
end;
end;
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

28 апр 2007, 09:06

&quot писал(а):Это как же у тебя получилось? Поделись опытом.
Я тоже считаю что это невозможно.
В режиме редактирования проги у ADOQuery заранее написал SQL запрос и добавил поля в список, а когда в коде изменяю sql запрос меняются сами поля, а список остается тем же и тогда прога начинает ругаться :)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить