Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Delphi: Проблемы с Lookup-полями


Автор: Solominka 11.4.2011, 16:42
В общем, перенос из предыдущей темы.

СУБД Paradox7

Связь такая: DBGrid -> DataSource -> Query -> UpdateSQL.

Мне нужно, чтобы в первой таблице в поле Pole2 отображалось содержимое поля Poles из второй таблицы как лукап-поле (раскрывающийся список).
Делаю всё как написано в большинстве статей по этому поводу, но выдаёт такую ошибку: 

Exception EDatabaseError in module Project1.exe at 000751BD. Lookup information for field 'Pole2' is incomplete.

Исходник можно найти ниже.

cat512, я скачала ваш вариант, поменяла путь к базам на свой и у меня всё та же самая ошибка.

Цитата

Дык 1 табличка пустая. Как будут идент. записи в подчинёном датасете?


А как я их введу, если оно не запускается толком =_=

Цитата

На будующее, большая просьба, смотри дэмки от Bjrland, там всё показано


Что это и где это взять? >__>

Автор: cat512 11.4.2011, 16:46
Цитата

А как я их введу, если оно не запускается толком =_=

Ну я как то же ввёл!
Цитата

Что это и где это взять? >__>

c:\Program Files\Borland\Delphi7\Demos\ - в этом каталоге находятся все дэмки, поставляеммые разработчиками, пользователю
c:\Program Files\Borland\Delphi7\Demos\Db\CtrlGrid\ - здесь лежит пример с lookup полем

Автор: Solominka 11.4.2011, 16:47
Цитата

Ну я как то же ввёл!


Так вот я и спрашиваю, КАК.  smile 

Я делала следующее: сначала заполняла справочник, а потом пыталась сделать Лукап-поле.
Но это мне не помогло, ошибка та же.

Цитата

c:\Program Files\Borland\Delphi7\Demos\ - в этом каталоге находятся все дэмки, поставляеммые разработчиками, пользователю
c:\Program Files\Borland\Delphi7\Demos\Db\CtrlGrid\ - здесь лежит пример с lookup полем 


Спасибо, я посмотрю сейчас.

Автор: Akella 11.4.2011, 16:47
Советую взять какую-нибудь книгу для начинающих по Delphi и базам данных и прочитать, как настроить Lookup поля.  Да и в тырнете хватает инфы. На форуме тоже был ответ. Поиск тебя спасёт.

Автор: Solominka 11.4.2011, 16:54
Цитата

Советую взять какую-нибудь книгу для начинающих по Delphi и базам данных и прочитать, как настроить Lookup поля.  Да и в тырнете хватает инфы. На форуме тоже был ответ. Поиск тебя спасёт. 


Я искала, честно. И я бы не стала здесь писать, если бы нашла - мне как бы тоже не в кайф тратить кучу времени, - как своего, так и чужого.
Я делаю всё, как написано - но у меня ошибка и даже пример cat512 у меня не работает.

Я бы и сама с радостью решила бы свои проблемы и никого бы не мучила - если бы могла.

Цитата

c:\Program Files\Borland\Delphi7\Demos\Db\CtrlGrid\


Лукап-поля там не нашла, как ни искала =_= Увы. И в таблицу даже изменений внести нельзя... Да и вообще пример больно мутный и сложный какой-то...

Автор: cat512 11.4.2011, 17:06
Барышня, с таким подходом, вы ничему не научитесь!
Цитата

Я делала следующее: сначала заполняла справочник, а потом пыталась сделать Лукап-поле.
Но это мне не помогло, ошибка та же.

Ну где логика??? Сначала сделать записи в подчинёной табличке, а потом ссылаться на неё пустыми значениями ключевого-поля
Цитата

Я делаю всё, как написано - но у меня ошибка и даже пример cat512 у меня не работает.

Пути не надо было менять
Цитата

Лукап-поля там не нашла, как ни искала =_= Увы. И в таблицу даже изменений внести нельзя... Да и вообще пример больно мутный и сложный какой-то.

А датамодуль открыть не судьба? Поле IndustryLongName (tblMasters)

Автор: Solominka 11.4.2011, 17:21
Цитата

Барышня, с таким подходом, вы ничему не научитесь!


С каким "таким"? =__=

Цитата

Пути не надо было менять


А ничего, что у меня диска G как бы нет в системе?

Цитата

А датамодуль открыть не судьба? Поле IndustryLongName (tblMasters)


Знать бы ещё, что это такое и как выглядит - было бы вообще замечательно.
Большая просьба - если что-то пишите - пишите пожалуйста досконально и полностью. Можете считать меня полным неувязком и чайником - это ваше право.

Автор: cat512 11.4.2011, 18:04
Цитата

С каким "таким"? =__=

У меня сложилось впечатление, что ты, не хочешь приложить минимум усилий, для решения проблемы.
Тебе указали пример, где можно посмотреть lookup - поля, а ты не сделала минимум телодвижений, в эту сторону. Поэтому я так и написал. А разжёвывать элементарные вещи, тебе здесь никто не будет. Надо учиться добывать информацию самой.
Цитата

