Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемка с DbLookUpComboBox 
:(
    Опции темы
Value
Дата 13.12.2005, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Имеется DbGrid и DbLookUpComboBox, DbLookUpComboBox должен брать данные из другой таблицы и передавать их в главную, но при выборе значения в главном DbGrid'е просто показывается та строка какое и значение у DbLookUpComboBox, а при выборе значения в DbGrid'е меняется значение DbLookUpComboBox на такое же как в DbGrid. Как устранить ошибку, чтобы при выборе значения надо было бы нажать кнопку чтобы значение из DbLookUpComboBox перенеслось в DbGrid, а без её нажатия просто показывались бы её значения ? и как сделать чтобы значения имеющиеся в главном гриде не отображались в DbLookUpComboBox ? smile
PM MAIL   Вверх
sexton
Дата 13.12.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


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

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



А почему нельзя комбобокс в грид встроить? DBGridEh это умеет...
PM MAIL WWW ICQ   Вверх
Bose
Дата 13.12.2005, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Value, просто не указывай у DBlookupComboBox свойства DataSource и DataField. А по нажатию на кнопку, считывай значение из DBLookupComboBoxю.KeyValue и сохраняй в нужное поле DBGrida
PM MAIL WWW Skype   Вверх
Value
Дата 13.12.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как сделать чтобы значения имеющиеся в главном гриде не отображались в DbLookUpComboBox ?
PM MAIL   Вверх
Bose
Дата 13.12.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Value @ 13.12.2005, 13:55)
как сделать чтобы значения имеющиеся в главном гриде не отображались в DbLookUpComboBox ?


Чтобы отфильтровать какие-либо значения воспользуйся фильтром =) (свойство Filter и Filtered у компонента TTable/TQuery, из которого DBLookupComboBox берёт значения)


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


Шустрый
*


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

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



установил filtered в true подскажите примерный код свойства filter чтобы в лукапе значения не отображались...
PM MAIL   Вверх
Bose
Дата 13.12.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



насколько я понимаю там используется синтаксис аналогичный заданию условий в Where части SQL-запроса.

например

MyDataset.Filter:='name <>'+ QuotedStr('Вася') + 'AND name <>'+QuotedStr('Петя');
MyDataset.Filtered:=True;
MyDataset.Refresh;

В лукапе не будут отображаться записи у которых поле name равно "Вася" или "Петя".


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


Шустрый
*


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

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



а можно написать вот так ?
if MyDataset.Filter=DbLookUpComboBox1.keyvalue then
MyDataset.Filtered:=True
else MyDataset.filtered:=false;
MyDataset.Refresh;
PM MAIL   Вверх
sexton
Дата 13.12.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


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

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



Нет, так нельзя. В Filter должно быть хоть какое-то условие.
PM MAIL WWW ICQ   Вверх
Value
Дата 13.12.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



но ведь пользователь не будетзнать какие значения есть а каких нет
Цитата

В лукапе не будут отображаться записи у которых поле name равно "Вася" или "Петя".

а нужно если в в главном гриде есть эти значения то их не должно быть в лукапе, значит надо переделать строку
MyDataset.Filter:='name <>'+ QuotedStr('Вася') + 'AND name <>'+QuotedStr('Петя');
PM MAIL   Вверх
sexton
Дата 13.12.2005, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


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

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



Именно smile
PM MAIL WWW ICQ   Вверх
Value
Дата 13.12.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как тогда 'name <>'+ QuotedStr('Вася') + 'AND name <>'+QuotedStr('Петя'); переделать ? smile
PM MAIL   Вверх
sexton
Дата 13.12.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sexton=Пономарь (eng)
**


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

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



1. Формируем фильтр 1-й раз
Код

MyDataset.Filter= 'ID <>' + DbLookUpComboBox1.keyvalue;

2. Для дальнейшей фильтрации:
Код

MyDataset.Filter=MyDataset.Filter + 'AND ID <>' + DbLookUpComboBox1.keyvalue;

где ID - ключевое поле датасета.

А вообще можно другим путем пойти - реализовать фильтрацию через sql-запросы. Если конечно у тебя датасеты для грида и комбобокса разные...
PM MAIL WWW ICQ   Вверх
Value
Дата 16.12.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот ещё вопрос...
Хочу ввести лукап со странами, мне для неё создавать новую таблицу и вводить все страны или есть какой нибудь способ полегче ?
PM MAIL   Вверх
Bose
Дата 16.12.2005, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Value @ 16.12.2005, 11:05)
мне для неё создавать новую таблицу и вводить все страны или есть какой нибудь способ полегче ?

таблицу всё-таки придётся создать, а вот список стран вручную составлять совершенно необязательно. В интернете можно найти практически любые списки в csv или txt файлах, и импортировать эти данные в свою таблицу.

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.1176 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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