Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.10.2012, 01:12
Аватар для Dux
Dux Dux вне форума
Активный
 
Регистрация: 18.03.2008
Сообщения: 206
Репутация: 16
По умолчанию Как проверить наличие записи с через 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;
Ответить с цитированием
  #2  
Старый 31.10.2012, 07:53
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

select count(*) from ...

select 1 as foo from ... where exists(select * from data where ...)
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 31.10.2012, 13:05
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

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

Код:
Код:
Edit1.text:='Иванов Иван';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Data');
ADOQuery1.SQL.add('WHERE Name like ''' +'%'+Edit1.Text + '%''');
ADOQuery1.ExecSQL;
Тебе здесь нужно использовать не ExecSQL, а Open. Тогда можно проверить так:
Код:
  if ADOQuery1.IsEmpty
    then ShowMessage('Записей не найдено')
    else ShowMessage('Записи найдены');
Ответить с цитированием
  #4  
Старый 31.10.2012, 13:26
Аватар для Dux
Dux Dux вне форума
Активный
 
Регистрация: 18.03.2008
Сообщения: 206
Репутация: 16
По умолчанию

Спасибо, попробую!

А есть ли какой-то спосбо это сделать в фоновом режиме? не открывая таблицу?
Ответить с цитированием
  #5  
Старый 31.10.2012, 14:06
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Dux
А есть ли какой-то спосбо это сделать в фоновом режиме? не открывая таблицу?
Чтобы в фоновом режиме это тебе нужно использовать нити (потоки) TThread или BeginThread.
Не открывая таблицу - смотри во втором сообщении, что тебе написал M.A.D.M.A.N.. Но там тоже нужно использовать не ExecSQL, а Open и считываешь значение единственной записи с единственным полем.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter