Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование выборки из двух таблиц 
:(
    Опции темы
Keeper89
Дата 18.5.2011, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Доброго времени суток.

Имеется 2 таблицы - Users (имеет UserName и RoleID) и Roles (имеет RoleID и RoleText).
Делаю их объединение (в TADODataSet) и вывожу в DBGrid в виде UserName RoleText.

Как обеспечить редактирование такой выборки стандартными компонентами типа DBEdit и DBLookupCombobox для RoleText?

Это сообщение отредактировал(а) Keeper89 - 18.5.2011, 00:27


--------------------
PM MAIL WWW   Вверх
superVad
Дата 18.5.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Сначала не правильно понял.

Какую таблицу надо редактировать? Покажи запрос выборки.

Это сообщение отредактировал(а) superVad - 18.5.2011, 14:54
PM MAIL   Вверх
Akella
Дата 18.5.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Никак. Одновременно для двух таблиц не бывает ни Insert into..., ни Update ...

Добавлено через 1 минуту и 14 секунд
Само название "Редактирование выборки" абсурдно. Редактировать можно запись, таблицу.
PM MAIL   Вверх
Keeper89
Дата 18.5.2011, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Таблица Users
UseID UserName UserRole
1 aaa 1 
2 bbb 2 

Таблица Roles
RoleID RoleName 
1 admin 
2 user 

Выборка 
UseID UserName RoleName
1 aaa admin
2 bbb user 

Хотелось бы, чтобы пользователь мог изменять «читабельные» значения типа admin и user, для чего и планировалась выборка. 

Возможно как-то сделать такое (или подобное)?


--------------------
PM MAIL WWW   Вверх
superVad
Дата 18.5.2011, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Keeper89, т.е. надо в таблице Users менять значение UserRole через выпадающий список с названиями ролей???
Лукап поле в гриде поможет или DBLookupCombobox.

А вот если ты хочешь RoleName в таблице Roles редактировать, то надо запрос по другому построить, но нельзя будет редактировать таблицу Users. Но мне кажется, что это вряд ли то что тебе нужно.
PM MAIL   Вверх
Keeper89
Дата 18.5.2011, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



superVad, если брать просто таблицу Users с DBLookupCombobox (со значениями из Roles) - все ок, но в гриде пользователь видит единицу и двойку, а хотелось бы, чтобы в гриде, как и в DBLookupCombobox отображались admin и user.


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


Творец
****


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

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



Цитата(Keeper89 @  18.5.2011,  16:34 Найти цитируемый пост)
Хотелось бы, чтобы пользователь мог изменять «читабельные» значения типа admin и user, для чего и планировалась выборка. 

наверное нужно использовать Lookup поля в гриде + сформировать запрос на изменение таблицы пользователей типа
Код

update users set group_id = :group_id

PM MAIL   Вверх
superVad
Дата 18.5.2011, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Цитата(Keeper89 @  18.5.2011,  18:45 Найти цитируемый пост)
superVad, если брать просто таблицу Users с DBLookupCombobox (со значениями из Roles) - все ок, но в гриде пользователь видит единицу и двойку, а хотелось бы, чтобы в гриде, как и в DBLookupCombobox отображались admin и user.

Для этого есть лукап поля в датасете. Грубо говоря клацни на датасете 2 раза. Потом правой клавишей на открывшемся окошке - Add all fields и после этого New Field. И создаешь и настраиваешь новое поле типа Лукап. Потом его можно добавить в грид.

Наверное все даже проще. В запросе выбирай код и название роли, а в гриде просто не выводи код, а выводи название. Возможно после Пост приедтся делать рефреш - не знаю, я не работал с АДО.

Это сообщение отредактировал(а) superVad - 18.5.2011, 21:53
PM MAIL   Вверх
Keeper89
Дата 18.5.2011, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Цитата(superVad @  18.5.2011,  21:49 Найти цитируемый пост)
Для этого есть лукап поля в датасете. Грубо говоря клацни на датасете 2 раза. Потом правой клавишей на открывшемся окошке - Add all fields и после этого New Field. И создаешь и настраиваешь новое поле типа Лукап. Потом его можно добавить в грид.

Решил сделать по этому варианту, имею такую картинку:
user posted image
Можно сделать так, чтобы уже имеющиеся значения отображались (сейчас как на картинке поля почему-то пустые)?


--------------------
PM MAIL WWW   Вверх
Keeper89
Дата 19.5.2011, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Поля загадочно появились при замене связки
TADODataSet - TADODataDriverEh - TMemTableEh - TDataSource
на
TADODataSet- TDataSource
...


--------------------
PM MAIL WWW   Вверх
superVad
Дата 19.5.2011, 08:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Цитата(Keeper89 @  18.5.2011,  21:45 Найти цитируемый пост)
Можно сделать так, чтобы уже имеющиеся значения отображались (сейчас как на картинке поля почему-то пустые)?

Такое может быть если не правильно настроить лукап.
PM MAIL   Вверх
Keeper89
Дата 19.5.2011, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Я конечно посмотрю что может быть не так, но настройки делал вроде бы идентичные для обеих связок.


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


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

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