Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2013, 10:07   #1
nety
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 10
По умолчанию DBLookupCombobox

Есть mdb соединяется через ADO c Delphi, данные в таблицу заполняюся таким образом :

Код:
ADOQuery1.Insert;
ADOQuery1.FieldByName('ddd').AsInteger:=StrToInt(DBLookupCombobox10.KeyValue);
ADOQuery1.Active:=True;
ADOQuery1.Post;
Если в DBLookupCombobox ничего не вводить,т.е. оставить его пустым вылетает ошибка - exception class EVariantTypeCastError with message 'Could not convert variant of type (Null) into type (String)'

подскажите как решить этот вопрос)



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 08.07.2013 в 10:21.
nety вне форума Ответить с цитированием
Старый 08.07.2013, 10:23   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проверять KeyValue что бы не Null был, например функцией VarIsNull
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.07.2013, 10:29   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я правильно понял вашу проблему - так Вам нужно просто предварительно проверить, не пустой ли дллукапкомбобокс?
можно попробовать так:
Код:
if (DBLookupCombobox10.KeyValue = Null) then // Сообщение об ошибке - не заполнены данные
else begin
  ... тут ваш код по вставке записи в датасет
end;

Цитата:
Сообщение от Аватар
Проверять KeyValue что бы не Null был, например функцией VarIsNull
Ага. Согласен. Можно и так, и так, наверное, даже лучше будет.

Последний раз редактировалось Serge_Bliznykov; 08.07.2013 в 10:33.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2013, 09:33   #4
nety
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 10
По умолчанию

Спасибо! С этим разобралась)
У меня ещё проблемка) Теперь мне нужно сделать как бы фильтр данных внутри DBLookUpComboBox..

имеется таблица (AdoTable) c областями, городами, улицами... столбцы : Name(текстовое) , Obl(числовое), Rating(числовое), Reg(числовое), Gor(числовое).

ListField = Name
KeyField = Obl


нужно чтобы отображалось поле Name, значение заносилось в базу из Obl (-с этим понятно)...Но! при этом Gor=0, Rating=3.
Подскажите с кодом как это написать)
nety вне форума Ответить с цитированием
Старый 10.07.2013, 10:55   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте на ту таблицу, которая связана с DBLookupComboBox наложить фильтрацию (через
Код:
ВашДатаСетСТаблицей.Filter := '(Gor = 0) and (Rating=3)';
ВашДатаСетСТаблицей.Filtered := true;
), если не получится, тогда через ADOQuery отбирайте нужные данные и именно его укажите в качестве источника данных для dblookupcombobox'а...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2013, 11:49   #6
nety
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 10
По умолчанию

а как мне связать два DBLookupCombobox? чтобы выбираешь допустим в одном район а в другом показывались его улицы?)
nety вне форума Ответить с цитированием
Старый 10.07.2013, 11:54   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от nety Посмотреть сообщение
а как мне связать два DBLookupCombobox? чтобы выбираешь допустим в одном район а в другом показывались его улицы?)
ну, принципиально, с фильтрацией данных (см. пост #5) Вы разобрались, всё получилось?

Тогда дальше просто. Вешаетесь либо на событие изменения данных в первом dblookupcombobox, либо на событие ухода фокуса с данного контрола. В обработчике пишете фильтрацию второго комбобокса в соответствии с выбранным значение первого (ведь фильтровать данные Вы уже умеете!). Вот и всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2013, 14:18   #8
nety
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, принципиально, с фильтрацией данных (см. пост #5) Вы разобрались, всё получилось?
Спасибо,разобралась более менее)

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Тогда дальше просто. Вешаетесь либо на событие изменения данных в первом dblookupcombobox, либо на событие ухода фокуса с данного контрола. В обработчике пишете фильтрацию второго комбобокса в соответствии с выбранным значение первого (ведь фильтровать данные Вы уже умеете!). Вот и всё.
нет,так не пойдет...оч много значений((
nety вне форума Ответить с цитированием
Старый 10.07.2013, 16:02   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
нет,так не пойдет...оч много значений((
э нет, значит, плохо организована структура представления данных.

Посмотрите, например, как организован КЛАДР (там тоже, конечно, не идеал, но, по крайней мере, иерархию построить легко можно)


кстати, формально, на ваш можно ответить так: используйте событие датасета OnFilterRecord и в нём проверяйте, подходит Вам запись или нет. Но я уверен, что при больших объёмах данных это будет работать крайне не быстро.. Поэтому, прислушайтесь к совету и ПРАВИЛЬНО структурируйте ваши данные.

Последний раз редактировалось Serge_Bliznykov; 10.07.2013 в 16:05.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBLookupComboBox Aleksey1989 БД в Delphi 1 01.06.2011 08:17
DBLOOKUPCOmbobox!!! pr0b3l Компоненты Delphi 1 02.06.2009 04:51
DBLookupComboBox Sergius X БД в Delphi 6 08.05.2009 17:08
DBLookupComboBox andirock2112 БД в Delphi 4 22.04.2009 14:40
DBLookupCombobox??? Alexcandr Компоненты Delphi 2 05.04.2007 16:46