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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 14:56   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Проверка на совпадение. Firebird.

Здравствуйте. Пишу одну прогу и возникла необходимость производить проверку на совпадение вносимых данных с уже имеющимися. Проверка обязательно должна проходить по двум поля: Дата(Dat) и Время(Vrem). То есть, например, пусть в БД есть значения 01.01.2010 и 16:00. Если я заношу такие же значения, то должно появится сообщение. Предполагаю, что код будет примерно таким:
Код:
 Form3.pFIBQuery1.SQL.Clear;
 Form3.pFIBQuery1.SQL.Text:='INSERT INTO VREMY(ID,Dat,Vrem) VALUES(null,:D,:V)';
 Form3.pFIBQuery1.ParamByName('D').Value:=Form1.Lable59.Caption;
 Form3.pFIBQuery1.ParamByName('V').Value:=Form1.Label60.Caption;
 Form3.pFIBQuery1.ExecQuery;
Словами условие будет примерно такое: "Если вводимое значение даты и времени совпадает с уже имеющимися, то показать сообщение о том, что есть такие значения. Иначе, показать сообщения, что таких сообщений нет"
Но вот как записать условие проверки?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.03.2010, 15:14   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

На вашем месте я бы написал хранимую процедуру и уже в ней проверял на поля на дубли)

Edit1
или
Код:
 Form3.pFIBQuery1.SQL.Clear;
 Form3.pFIBQuery1.SQL.Text:='SELECT COUNT(*) FROM VREMY WHERE Dat =:D AND Vrem = :V;';
 Form3.pFIBQuery1.ParamByName('D').Value:=Form1.Lable59.Caption;
 Form3.pFIBQuery1.ParamByName('V').Value:=Form1.Label60.Caption;
 Form3.pFIBQuery1.Open;
 if Form3.pFIBQuery1.Fields[0].AsInteger > 0 then
  ShowMessage('Есть такие записи')
 else
  ShowMessage('Нет таких записей');
maLoy*508 опередил

Edit2

soleil@mmc подправил
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 18.03.2010 в 16:09.
quit вне форума Ответить с цитированием
Старый 18.03.2010, 15:17   #3
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

пройдись поиском сразу...
если же просто нужно узнать есть записи с такими данными или нет, то
Цитата:
Select ...........
From VREMY
Where Dat = '...' and verm '...'
и потом просто проверь если RecordCount больше нуля, то записи есть, если ноль - нет...
я думаю логика ясна
maLoy*508 вне форума Ответить с цитированием
Старый 18.03.2010, 15:38   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

maLoy*508, можете подробнее написать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.03.2010, 15:44   #5
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

artemavd, я же, вроде как, написал то, что maLoy*508 имеет ввиду...
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 18.03.2010, 15:47   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

во-первых, можно сразу получить select count(*) и не надо никаких RecordCount дергать лишний раз

во-вторых, если тебе по условиям работы не нужно иметь каких-то дублей, то заведи уникальный ключ на эти поля - он сам отработает все что нужно (и проверит и скажет когда будет попытка вставить дубль)
soleil@mmc вне форума Ответить с цитированием
Старый 18.03.2010, 16:34   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

soleil@mmc, полностью согласен. +100
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
совпадение в записях kinnder Помощь студентам 3 06.03.2010 15:45
Проверка даты. Firebird artemavd БД в Delphi 10 18.10.2009 20:14
Совпадение имен формул mephist Microsoft Office Excel 4 13.10.2009 09:32
Совпадение или нет? lastochka Свободное общение 14 10.01.2009 23:02
Совпадение названий программ mutabor Свободное общение 3 25.10.2007 19:40