Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi2007-IBDataSet. Lookup field 
:(
    Опции темы
dtp
Дата 29.6.2009, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Я новичек.
В IBDataSet создал 2 lookup дополнительных поля. Таблицы заполнены данными, но в lookup только в некоторых ячейках отображаются данные, иногда они появляются только если повторно ввести тот же самый номер в ключевое поле (столбец). То есть, в основной таблице храню ID имени и профессии, а в других таблицах - сами имена и профессии, и оттуда пытаюсь брать данные.
Но уже на стадии проектирования видно, что большинство ячеек в lookup полях пустое. Это выглядит так:

ID   | Name_ID|Prof_ID| Name       | Prof            |
1     |1             |1          |Александр|                   |
2     |1             |1          |                 |                   |
3     |2             |1          |Олег          | Строитель|
4     |3             |4          |Татьяна     | Дизайнер |


Использую Delphi2007, FireBird, IBExpert.
Создал базу данных. В ней 3 таблицы:
1 Таблица:
ID:Integer
Name_ID:Integer
Prof_ID:Integer

2 Таблица:
ID:Integer
Name:Char[20]

3 Таблица:
ID:Integer
Prof:Char[20]

В клиенте исползую 3 цепочки:
IBDatabase-IBTransaction-IBDataSet1-DataSource-DBGrid
+IBTransaction-IBDataSet-DataSource-DBGrid
+IBTransaction-IBDataSet-DataSource-DBGrid


PM MAIL   Вверх
Akella
Дата 29.6.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Хм... Может ты неправильно связал?
PM MAIL   Вверх
dtp
Дата 30.6.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Вот ссылка на файл - в нем база данных и клиент с исходниками.
http://files.wyw.ru/3744134

CodeGear Delphi2007, FireBird 2.5 Beta, компоненты InterBase

Может быть можете прокоментировать, почему созданные в IBDataSet  2 lookup поля не отображаются (или частично отображаются)?

Спасибо.
PM MAIL   Вверх
Akella
Дата 1.7.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Ты так и не написал, в какой кодировке создавалась база.

Добавлено через 1 минуту и 22 секунды
Советую убрать с FormActivate тот код. Событие FormActivate может быть вызвано за время работы приложения много раз. И каждый код в этом событии будет выполняться.

Добавлено через 6 минут и 33 секунды
Зачем ты для каждого НД создал отдельную транзакцию?
PM MAIL   Вверх
Akella
  Дата 1.7.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Чувааак, О_о ты зачем присвоил компонентам IBDataSet2 и IBDataSet3 Datasource1? Ты где такое вычитал? smile

Добавлено через 1 минуту и 7 секунд
Извини, исправленный проект выложить не могу, мой комп ща под капельницей.  smile 
PM MAIL   Вверх
dtp
Дата 1.7.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Akella, 
В компонентах IBDataSet2, IBDataSet3 в свойстве DataSource присвоен IBDataSet1, потому что в них используются такие SQL-запросы:
select * from TBL_NAMES where (ID_NAMES=:NAME_ID)
select * from TBL_PROF where (ID_PROF=:PROF_ID)

NAME_ID и PROF_ID берутся из IBDataSet1. 
Приём взят из книги "Библия Дельфи", никаких других, более дельных примеров не нашлось.

Жалко, что не можешь поделиться примером.  smile  smile 

А что насчет lookup полей?
PM MAIL   Вверх
Akella
Дата 2.7.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(dtp @  1.7.2009,  20:25 Найти цитируемый пост)
А что насчет lookup полей? 

Я уже ответил. Повторюсь

Цитата(Akella @  1.7.2009,  09:31 Найти цитируемый пост)
ты зачем присвоил компонентам IBDataSet2 и IBDataSet3 Datasource1?


Добавлено через 1 минуту и 3 секунды
А если тебе нужно Master-Detail, то кинь на форму отдельные наборы данных (НД). Нельзя использовать один и тот же НД и для lookup полей, и для Master-Detail.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.