![]() |
|
|
![]()
|
|
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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)? |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: 1 Всего: 2 |
Да. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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... |
|||
|
||||
| lotax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 18.4.2005 Где: KZ Репутация: нет Всего: нет |
используй PickList (закидай туда данные)...
--------------------
Говори, что думаешь и думай, что говоришь. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
PickList не подходит. Мне надо, чтобы в поле отображался текст, а хранились индексы...
|
|||
|
||||
| lotax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 18.4.2005 Где: KZ Репутация: нет Всего: нет |
--------------------
Говори, что думаешь и думай, что говоришь. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
нет...
я хочу чтобы, юзер вместо type_id видел type, и выбирал из списка возможных type(которые хранятся в таблице2), но чтобы в базе в таблице сохранялся не текст type, а id этого type'a - type_id. |
|||
|
||||
| lotax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 18.4.2005 Где: KZ Репутация: нет Всего: нет |
создай логическое поле, в Gride за этим полем закрепи PickList, также положи Combobox(сделай его невидимым если он тебе не нужен), далее кидай данные в PickList -type, а в Combobox -id, а потом по индексу ищи ID и запоминай его в таблице.
--------------------
Говори, что думаешь и думай, что говоришь. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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 |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 9 Всего: 51 |
yep!
я разрешил свою проблему. Оно заработало. Ошибка преобразования типов выскакивала, потому, что когда я добавлял новое поле MyType к ADotable1, я указывал его тип такаким же как и у поля type_id(integer), а надо было как у поля type(string). p.s> а откуда float брался, до сих пор не ведаю... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |