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

Вниз

Ошибка добавления lookup поля в TADOTable   Найти похожие ветки 

 
Fregl ©   (2007-12-10 17:31) [0]

Вот есть 2 таблички в access файле.(Номера вагонов,типы вагонов)
в одной хранится id;серийный номер вагона;тип вагона
во второй id;название типа.
и мне надо добавить lookup поле в первую таблицу, что бы выводило строкой имя типа вагона, а не id типа.
средствами IDE сделать не получается, так как после того если законектиться к БД в design mode сразу начинает вылетать ошибка wrong enum value или что то типа того, и проект сохранить нельзя, тока закрыть делфи. делфи 7,глючит АДО..

вобщем решил в рантайме создать поле и присоединить к таблице, вот как это я делаю при создании формы

 ADOTable1.TableName:="VagonNumbers"; это номера вагонов
 ADOTable2.TableName:="VagonTypes"; это типы вагонов

 T1TypeName:=TStringField.Create(Self);
 T1TypeName.FieldKind:=fkLookUP;
 T1TypeName.FieldName:="T1TypeName";
 T1TypeName.DataSet:=ADOTable1;
 T1TypeName.KeyFields:="VagonType";
 T1TypeName.LookupKeyFields:="ID";
 T1TypeName.LookupResultField:="TypeName";
 T1TypeName.LookupDataSet:=ADOTable2;

 DBGrid1.Columns[0].FieldName:="ID";
 DBGrid1.Columns[1].FieldName:="VagonNumber";
 DBGrid1.Columns[2].FieldName:="T1TypeName";
 DBGrid2.Columns[0].FieldName:="ID";
 DBGrid2.Columns[1].FieldName:="TypeName";

при попытке открыть таблицу1 вылетает ошибка - не найдено поле VagonType! Хотя это поле в таблице присутсвтует.
Вобщем я уже запутался, в хелпе ничего конкретного.
Посоветуйте как быть или выложите исчерпывающий пример для добавления собственного lookup поля в ADOTable. Заранее спасибо, лучше пример отправить и на почту


 
FreGL ©   (2007-12-10 17:33) [1]

структуры таблиц
ADOTable1 : ID :autoinc | VagonNumber :int | VagonType : int
ADOTable2 : ID :int        | TypeName : int


 
megabyte ©   (2007-12-11 11:08) [2]

Совет: не используй ADOTable, используй ADODataSet. Напиши там запрос на получение всей таблицы, попробуй сделать дизайн-тайме все тоже самое(настроить лукап-поле), если будут ошибки, тогда пиши...


 
ЮЮ ©   (2007-12-11 11:16) [3]

Если в Design-е нет полей в "Редакторе полей", то твои мероприятия создадут именно 1-ое поле, и никакого VagonType не будет. Если намерен создавать ftLookup-поле именоо в RunTime, то сначала надо добавить все ftData поля.


 
FreGL ©   (2007-12-11 15:39) [4]

сделал все в рантайме, все работает, но при закрытии приложения вылетает ошибка
Access violation at 0000000, read of address 000000.
не пойму почему. вроде все корректно закрывается, в formdestroy ставлю такой вот обработчик

 T1TypeName.DataSet:=nil;
 T1VagonNumber.DataSet:=nil;
 T1VagonType.DataSet:=nil;
 T2ID.DataSet:=nil;
 T2TypeName.DataSet:=nil;
 T1TypeName.Free;
 T1VagonNumber.Free;
 T1VagonType.Free;
 T2ID.Free;
 T2TypeName.Free;

в чем может быть запара?


 
sniknik ©   (2007-12-11 15:55) [5]

> в чем может быть запара?
а вот во всем этом "обработчике". ни одного нужного действия в нем нет. есть разрушения обьектов без очистки указателей, по которым после "пройдется"  деструктор родителя вот и AV.


 
FreGL ©   (2007-12-11 16:41) [6]

ну ткни пальцем что надо сделать, пожалуста.
я не понимаю что я делаю не так.
нужно вызывать типа TField.clear?


 
ЮЮ ©   (2007-12-13 05:12) [7]

> нужно вызывать типа TField.clear?

Кому это надо при закрытии приложения?


> T1TypeName.DataSet:=nil;
> T1TypeName.Free;


Полагаешь при уничтожении DataSet-а элементы коллекции полей не будут уничтожены? Ошибаешься. Именно отсюда и AV. Сначала ты уничтожил, потом DataSet пытается.

> нужно вызывать типа TField.clear?

Тогда уж Clear method (TFields) , чем даструкторы. Хотя при закрытии приложения это лишнее.


 
Fregl ©   (2007-12-13 12:44) [8]

Gospoda, u menya opita raboti s BD v delphi k sojaleniyu ne tak mnogo, poetomu skajite kak nujno sdelat? v kakuyu storonu nado rit?


 
ЮЮ ©   (2007-12-13 12:48) [9]

> v kakuyu storonu nado rit?

Прочитать [7] (извини, что не в транслите) и убрать нафиг строки, приведенные в [4].



Страницы: 1 вся ветка

Текущий архив: 2008.05.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
2-1208272732
Vitec
2008-04-15 19:18
2008.05.18
Pchar(s)^


15-1207558304
GanibalLector
2008-04-07 12:51
2008.05.18
Subscribe.Ru (рассылка от Мастера DELPHI)


15-1207576451
Kolan
2008-04-07 17:54
2008.05.18
Как упорядочить программы в пуске по алфавиту?


15-1207233109
Gabriel'
2008-04-03 18:31
2008.05.18
С чего нужно начать писать компьютерные игры?


2-1208782867
Fr1K
2008-04-21 17:01
2008.05.18
Проблема с проверкой даты