Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Последовательное открытие в АДО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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
14-1130195349
TButton
2005-10-25 03:09
2005.11.20
[anti]ArtMoney


3-1128938992
atruhin
2005-10-10 14:09
2005.11.20
Эффективность индекса


2-1131213661
Michael5
2005-11-05 21:01
2005.11.20
Есть программа, у которой свой графический интерфейс. Она может


2-1131101911
syte_ser78
2005-11-04 13:58
2005.11.20
зачем нужен POST ?


2-1130920589
Ale-x
2005-11-02 11:36
2005.11.20
Автозапуск