Форум: "Начинающим";
Текущий архив: 2011.07.31;
Скачать: [xml.tar.bz2];
ВнизКак сделать reset MemTable Найти похожие ветки
← →
mefodiy (2011-04-26 12:15) [0]Использую таблицу от AnyDAC TADMemTable для создания временных таблиц. Нужные мне поля создаю следующим образом
with FieldDefs do
begin
Clear;
Add("Field1", ftDate, 0,False);
Add("Field2", ftString,10,False);
..........
end;
Все нормально работает. Но после использования, когда я закрываю таблицу командой Close, определяю новый набор полей и хочу использовать таблицу заново, вылетает ошибка с названием одного из предыдущих полей о том, что это поле отсутствует в списке. Разве FieldDefs.Clear не очищает этот список. В общем, что нужно сделать, чтобы использовать таблицу с разным набором полей и избежать этой ошибки. Спасибо.
← →
OW © (2011-04-26 12:39) [1]не AnyDAC правда, а ODAC
но все работает
var
s:string;
begin
s := "F" + IntToStr(Random(100)+1);
vt1.FieldDefs.Clear;
vt1.AddField(s, ftString, 20, true);
vt1.Open;
vt1.Append;
vt1.FieldByName(s).Value := "Val" + s;
vt1.Post;
vt1.Close;
vt1.Open;
ShowMessage( vt1.FieldByName(s).AsString );
vt1.Close;
← →
oldman © (2011-04-26 12:40) [2]Fields.Clear не?
← →
mefodiy (2011-04-26 13:49) [3]>Fields.Clear приводит к зависанию
>vt1.Close;
> vt1.Open;
В том то и дело, что я хочу открывать таблицу уже с другим набором поле, а не как у тебя.
← →
Медвежонок ХМЛ © (2011-04-26 13:56) [4]Надо не только поменять филдефсы но и имя таблицы. Ибо старая видимо еще жива и не убита. А новых полей в ней никто не создавал.
← →
mefodiy (2011-04-26 14:24) [5]Как же менять имя в рантайме?
← →
Медвежонок Пятачок © (2011-04-26 14:28) [6]http://www.sql.ru/Forum/actualthread.aspx?bid=20&tid=714775&hl=
← →
mefodiy (2011-04-26 15:06) [7]http://www.sql.ru/Forum/actualthread.aspx?bid=20&tid=714775&hl=
здесь говорится, что проблема разрешилась установкой новой версии. Но у меня версия AnyDAC 4.0.5, по-моему последняя. Что же делать?
← →
Медвежонок Пятачок © (2011-04-26 15:09) [8]ставить последнюю, вместо помоемупоследей
← →
OW © (2011-04-26 15:14) [9]
> var
> s:string;
> begin
> s := "F" + IntToStr(Random(100)+1);
> vt1.FieldDefs.Clear;
> vt1.AddField(s, ftString, 20, true);
> vt1.Open;
> vt1.Append;
> vt1.FieldByName(s).Value := "Val" + s;
> vt1.Post;
> vt1.Close;
> vt1.Open;
> ShowMessage( vt1.FieldByName(s).AsString );
> vt1.Close;
это у меня на кнопке было,
естественно, по кнопке потыкал не один раз, прежде чем сказать сюда
← →
mefodiy (2011-04-26 15:33) [10]Ответ в [3]
← →
Медвежонок Пятачок © (2011-04-26 15:46) [11]ну что за народ.
ну убей ты свой экземпляр мемтэйбл если clear приводит к зависанию.
создавая его динамически.
← →
OW © (2011-04-26 15:56) [12]
> ну убей ты свой экземпляр мемтэйбл если clear приводит к
> зависанию.
не, а если на него, например, сорс смотрит какой или еще что, получится что надо и его (их) перенастроить
> Ответ в [3]
> я хочу открывать таблицу уже с другим набором поле, а не
> как у тебя.
второй раз кликнуть на кнопке - и будет другое поле.
более того, заранее неизвестное
← →
mefodiy (2011-04-26 17:57) [13]Проблема оказалась в индексе, который я создавал при первой работе с таблицей. И ошибку он давал на название индексного поля.
У OW © все работает, так как нет индекса. Просто надо было перед созданием нового набора полей прописать
IndexName := "".
Может кому и пригодится.
Всем спасибо.
← →
oldman © (2011-04-26 18:50) [14]
> Может кому и пригодится.
> Всем спасибо.
Никому не пригодится.
:)))
Оставить старые индексы на новую таблицу... Месье знает толк в извращениях!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.07.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c