А ничего, что у меня диска G как бы нет в системе?

smile конечно же ничего, можно воспользоваться SUBST-ом что бы подмонтировать директорию как сетевой диск. А можно просто правильно изменить пути, не на свои БД, а на те которые были в архиве
Цитата

Знать бы ещё, что это такое и как выглядит - было бы вообще замечательно.

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

Автор: Solominka 11.4.2011, 18:22
Цитата

У меня сложилось впечатление, что ты, не хочешь приложить минимум усилий, для решения проблемы.
Тебе указали пример, где можно посмотреть lookup - поля, а ты не сделала минимум телодвижений, в эту сторону. Поэтому я так и написал. А разжёвывать элементарные вещи, тебе здесь никто не будет. Надо учиться добывать информацию самой.


Я сделала - но лукап поля в этом примере так и не нашла. Либо вы выражаетесь так, что я не верно понимаю то, о чём вы говорите, ибо я - нуб.

Я умею добывать информацию и гуглом пользуюсь ежедневно. Но проследить какие-либо закономерности между своим примером и примерами которые мне удалось найти - я не могу. Если бы смогла - не мучила бы никого и сама бы не мучилась. =_=

Я уже который день бьюсь с проблемой лукап-полей, для вас это наверное смешно, а у меня уже дела до слёз дошли.

И вообще, причём тут путь к БД? Он может быть каким угодно, не так ли?

Цитата

Поле IndustryLongName (tblMasters)


Я нашла в примере это поле и оно явно не типа лукап.

Кроме того, в примере вообще одна таблица, хотя для того, что нужно МНЕ - нужно как минимум две.

Цитата

или как его открыть?

Именно это мне и надо.

Просто никогда ещё не доводилось лезть в такие дебри.

Цитата

конечно же ничего, можно воспользоваться SUBST-ом что бы подмонтировать директорию как сетевой диск. А можно просто правильно изменить пути, не на свои БД, а на те которые были в архиве


Ничем из этого никогда в жизни не занималась.

Автор: superVad 11.4.2011, 20:11
Solominka
Такое дело - у тебя Query1 открывается раньше чем Form2.Query1.
Поставь им обоим Active в False.

А в  FormShow сделай так.

Код

procedure TForm1.FormShow(Sender: TObject);
begin
  Form2.Query1.Active := True;
  Query1.Active := True;
end;


И в Form2.Query1 уже должны быть данные.
Т.е. удали лукапы, введи данные и создай лукапы.

Автор: Solominka 11.4.2011, 20:34
superVad, ура, работает!!!!!  smile 

Большое Вам спасибо!!!
Очень вам признательна!  smile

Добавлено @ 20:41
Ой... только теперь у меня другая проблема.

При выборе варианта Лукап-поля - в первой таблице присваивается айди выбранного варианта, а не тот, который я вводила вручную =__=

С чем это может быть связано?

Автор: superVad 11.4.2011, 22:05
Цитата(Solominka @  11.4.2011,  19:34 Найти цитируемый пост)
Ой... только теперь у меня другая проблема.При выборе варианта Лукап-поля - в первой таблице присваивается айди выбранного варианта, а не тот, который я вводила вручную =__=С чем это может быть связано?

Не уловил проблемы?
Меняешь АйДи - меняется значение лукапа, меняешь лукап - меняется АйДи?
Что надо что бы происходило?

Автор: Solominka 11.4.2011, 22:15
Цитата

Меняешь АйДи - меняется значение лукапа, меняешь лукап - меняется АйДи?


Да, именно так =__=
Выбираешь Лукап - и в таблице высвечивается АйДи лукапа. А нужно чтобы оно не менялось. Короче чтобы этой зависимости не было вообще.
Айди я ввожу сама с клавиатуры и надо чтобы оно без изменений оставалось вне зависимости от того, какой лукап я выбираю.

Автор: cat512 11.4.2011, 22:30
Цитата

Ой... только теперь у меня другая проблема.

Сериал продолжается smile

Автор: Solominka 11.4.2011, 22:42
Цитата

Сериал продолжается


Вообще-то это не смешно =(

Автор: superVad 11.4.2011, 22:47
Цитата(Solominka @  11.4.2011,  21:15 Найти цитируемый пост)
Выбираешь Лукап - и в таблице высвечивается АйДи лукапа. А нужно чтобы оно не менялось. Короче чтобы этой зависимости не было вообще.Айди я ввожу сама с клавиатуры и надо чтобы оно без изменений оставалось вне зависимости от того, какой лукап я выбираю.

Я вижу ты не понимаешь суть пустоши лукапов.
Давай ты опишешь, какого поведения хочешь добиться от программы - желательно в новой теме.
Боюсь это может оказаться http://www.gunsmoker.ru/2008/10/x-y-z.html.

Автор: Solominka 11.4.2011, 23:17
superVad, вот http://forum.vingrad.ru/forum/topic-326845.html

На счёт ОНО - вы скорее всего правы =__=

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)