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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2012, 22:42   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Как проверить наличие записи с через SQL запрос

Добрый вечер!

Вопрос с SQL запросом. Необходимо проверить есть ли в таблице Data запись с фамилией "Иванов Иван", если есть, то ничего не делать, если нет то добавить новую запись.

Кое-что набросал, но как обработать найдена запись или нет не догоняю..

Код:
Edit1.text:='Иванов Иван';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Data');
ADOQuery1.SQL.add('WHERE Name like ''' +'%'+Edit1.Text + '%''');
ADOQuery1.ExecSQL;

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

ужас.
а если при вводе в едит ошиблись?
eval вне форума Ответить с цитированием
Старый 30.10.2012, 23:16   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT COUNT(*) AS CountRec FROM Data WHERE Name=:FIO');
ADOQuery1.Parameters.ParamByName('FIO').Value:=Edit1.Text;
ADOQuery1.Open;
if ADOQuery1.FieldByName('CountRec').AsInteger=0 then begin
  //нет в таблице Иванов Иван - можно вствить
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.10.2012 в 23:19.
Аватар вне форума Ответить с цитированием
Старый 31.10.2012, 00:51   #4
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT COUNT(*) AS CountRec FROM Data WHERE Name=:FIO');
ADOQuery1.Parameters.ParamByName('FIO').Value:=Edit1.Text;
ADOQuery1.Open;
if ADOQuery1.FieldByName('CountRec').AsInteger=0 then begin
  //нет в таблице Иванов Иван - можно вствить
end;
Ув. Аватар
Если можно, разъясните для тех кто в танке,

Код:
ADOQuery1.SQL.Add('SELECT COUNT(*) AS CountRec FROM Data WHERE Name=:FIO');
- этот запрос подсчитывает количество записей, содержащих в столбце Name значение FIO,

а что делает эта строчка?
Код:
ADOQuery1.Parameters.ParamByName('FIO').Value:=Edit1.Text;
Dux вне форума Ответить с цитированием
Старый 31.10.2012, 01:32   #5
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

собсно присваивает параметру :FIO значение Edit1.Text
p.s. инфо
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 31.10.2012, 12:39   #6
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Спасибо, разобрался!

Подскажите, а есть ли какой-то способ выполнить то же самое не открывая таблицу (без ADOQuery1.Open). Как-бы в фоновом режиме?
Dux вне форума Ответить с цитированием
Старый 31.10.2012, 13:02   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Субд какое
eval вне форума Ответить с цитированием
Старый 31.10.2012, 13:11   #8
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
Субд какое
Работаю с базами Access через ADO
Dux вне форума Ответить с цитированием
Старый 31.10.2012, 13:41   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как бы нет... Можно, конечно, вызвать ХП (хранимую процедуру), но для этого эту процедуру надо на сервере иметь.
Кроме того, по сути, она сделает тоже самое - выполнить запрос к таблице..

Чем же Вам ADOQuery1.Open не угодил?!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.10.2012, 13:47   #10
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Чем же Вам ADOQuery1.Open не угодил?!!
Просто хотелось работать с запросами без визулизации, просто получать результат (найден, не найден) и записывать в переменную.
Dux вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[B]Как проверить базу на наличие слов?[/B] Михаил Наимов PHP 1 02.05.2012 08:11
TDBDateEdit как проверить на наличие значения? delphicoding Общие вопросы Delphi 6 03.04.2012 11:34
Как проверить наличие программы googl Общие вопросы Delphi 13 22.03.2012 16:14
как проверить наличие папки на удаленном сервере? xxxsas PHP 4 18.01.2011 16:16
как проверить наличие определенного текста в строке jihot Общие вопросы Delphi 6 04.04.2010 18:40