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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 17:54   #1
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию Поиск по дате с через SQL запрос

Господа, столкнулся с такой проблемой, делаю в проге поиск по столбцам
вот в таком виде все работает, это поиск по 4-м столбцам
Код:
datamodulform.obrtable.sql.Add('select * from Обратившиеся where Фамилия like '''+lnameedit.text+
'%'+''' and Имя like '''+fnameedit.text+'%'+  ''' and Телефон like '''+phoneedit.text+'%'+  
 ''' and Категория like '''+catedit.text+'%'+  '''');
но мне нужно было добавить еще поиск по дате и когда я просто добавил к этой конструкции поиск по дате
Код:
datamodulform.obrtable.sql.Add('select * from Обратившиеся where Дата_обращения like 
'''+dateedit.text+'%'+''' and Фамилия like '''+lnameedit.text+'%'+  ''' and Имя like
 '''+fnameedit.text+'%'+   ''' and Телефон like '''+phoneedit.text+'%'+ ''' and Категория like '''+catedit.text+'%'+    '''');
у меня перестал работать поиск, никаких ошибок не показывает но ничего не ищет, в чем тут проблема?
причем если делать поиск отдельно по дате то все работает, вот так
Код:
datamodulform.obrtable.sql.Add('select * from Обратившиеся where Дата_обращения like '''+dataedit.text+ '''');
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 25.05.2013 в 18:44.
betirsolt вне форума Ответить с цитированием
Старый 25.05.2013, 18:17   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
если делать поиск отдельно по дате то все работает, вот так
Это удивительно.
А как вы понимаете лайк даты?
eval вне форума Ответить с цитированием
Старый 25.05.2013, 18:22   #3
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
eval
давайте без сарказма, как бы я это не понимал если делать отдельно по дате то все это работает как надо, что вы имеете ввиду? вместо лайк надо = ставить?
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 25.05.2013, 19:07   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
вместо лайк надо = ставить?
Вроде бы команда "лайк" используется только со строковыми полями. Прочие даты, интежеры, флоаты и иже с ними идут лесом.

И обратите внимание, в Ваших примерах несоответствие в названиях:

Код:
datamodulform.obrtable.sql.Add('select * from Обратившиеся where Дата_обращения like 
'''+dateedit.text
и

Код:
datamodulform.obrtable.sql.Add('select * from Обратившиеся where Дата_обращения like '''+dataedit.text+ '''');
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 25.05.2013 в 19:12.
Sciv вне форума Ответить с цитированием
Старый 25.05.2013, 19:19   #5
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

data date это я специально сделал, это разные эдиты, так как мне быть в данной ситуации? как добавить к этому коду поиск по дате? когда ставлю = там ошибка из за несоответствия форматов...
и если лайк с датой не дружит тогда почему этот код работает?
Код:
datamodulform.obrtable.sql.Add('select * from Обратившиеся where Дата_обращения like '''+dataedit.text+ '''');
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 25.05.2013 в 19:22.
betirsolt вне форума Ответить с цитированием
Старый 25.05.2013, 19:44   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

LIKE с датой не должен работать по определению. Почему не дает ошибку спроси у разработчиков провайдера и СУБД. Используй параметризированный запрос и последнее дело при этом для задания даты использовать TEdit. Контроль на правильность ввода даты в TEdit есть? Есть спец. компоненты для ввода даты, например DateTimePicker. Хотя тоже не сильно удобный, нужно время удалять из введенных данных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.05.2013, 20:42   #7
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

вы указываете на мои ошибки но не говорите как нужно делать правильно и не приводите пример кода и не исправляете мой код, для даты я использую maskedit
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос по дате и времени Demien БД в Delphi 12 29.12.2013 10:38
Поиск по дате через запрос The_Immortal C++ Builder 3 05.05.2012 21:34
SQL запрос по дате Ivan_RIV Microsoft Office Access 9 29.03.2010 12:32
SQL запрос по дате ННС Помощь студентам 0 04.04.2009 20:03
SQL Запрос по дате SERG1980 БД в Delphi 4 16.03.2009 14:04