Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Вниз

Ошибка добавления 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.08 c
15-1207555479
vajo
2008-04-07 12:04
2008.05.18
Windows XP часто требует ввести код активации


8-1180090036
BaryVetaL
2007-05-25 14:47
2008.05.18
Помогите с Graphics32


2-1208844141
dumka
2008-04-22 10:02
2008.05.18
запросы


2-1203231941
DRAF
2008-02-17 10:05
2008.05.18
Полоса пкрутки


2-1208239581
Антон Вл.
2008-04-15 10:06
2008.05.18
ehLib





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский