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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 13:48   #1
Arinka
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 52
Восклицание Вывод ошибки при условии....

Здравствуйте!!!!
У меня имеются таблицы Продукция и Заказы. В продукции есть поле количество. Мне нужно чтобы при заполнение заказа в поле количество выдавалось сообщение об ошибке, если допустим пользователь ввел заказ на 100 штук, но в базе имеется только 90 штук данной продукции
Как это можно осуществить? Подскажите пожалуйста!!!!!!!!
Вложения
Тип файла: rar Программа.rar (687.7 Кб, 14 просмотров)
Arinka вне форума Ответить с цитированием
Старый 05.06.2010, 14:05   #2
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

в каком виде храните данные...
какая база используется...
компоненты...
Kazik вне форума Ответить с цитированием
Старый 05.06.2010, 14:27   #3
Arinka
Пользователь
 
Регистрация: 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!!!!!!!!!

Сама разобраться не смогу((((((((((((((((((((((
Arinka вне форума Ответить с цитированием
Старый 05.06.2010, 14:29   #4
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

просто пробуй переводить значения в числовые...и сравнивай
Kazik вне форума Ответить с цитированием
Старый 05.06.2010, 14:32   #5
Arinka
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 52
Печаль

А как это сделать и куда вписать???????? Я ничего не понимаю..........
Arinka вне форума Ответить с цитированием
Старый 05.06.2010, 14:36   #6
Arinka
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 52
По умолчанию

Предлагали такой вариант:

If Количество < Заказа Then
Begin
ShowMessage('Текст ошибки');
End;

Только я не знаю куда вписать. Куда не вставляешь, ошибку выдает(((((((((
Arinka вне форума Ответить с цитированием
Старый 05.06.2010, 14:41   #7
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

нужно вставлять в обработчике твоем...где типа ввели заказ...и типа короче жмут на кнопку...мол...вези...
короче типа этого:
if Table3.Заказ()<Table3.склад() then
ShowMessage('код ошибки');
типа этого
Kazik вне форума Ответить с цитированием
Старый 05.06.2010, 14:50   #8
Arinka
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 52
По умолчанию

Я поняла что на кнопку ОФормить, а в какое именно место?
Arinka вне форума Ответить с цитированием
Старый 05.06.2010, 14:54   #9
Arinka
Пользователь
 
Регистрация: 06.05.2010
Сообщений: 52
По умолчанию

Можно на примере кода, который выше
Arinka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) 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