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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2011, 16:14   #1
WestDragon
Пользователь
 
Регистрация: 10.04.2011
Сообщений: 15
Печаль Поиск по базе данных

Есть Delphi 2010, пользуюсь компонентом MyDAC, В качестве БД используется MySQL
Через Query посылаю запрос: SELECT * FROM `clients` WHERE `Телефон №1` LIKE '+PhoneEdit1.Text+' or `Телефон №2` LIKE '+PhoneEdit1.Text+' or `Телефон №3` LIKE '+PhoneEdit1.Text+'

Если указать правильное значение телефона, тогда он выдаёт результат, который я считываю и использую так, как мне требуется. Но вот когда я ввожу неправильный телефон (которого нет в базе) он выдаёт ровным счётом ничего...Как мне отловить это ничего? Никак не получается.

Цитата:
Begin
If PhoneEdit1.Text = '' then
Begin

End
Else
Begin
AddData.sql.Text:='SELECT * FROM `clients` WHERE `Телефон №1` LIKE '''+PhoneEdit1.Text+''' or `Телефон №2` LIKE '''+PhoneEdit1.Text+''' or `Телефон №3` LIKE '''+PhoneEdit1.Text+'''';
AddData.ExecSQL;
If AddData.Fields[0].Value = ' ' then
Begin
ShowMessage('Совподения не найдены')
End
Else
Begin
ShowMessage('Было найдено совподение');
FIOprd.Text:=adddata.Fields[1].Value;
ADRESprd.Text:=adddata.Fields[2].Value;
PhoneEdit2.Text:=adddata.Fields[4].Value;
PhoneEdit3.Text:=adddata.Fields[5].Value;
End;
End;
End;
WestDragon вне форума Ответить с цитированием
Старый 20.08.2011, 16:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
LIKE '+QuotedStr('%'+PhoneEdit1.Text+'%')+...
И так далее. Изучай оператор LIKE в мануалах по SQL
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2011, 16:31   #3
WestDragon
Пользователь
 
Регистрация: 10.04.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
LIKE '+QuotedStr('%'+PhoneEdit1.Text+'%')+...
И так далее. Изучай оператор LIKE в мануалах по SQL
я уже окидывал взглядом что есть в документации на LIKE и остальные операторы... Мне требуется в случае, если в базе нет совподений, мне приходил ответ в виде 0 или ещё чего нибудь, что бы я мог отловить.... результат выполнения в phpmyadmin "MySQL вернула пустой результат (т.е. ноль строк)"....Как видно в коде который я скинул, я пытаюсь славить пустое значение ячейки...но почему-то не получается
WestDragon вне форума Ответить с цитированием
Старый 20.08.2011, 16:48   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

AddData.RecordCount - есть такое? Это как то, что нужно. И вместо AddData.ExecSQL - AddData.Open
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.08.2011, 16:51   #5
WestDragon
Пользователь
 
Регистрация: 10.04.2011
Сообщений: 15
Сообщение

Цитата:
Сообщение от Аватар Посмотреть сообщение
AddData.RecordCount - есть такое? Это как то, что нужно
Спасибо большое, выручил. Ответ меня устроил. О почему Open?
WestDragon вне форума Ответить с цитированием
Старый 20.08.2011, 16:58   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А в HELP глянуть различие между Open и ExecSQL слабо? Не будете туда заглядывать - NULL всегда будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.08.2011, 17:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Аватар
Верно, увидел, я проглядел.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2011, 17:15   #8
WestDragon
Пользователь
 
Регистрация: 10.04.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в HELP глянуть различие между Open и ExecSQL слабо? Не будете туда заглядывать - NULL всегда будет
Спасибо, думаю тема исчерпана
WestDragon вне форума Ответить с цитированием
Старый 20.08.2011, 19:55   #9
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Есть функция IsEmpty возвращает True если в таблице нет записей
Код:
  if AddData.IsEmpty then
     ShowMessage('Совподения не найдены')
  Else
     ShowMessage('Было найдено совподение') ;
Gulik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в базе данных Egik_net БД в Delphi 3 17.02.2010 21:47
Хэш-поиск по базе данных Deimossy Паскаль, Turbo Pascal, PascalABC.NET 1 13.05.2009 17:58
Поиск в базе данных St-Dyx Microsoft Office Excel 8 19.10.2008 12:13
Поиск по базе данных ERASERROR БД в Delphi 4 14.03.2008 16:34