![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Последовательное открытие в АДОTABLE нескольких таблиц. [D6, Акцес]
Kacnep © (2005-10-07 12:21:00)День добрый! Как очистить поля созданые динамически?
Спасибо
dm.adot_Meh.Close;
s:='Access_Table_1';
with dm.adot_Meh do begin
if FieldDefs.Count>0 then for row:=FieldDefs.Count-1 downto 0 do Fields[row].Free;
FieldDefs.Clear; --- пытаюсь очистить поля от предыдущей таблицы
TableName:=s; --- указываю с какой табл буду работать
FieldDefs.Update; --- получаю список полей в датасет {!!!! вот тут при открытии втрой таблицы вылетает ошибка}
for row:=0 to FieldDefs.Count-1 do begin
FieldDefs.Items[row].CreateField(dm.adot_Meh); -- создаю поля из датасета динамически
end;
Open; -- открываю набор данных
end;
s:='ТАБЛИЦА2'
ПОВТРОИТЬ КОД СНАЧАЛА НО С ДРУГОЙ ТАБЛИЦЕЙ.
Mike Kouzmine (2005-10-07 15:26:00) [1]Kacnep © (07.10.05 14:13) [5]
2 Майк
Клеар не освободит память :(
Kacnep © (07.10.05 12:21)
День добрый! Как очистить поля созданые динамически?
Для очистки поля - clear, для освобождения памяти, конечно не подходит.
Kacnep (2005-10-07 14:31:00) [2]Спасибо всем! После Ваших подтверждений стал искать ошибку в другом...
Фильтр был активирован... будь он неладен.
Спасибо еще раз.
msguns (2005-10-07 14:28:00) [3]>Kacnep © (07.10.05 14:13) [5]
>Это делается для того чтобы потом ДОБАВИТЬ вычисляемое поле.
О боже ! А зачем же так уродливо-то ?
>Если не импортировать ДЕФ поля то калькулироемое поле заменит их. :(
Что подразумевается под словами "импортировать ДЕФ поля" ?
ЗЫ. Блин, не пост, а ужастик какой-то Э8:[0]
sniknik (2005-10-07 14:24:00) [4]> 2 sniknik
> Это делается для того чтобы потом ДОБАВИТЬ вычисляемое поле.
> Если не импортировать ДЕФ поля то калькулироемое поле заменит их. :(
> > if Fields.Count>0 then for row:=Fields.Count-1 downto 0 do Fields[row].Free;
> должно сработать.
Kacnep (2005-10-07 14:13:00) [5]2 Майк
Клеар не освободит память :(
2 sniknik
Это делается для того чтобы потом ДОБАВИТЬ вычисляемое поле.
Если не импортировать ДЕФ поля то калькулироемое поле заменит их. :(
sniknik (2005-10-07 13:37:00) [6]непонятно зачем это нужно.
удалить то легко. вот это
Kacnep © (07.10.05 12:49) [2]
> if Fields.Count>0 then for row:=Fields.Count-1 downto 0 do Fields[row].Free;
должно сработать.
но зачем? если поля и так пересоздаются при открытии (при не заданности при разработке как постоянные), а если заданы то зачем их удалять? раз так сделано значит так надо.
и еще насчет TADOTable
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1128525012&n=18
Mike Kouzmine (2005-10-07 13:25:00) [7]А если не фри, а clear?
Kacnep (2005-10-07 12:49:00) [8]1. Если вы насчет этой строки
if FieldDefs.Count>0 then for row:=FieldDefs.Count-1 downto 0 do Fields[row].Free;
то пробовал вместо нее вот так
if Fields.Count>0 then for row:=Fields.Count-1 downto 0 do Fields[row].Free;
2. Отображающий элемент... Его в коде нет... Он вернее идет потом и далеко! Сейчас разобраться бы с НД. :((
В общем Граждане! ГУРУ! Доки! Шаманы! Все кто знает как удалить поля из набора полей АДОТэйбла чтоб он был как только что добавленый на форму поможите чем можете. Я устал уже в потемках тыкаться. :(
в ДельфиВорд встретил даже такой совет
for row:=Fields.Count-1 downto 0 do begin
TC:=FindComponent(dm.adot_Meh.Fields[row].Name);
if Assigned(TC) then begin
dm.adot_Meh.Close;
TC.Free;
dm.adot_Meh.Open;
end;//if
end;//for
msguns (2005-10-07 12:33:00) [9]Кроме FiledDefs есть еще Fields
Вообще-то при открытии датасета, в т.ч. и TADOTable, все это хозяйство заполняется автоматически. Чистить надо не датасет, а коллекцию колонок отображающего грида, используя метод Colums.RebuildColums