Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DGrid обработка клика в выпад. списке lookop поля 
:(
    Опции темы
Uxas
Дата 22.2.2011, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Как обработать клик вы выпадающем списке lookop поля?. Расскажу для чего это мне нужно, может можно сделать как то иначе. У меня есть таблица языков, первое поле код страны, второе - код языка. Код страны в этом случае будет одно и то же число (я редактирую данные о стране в отдельном окне) у одной страны несколько языков, надо сделать так чтобы нельзя было выбрать в поисковом поле тот язык который уже есть у данной страны, то есть надо как то проверить есть ли такая запись уже в таблице если есть то выдать сообщение об ошибке. Или как то сделать чтобы те языки которые уже есть вообще не отображались в выпадающем списке.
PM MAIL   Вверх
chip_and_dayl
Дата 22.2.2011, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно проверку написать в событие BeforPost компонента АдоКвери или Адотабле или что там используется

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


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Uxas
Дата 22.2.2011, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно поподробнее?
PM MAIL   Вверх
chip_and_dayl
Дата 22.2.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Должно  выйти что-то типа

Код

procedure ...BeforePost(DataSet: TDataSet);
begin
  {делаем проверку, если на это код уже есть язык, то делаем отмену изменений или вставки  через  DataSet.Cancel; }

end;


Как  делать проверку я думаю сможете? считать данные которые выбрал пользователь и найти совпалдение


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Uxas
Дата 22.2.2011, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я еще плохо соображаю в этих делах, можете расписать подробно как сделать проверку? как выцепить значение которое пользователь выбрал в выпадающем списке?
PM MAIL   Вверх
chip_and_dayl
Дата 22.2.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вам в принципе нужно не на поле Lookup опираться.

В момент когда пользователь выбрал из списка  язык  и кликнул допустим по  другой ячейке,  что  вызывает автоматически метод  Пост.
Так вот, если перед моментом сохранения сделать проверку поле Язык (это  делается в BeforePost), то можно отменить операцию сохранения

Одним словом сделайте следующее  в BeforePost вставте следующий код

Код

ShowMessage(DataSet['имя_поля_язык']);


То в момент сохранения вы увидете язык который ввел пользователь.  Увидите до того, как запись еще сохранена в базе.

А теперь если сделать  следующее:

Код

if not FuncValidate  then  DataSet.Cancel;


То  беж  у нас есть  ф-ция  FuncValidate, которая  делает проверку, а не задан уже этот  язык для этой страны.

Как  реализовать  эту ф-цию?

Ну способов множество.

Один из вариантов ,  ф-ция принимает код страны, и код  языка. А в теле ф-ции  выполняется запрос, который смотрит в базу,  есть ли  уже такое сочетание данных

Это сообщение отредактировал(а) chip_and_dayl - 22.2.2011, 17:59


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
cat512
Дата 22.2.2011, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А не проще ли использовать параметризированный запрос,  по клику на контроле страны?
что - то типа;
Код

select languages from e_langs where country_id <> :pCountryId


PM MAIL   Вверх
chip_and_dayl
Дата 22.2.2011, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Контрол рисует ДбГрид поэтому так просто не сделать. Точнее не подсунуть ему свой запрос


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
cat512
Дата 22.2.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(chip_and_dayl @ 22.2.2011,  19:09)
Контрол рисует ДбГрид поэтому так просто не сделать. Точнее не подсунуть ему свой запрос

ещё раз: пользователь выбирает в lookup язык, в этот момент отправляем серверу запрос, подобный описанному выше и lookup заполниться нужными нам значениями. Или ещё лучший вариант - использовать фильтр датасета. Каким боком эдесь грид и отрисовываемый им контрол? Как мне кажется, здесь надо работать с наборами данных.
PM MAIL   Вверх
chip_and_dayl
Дата 22.2.2011, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



cat512
ММм, здесь же используется не компонент DBLookUP, а поле типа LookUp


--------------------
Фсё будет хорошо!!!
PM MAIL 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.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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