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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 13:23   #1
RoZi
Пользователь
 
Аватар для RoZi
 
Регистрация: 25.11.2007
Сообщений: 27
Печаль Проверка при внесении данных

Есть два dblookupcombobox, datetimepicker ну и таблица в которую с них вносятся данные отображает все это дело DBGRID база Paradox, а если допустим у нас есть уже такая строчка с такими данными(уже внесена фирма с определенным товаром на определенную дату), то должна программы выдавать ошибку.. как проверку сделать по этим трем показателям?? что-то у меня провал в мозгу не могу сообразить...

Последний раз редактировалось RoZi; 26.04.2009 в 13:50.
RoZi вне форума Ответить с цитированием
Старый 26.04.2009, 13:26   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Покажите кусок вашего кода. Так будет легче что-то придумать.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.04.2009, 13:41   #3
RoZi
Пользователь
 
Аватар для RoZi
 
Регистрация: 25.11.2007
Сообщений: 27
По умолчанию

на проверку еще что-то ничего не придумала, но это должно быть в этом куске:
Код:
with datamodule4.rinok_t do
begin
open;
insert;
if Edit2.Text = '' then showmessage ('Не все поля заполнены!') else begin
if dblookupcombobox1.Text = '' then showmessage ('Не все поля заполнены!') else begin
if dblookupcombobox2.Text = '' then showmessage ('Не все поля заполнены!') else begin
fieldbyname('Date').asstring:=datetostr(datetimepicker1.Time);
fieldbyname('Cena').asstring:=form5.Edit2.Text;
fieldbyname('Firma').asstring:=datamodule4.firma_t.FieldValues['Naimenovanie'];
fieldbyname('Naimenovanie').asstring:=datamodule4.tovar_t.FieldValues['Naimenovanie'];

post;
проверка должна проводиться по дате, фирме и наименованию, если строчка с данными которые мы пытаемся ввести существует то выдается ошибка.. не могу понять как вообще такую проверку можно сделать..

Последний раз редактировалось RoZi; 26.04.2009 в 13:49.
RoZi вне форума Ответить с цитированием
Старый 26.04.2009, 15:36   #4
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Первый вариант это проверять через цикл, но если много записей не выход, очень долго
Второй вариант через фильтрацию и если после сделанной фильтрации количество записей больше 0, то значит запись есть и ее не надо добавлять.
Третий вариант через SQL Запрос, там также, если записей больше 0, то не добавлять.
Например,
Код:
Adotable1.filter:='date='+quotedstr(Date.Text)+' and firma='+quotedstr(Firma.text)+' and name='+quotedstr(Name.txt);
AdoTable1.filtered:=True;
if Adotable1.recordcount=0 then
begin
Adotable1.insert;
{поля для присваивания}
Adotable1.post;
end;
Adotable1.filtered:=False;
Где то примерно так, при фильтрации посмотрите может скобки понадобятся.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 28.04.2009, 06:31   #5
RoZi
Пользователь
 
Аватар для RoZi
 
Регистрация: 25.11.2007
Сообщений: 27
По умолчанию

делаю
Код:
if (datamodule4.rinok_t.Locate('Firma',dblookupcombobox1.Text,[loCaseInsensitive,loPartialKey]))
 and (datamodule4.rinok_t.Locate('Date',datetostr(DateTimePicker1.Time),[loCaseInsensitive,loPartialKey]))
 and (datamodule4.rinok_t.Locate('Naimenovanie',dblookupcombobox2.Text,[loCaseInsensitive,loPartialKey]))
then showmessage ('ТАКИЕ ДАННЫЕ СУЩЕСТВУЮТ!') else begin
...
не срабатывает второй and первые отборки делает третью нет. Причем меняю местами опять не срабатывает последний.

Последний раз редактировалось RoZi; 28.04.2009 в 06:35.
RoZi вне форума Ответить с цитированием
Старый 28.04.2009, 08:17   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему бы не попробовать сделать уникальный индекс по этому полю, тогда в БД просто не сможет добавится повторяющееся значение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 11:27   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
А почему бы не попробовать сделать уникальный индекс по этому полю, тогда в БД просто не сможет добавится повторяющееся значение.
То есть поле с ID сделать автоинкриментным?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2009, 11:46   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
То есть поле с ID сделать автоинкриментным?
Нет. Именно уникальный индекс.
http://ru.wikipedia.org/wiki/Индекс_(базы_данных)
Цитата:
Уникальный индекс реализует ограничение целостности на таблице, исключая возможность вставки повторяющихся значений.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 12:38   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Stilet, ссылка не работает . Текст отсутстствует.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.04.2009, 10:36   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Stilet, ссылка не работает
а так??
Индекс (базы данных)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка при добавлении записи Tanya2008 БД в Delphi 3 22.04.2009 10:07
Проверка данных mehanek Microsoft Office Excel 3 17.04.2009 20:25
проверка введенных данных Elm0 Общие вопросы Delphi 4 19.12.2008 19:00
проблемы с chart, при внесении изменения данных график не хочет рисоваться Барби Помощь студентам 20 12.11.2008 15:58
Как заставить макрос работай автоматически при внесении данных ? artfunk Microsoft Office Excel 9 31.08.2008 20:01