Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
ВнизПроблема при создании lookUp поля Найти похожие ветки
← →
RIV_ (2003-02-22 06:01) [0]Вроде бы ответ должен быть простым но информации нигде не нашол...
Есть 2 таблицы:
Предприятия:
ID (Основной ключ)
Name
...
...
Связ Предприятие-предприятие
Predpr1_ID
Predpr2_ID
My_Memo (Memo)
Я связал их следующим образом Predpr1_ID->ID (Много к одному)
Получилось, что когда выбирается предприятие в DBGRID1, в DBGRID2 отображаются все записи ссылалающиеся на данное предприятие. Но поле Predpr2_ID ссылается на другое предприятие и его индекс нужно заменить именем предприятия, т.е. поставить в соответствие Name и Predpr2_ID. Я это сделал создав LookUp поле в Table2. Возникла проблема: Или возникает ошибка переполнения стека при попытке отредактировать поле Memo (точнее при выполнении post после редактирования) или приходится убирать LookUp поле, тогда все работает, но вместо второго имени предприятия пользователь видит ключ Predpr2_ID.
Ника не могу понять в чем дело. Если у кого-то было что-то подобное, пожалуйсто поделитесь информацией.
Есть 2 таблицы, связанные Следующим образом
по полю , я использовал Paradox
← →
RIV_ (2003-02-22 06:05) [1]2 последние строчки я написал нечаянно...
← →
Zap1111 (2003-02-22 11:56) [2]Не пробовал связывать таблицы в парадоксе, но долал это с помощью VCL
1. Создай во второй таблице лукап поле Предпр1_имя и свяжи его с
первой таблицей.
- KeyFields = Предпр1_ID;
- LookupDataSet = Companies;
- LookupFeyFields = Companies->ID
- LookupResultField = Companies->Name
2. Аналогично с Предпр2_Имя.
Все. Теперь в таблице если стаешь на поле Предпр1_имя, появляется віпадающий список
← →
Shatun (2003-02-22 13:58) [3]Самый простой способ, это создать вторую таблицу, в смысле не в базе данных, а компонент TTable, только не забывай делать Refresh, для синхронизации, я делал, прогу работает до сих пор и не глючит, как не может глючить Paradox :))
← →
Jee (2003-02-24 09:07) [4]В свойстве лукап поля поставь LookupCache := true
← →
RIV_ (2003-03-02 01:19) [5]Спасибо, теперь заработало, но возникла другая проблема: если изменить поле в lookup таблице, то его отбражение не меняется. Причем если выключить LookupCash то при попытку изменить это самое поле выдает dataset table2 is not in edit mode
form3.Table3.Insert; //<-тут появляется ошибка
form3.Table3.FieldByName("Predpr1_ID").AsInteger:=form3.Table1.FieldByName("ID").AsInteger;
form3.Table3.FieldByName("Predpr2_ID").AsInteger:=Table1.FieldByName("ID").AsInteger;
form3.Table3.Post;
form3.Table3.Insert;
form3.Table3.FieldByName("Predpr1_ID").AsInteger:=Table1.FieldByName("ID").AsInteger;
form3.Table3.FieldByName("Predpr2_ID").AsInteger:=form3.Table1.FieldByName("ID").AsInteger;
form3.Table3.Post;
Ошибка возникает при insert. Кто-нибудь знает как тут быть.
Извените, но я не понял насчет еще одной таблицы, как это осуществить?
← →
RIV_ (2003-03-02 01:22) [6]Извиняюсь за путаницу. Я выдернул код прямо из текста программы, там эта таблица обзывается table3 вместо table2
← →
Johnmen (2003-03-02 01:29) [7]Вместо Table2 ставишь Query2 и в нем никаких лукапных полей !
А наименования получаешь в запросе.
← →
RIV_ (2003-03-02 02:39) [8]Большое спасибо всем, кто пытался мне помоч. Тепеь я сам разобрался. Привожу решение проблемы, может кому понадобится...
На ботытие AfterPost таблицы, в которой редактировалось поле
повесил обновление LookUp-ного поля (оно у меня четвертое,
считая с нуля).
procedure TForm3.Table1AfterPost(DataSet: TDataSet);
var
Bookmark1,
Bookmark2:Pointer;
begin
Bookmark1:=form3.Table1.GetBookmark;// Закладка в первой таблицы
Bookmark2:=form3.Table3.GetBookmark;// Закладка во второй таблицы
Table3.Fields[4].RefreshLookupList;// Обновляем lookUp поле
// В этот момент указатель
// устанавливается на первую
// запись в обоих таблицах
Table1.GotoBookmark(Bookmark1);// Переход на закладку в первой таблице
Table3.GotoBookmark(Bookmark2);// Переход на закладку во первой таблице
Table1.FreeBookmark(Bookmark1);// Освобождаем память под первой закладкой
Table3.FreeBookmark(Bookmark2);// Освобождаем память под второй закладкой
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c