Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Lookup-поле в dbGrid, замучался уже... 
:(
    Опции темы
Bose
  Дата 31.10.2005, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



есть 2 таблицы(ADO):
поля таблицы 1: name(text), type_id(integer)
поля таблицы 2: id(integer), type(text)

на форме есть: ADOtable1, ADOtable2, datasetTable1 и datasetTable2 и dbGridTable1(связанный с datasetTable1 - т.е. содержимое таблицы1 отображается в гриде).

как сделать, чтобы в dbGridTable1 в поле type_id вместо цифры(integer) отображался соответствующий текст(поле type) из таблицы2 (т.е. поле таблица1.type_id должно быть связано с полем таблица2.type)?


PM MAIL WWW Skype   Вверх
bas
Дата 31.10.2005, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

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



Цитата(Bose @ 31.10.2005, 13:00)
(т.е. поле таблица1.type_id должно быть связано с полем таблица2.type)?

Да.
PM MAIL   Вверх
Bose
Дата 31.10.2005, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



ой... вообще вопрос был не в том, должно ли поле таблица1.type_id должно быть связано с полем таблица2.type;-) , а в том как сделать чтобы в поле type_id открывался ComboBox, в котором можно было выбрать нужный тип. И чтобы значения для этого ComboBoxа брались из соответствующей таблицы(таблица2). Короче. Нужно сделать Lookup. только у меня почему-то не получается это сделать со стандартным dbGrid'ом.

Что я делал:
в ADOtable1 открыл список полей.
Выделил поле type_id.
Поставил для него FieldKind:=fkLookup,
в LookupDataSet указал ADOtable2,
KeyFields указал type_id,
LookupKeyFields:=id,
LookupResultField:=type.

Вроде все сделал как надо.
Но в столбце type_id у меня ничего не показывается. И никаких намеков на ComboBox... smile
PM MAIL WWW Skype   Вверх
lotax
Дата 31.10.2005, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



используй PickList (закидай туда данные)...
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Bose
Дата 31.10.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



PickList не подходит. Мне надо, чтобы в поле отображался текст, а хранились индексы...
PM MAIL WWW Skype   Вверх
lotax
Дата 31.10.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



smile , тоесть ты хочешь, чтоб из списка выбрать type и показать type_id
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Bose
Дата 31.10.2005, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



нет... smile
я хочу чтобы, юзер вместо type_id видел type, и выбирал из списка возможных type(которые хранятся в таблице2), но чтобы в базе в таблице сохранялся не текст type, а id этого type'a - type_id. smile
PM MAIL WWW Skype   Вверх
lotax
Дата 31.10.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



создай логическое поле, в Gride за этим полем закрепи PickList, также положи Combobox(сделай его невидимым если он тебе не нужен), далее кидай данные в PickList -type, а в Combobox -id, а потом по индексу ищи ID и запоминай его в таблице.
--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Bose
Дата 31.10.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



это слишком сложно=). В Дельфи(7) должны быть встроенные средства, для выполнения таких задач. С ними-то я и не могу разобраться.

Сейчас я продвинулся чуть дальше. Теперь я не изменяю свойства поля type_id, а добавляю новое поле MyType к ADotable1, и настраиваю его свойства для выполнения Lookup'a...
Пока что, при попытке установить курсор в поле MyType получаю сообщение EVariantTypeCastError. Cannot convert variant of type(string) into type(double). Сижу и недоумеваю, откуда там double взялся..

Это сообщение отредактировал(а) Bose - 31.10.2005, 15:12
PM MAIL WWW Skype   Вверх
Bose
Дата 31.10.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



yep! smile
я разрешил свою проблему. Оно заработало. smile

Ошибка преобразования типов выскакивала, потому, что когда я добавлял новое поле MyType к ADotable1, я указывал его тип такаким же как и у поля type_id(integer), а надо было как у поля type(string).

p.s> а откуда float брался, до сих пор не ведаю... smile
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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