![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 52
|
![]()
Здравствуйте!!!!
У меня имеются таблицы Продукция и Заказы. В продукции есть поле количество. Мне нужно чтобы при заполнение заказа в поле количество выдавалось сообщение об ошибке, если допустим пользователь ввел заказ на 100 штук, но в базе имеется только 90 штук данной продукции Как это можно осуществить? Подскажите пожалуйста!!!!!!!! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 192
|
![]()
в каком виде храните данные...
какая база используется... компоненты... |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 52
|
![]()
Таблицы созданы в Database.
На форме у меня имеются 3 таблицы: Продукция, Клиенты и заказы. Я выбираю определенную продукцию (таблица 1), клиента , который заказал (таблица2), потом выбираю дату заказа(компонент DateTimerPicker) и количество продукции(компонент DBEdit). Далее нажимаю на кнопку Оформить и данные переводятся в таблицу Заказы. Процедура кнопки "Оформить": procedure TForm8.BitBtn1Click(Sender: TObject); var bool:boolean; begin bool:=false; date:=''; prod:=''; client:=''; colvo:=0; cost:=0; price:=0; str1:=''; str2:=''; if (DateToStr(DateTimePicker1.Date)='' ) or (ColvoEdit.Text='') then ShowMessage('Все поля должны быть обязательно заполнены!') else begin date:=DateToStr(DateTimePicker1.Dat e); str1:=Table2.FieldValues['product']; str2:=Table1.FieldValues['client']; prod:=Table2.FieldValues['art']; client:=Table1.FieldValues['CodeC']; colvo:=StrToInt(ColvoEdit.Text); price:=Table2.FieldValues['price']; cost:=colvo*price; bool:=false; Form8.Table3.Active:=false; Form8.Table3.Active:=true; Form8.Table3.First; {showmessage(SdelTable.FieldValues['art']); showmessage(prod); showmessage(SdelTable.FieldValues['codeC']); showmessage(client); showmessage(SdelTable.FieldValues['colvo']); showmessage(IntToStr(colvo)); showmessage(SdelTable.FieldValues['date']); showmessage(date); } // ищем есть ли в таблице такая запись while not Form8.Table3.Eof do begin if ((Table3.FieldValues['art']=prod) and (Table3.FieldValues['codeC']=client) and(Table3.FieldValues['colvo']=colvo) and (Table3.FieldValues['dataS']=date)) then begin bool:=true; exit; end else Table3.Next; end; if bool=false then begin Table3.Append; Table3.FieldValues['art']:=prod; Table3.FieldValues['codeC']:=client; Table3.FieldValues['dataS']:=date; Table3.FieldValues['colvo']:=colvo; Table3.FieldValues['cost']:=cost; Table3.Post; ColvoEdit.Text:=''; end; if bool=true then if (MessageDlg('Заказ покупателем '+ str2 +' на '+str1 + ' в количестве ' + ColvoEdit.Text + ' уже оформлен.' +#13+ 'Сохранить в любом случае?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin Table3.Append; Table3.FieldValues['art']:=prod; Table3.FieldValues['codeC']:=client; Table3.FieldValues['dataS']:=date; Table3.FieldValues['colvo']:=colvo; Table3.FieldValues['cost']:=cost; Table3.Post; ColvoEdit.Text:=''; end else ShowMessage('Сохранение отменено!'); end; end; procedure TForm8.FormCreate(Sender: TObject); begin Form8.Table2.Active:=true; Form8.Table1.Active:=true; colvo:=0; ColvoEdit.Text:=''; end; Проблема в том, что в DBEdit можно вводить любое значение. А мне нужно, чтобы при оформление заказа, выдавалась ошибка, если пользователь ввел 20 штук, а в базе только 3!!!!!!!!! Сама разобраться не смогу(((((((((((((((((((((( |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 192
|
![]()
просто пробуй переводить значения в числовые...и сравнивай
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 52
|
![]()
А как это сделать и куда вписать???????? Я ничего не понимаю..........
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 52
|
![]()
Предлагали такой вариант:
If Количество < Заказа Then Begin ShowMessage('Текст ошибки'); End; Только я не знаю куда вписать. Куда не вставляешь, ошибку выдает((((((((( |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 192
|
![]()
нужно вставлять в обработчике твоем...где типа ввели заказ...и типа короче жмут на кнопку...мол...вези...
короче типа этого: if Table3.Заказ()<Table3.склад() then ShowMessage('код ошибки'); типа этого |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 52
|
![]()
Я поняла что на кнопку ОФормить, а в какое именно место?
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 52
|
![]()
Можно на примере кода, который выше
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) | timepoka | Помощь студентам | 8 | 01.07.2011 13:20 |
Разметка страницы при условии | axaptaalex | Microsoft Office Excel | 2 | 20.03.2009 18:36 |
Вывод ошибки при вводе цифры 1..5 в поле Edit | prikolist | Общие вопросы C/C++ | 2 | 16.03.2009 00:22 |
Перенос данных из ячеек при условии | gavrylyuk | Microsoft Office Excel | 12 | 29.07.2008 12:33 |
DBGridEh+EditMask при условии. | Jenya | БД в Delphi | 1 | 03.03.2008 13:58 |