Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 20:40   #1
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
Печаль DBGridEh LookUp fields

Здравствуйте.
Прошу искренне Меня простить за создание топика, т.к. подобных видел много, но так в конце концов ни один из них мне не помог!
опишу проблему:
использую связку Delphi, MySQL, компоненты доступа к БД MyDAC (MyQuery, MyDataSource), отображение в DBGridEh. навигация DBNavigator.

Таблица objects (условно главная)

Код:
CREATE TABLE `objects` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_org` int(11) DEFAULT NULL,
  `id_tip_obj` int(11) DEFAULT NULL,
  `id_str` int(11) DEFAULT NULL,
  `house_num` varchar(6) DEFAULT NULL,
  `corps_num` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=cp1251;
Таблица spr_object (условно справочник типов объектов)

Код:
CREATE TABLE `spr_object` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=cp1251;
пример содержимого таблицы tip_object:
Код:
id name                                     
1 Здание школы                             
2 Здание детского сада                     
3 Овощехранилище                           
4 Гараж                                    
5 Пристройка                               
6 Мастерские                               
7 Хозяйственный блок                       
8 Поликлиника                              
9 Административный корпус                  
10 Прачечная                                
11 Помещение центр
а

MyQuery1:
Код:
q_objects.SQL := 'SELECT * FROM objects'
MyQuery2:
Код:
q_tip_object.SQL := 'SELECT * FROM tip_objects'
лезу в FieldsEditor q_objects, добавляю все поля, у поля id_tip_obj выставляю след. св-ва:

1) FieldKind := fkLookUp
2) lookUpDataset := q_tip_object
3) lookUpKeyFields := id
4) lookUpResultfield := name
5) KeyFields := id_tip_obj

у q_objects и q_tip_object, св-во active в TRUE, и упс.... там где должен был быть выпадающий список в DBGridEh1 (поле id_tip_obj), пусто ...... уже замучался.....
P.S. на компонентах DBVolgaGrid все это работает на ура! но мне нужны именно DBGridEh по другим причинам, но без lookup'ов дальше двигаться нет смысла...

пожалуйста, давайте закроем эту тему раз и навсегда!

Последний раз редактировалось Adamrus; 10.04.2011 в 21:03.
Adamrus вне форума Ответить с цитированием
Старый 11.04.2011, 20:34   #2
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
По умолчанию

Отзовитесь хоть кто-нибудь =(
Adamrus вне форума Ответить с цитированием
Старый 14.04.2011, 13:49   #3
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
По умолчанию

есть тут кто?
Adamrus вне форума Ответить с цитированием
Старый 05.05.2011, 08:56   #4
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
По умолчанию

Отзовитесь кто-нибудь! Месяц бьюсь, не могу понять как решить эту задачу.

Следом еще вопрос:

к примеру выдергиваю в query1 основную таблицу, в query2 справочник.
в fieldseditor query1 add all fields, затем add new, выбираю все для LookUp поля, в результате получаю на одно поле больше чем реально в таблице, верно?
DBGrid подхватывает это lookup поле, но вылетает ошибка coudn't convert string to boolean, хотя id_tip_obj integer и id из справочника тоже int.
Adamrus вне форума Ответить с цитированием
Старый 05.05.2011, 11:29   #5
Adamrus
Пользователь
 
Аватар для Adamrus
 
Регистрация: 26.11.2009
Сообщений: 59
По умолчанию

Разобрался Сам:
маленькое уточнение: ни когда бы не подумал, что это так ужасно устроено, по сравнению с VolgaDBGrid.

Итак:

1) в fieldseditor add all fields

2) Newfields, настраиваем как во всех инструкциях по инету, но! тип поля указываем не тот, который id_cod (обычно целочисленный), а тип поля resultfield! т.е. в моем случае varchar(40), а точнее String, размер ест-но 40.

3) получаем в результате на 1 поле больше, чем в реальной таблице, что собственно и "не укладывалось" в моей голове.

4) делаем `id_tip_obj` visible в false, во все том же fields editor, сейчас не помню точно при добавлении в Grid по нажатию add all fields добавится ли это поле, но и там его можно сделать невидимым или убрать вовсе.

p.s. понимаю, весчь довольно тривиальная, но "в моей голове долго укладывалась", потратил пол дня чтобы осознать )))
Adamrus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TIBQuery fields Lion-Tiger БД в Delphi 12 16.08.2011 15:15
dbgrid.fields[x].value - ошибка wm_leviathan БД в Delphi 14 18.02.2010 16:48
Отличия Fields в 2003 и 2007 Word-aх Diego__ Microsoft Office Word 1 18.09.2009 23:42
delphi add all fields runtime tarakan1983 БД в Delphi 1 24.03.2009 13:05
delete where fields=null??? Geddar SQL, базы данных 1 02.06.2008 16:57