Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизПоследовательное открытие в АДОTABLE нескольких таблиц. Найти похожие ветки
← →
Kacnep © (2005-10-07 12:21) [0]День добрый! Как очистить поля созданые динамически?
Спасибо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"
ПОВТРОИТЬ КОД СНАЧАЛА НО С ДРУГОЙ ТАБЛИЦЕЙ.
← →
msguns © (2005-10-07 12:33) [1]Кроме FiledDefs есть еще Fields
Вообще-то при открытии датасета, в т.ч. и TADOTable, все это хозяйство заполняется автоматически. Чистить надо не датасет, а коллекцию колонок отображающего грида, используя метод Colums.RebuildColums
← →
Kacnep © (2005-10-07 12:49) [2]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
← →
Mike Kouzmine © (2005-10-07 13:25) [3]А если не фри, а clear?
← →
sniknik © (2005-10-07 13:37) [4]непонятно зачем это нужно.
удалить то легко. вот это
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://delphimaster.net/view/2-1128525012/
← →
Kacnep © (2005-10-07 14:13) [5]2 Майк
Клеар не освободит память :(
2 sniknik
Это делается для того чтобы потом ДОБАВИТЬ вычисляемое поле.
Если не импортировать ДЕФ поля то калькулироемое поле заменит их. :(
← →
sniknik © (2005-10-07 14:24) [6]> 2 sniknik
> Это делается для того чтобы потом ДОБАВИТЬ вычисляемое поле.
> Если не импортировать ДЕФ поля то калькулироемое поле заменит их. :(
> > if Fields.Count>0 then for row:=Fields.Count-1 downto 0 do Fields[row].Free;
> должно сработать.
← →
msguns © (2005-10-07 14:28) [7]>Kacnep © (07.10.05 14:13) [5]
>Это делается для того чтобы потом ДОБАВИТЬ вычисляемое поле.
О боже ! А зачем же так уродливо-то ?
>Если не импортировать ДЕФ поля то калькулироемое поле заменит их. :(
Что подразумевается под словами "импортировать ДЕФ поля" ?
ЗЫ. Блин, не пост, а ужастик какой-то Э8:[0]
← →
Kacnep © (2005-10-07 14:31) [8]Спасибо всем! После Ваших подтверждений стал искать ошибку в другом...
Фильтр был активирован... будь он неладен.
Спасибо еще раз.
← →
Mike Kouzmine © (2005-10-07 15:26) [9]Kacnep © (07.10.05 14:13) [5]
2 Майк
Клеар не освободит память :(
Kacnep © (07.10.05 12:21)
День добрый! Как очистить поля созданые динамически?
Для очистки поля - clear, для освобождения памяти, конечно не подходит.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.2 c