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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 00:14   #1
Игорь Обухов
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 38
По умолчанию Проверка значения в дэлфи

Всем привет.вот такая проблема,надо написать программу по учету шерсти...имеются склады,у каждого из них имеется своя вместительность...я сделал расчетные поля.они показывают количество занятого и свободного места в складах.Как сделать проверку,которая при полностью занятом складе не даст внести в него эту шерсть????вот кусочек кода

Код:
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
//Здесь я подсчитываю количество шерсти,в выбранном цехе
ADOQuery3.SQL.Text:='select sum(kol_kip) as kol_vo from prinat where id_sklad='+IntToStr(DBLookupComboBox1.KeyValue);
ADOQuery3.Open;
if  "вот здесь надо написать условие"   then
begin
  MessageBox(Handle,'В данном складе нет места!!!','Сообщение',MB_OK or MB_ICONWARNING);
  Exit;
end;

Последний раз редактировалось ACE Valery; 16.06.2012 в 00:34.
Игорь Обухов вне форума Ответить с цитированием
Старый 16.06.2012, 02:25   #2
xrenomx
Пользователь
 
Аватар для xrenomx
 
Регистрация: 05.02.2011
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Игорь Обухов Посмотреть сообщение
Всем привет.вот такая проблема,надо написать программу по учету шерсти...имеются склады,у каждого из них имеется своя вместительность...я сделал расчетные поля.они показывают количество занятого и свободного места в складах.Как сделать проверку,которая при полностью занятом складе не даст внести в него эту шерсть????вот кусочек кода

Код:
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
//Здесь я подсчитываю количество шерсти,в выбранном цехе
ADOQuery3.SQL.Text:='select sum(kol_kip) as kol_vo from prinat where id_sklad='+IntToStr(DBLookupComboBox1.KeyValue);
ADOQuery3.Open;
if  "вот здесь надо написать условие"   then
begin
  MessageBox(Handle,'В данном складе нет места!!!','Сообщение',MB_OK or MB_ICONWARNING);
  Exit;
end;
Цитата:
select sum(kol_kip) as kol_vo
Если высчитываешь кол-во,то в sql используется Count,хотя может ты просто по "удобству" назвал kol_vo

Что касается темы,самому интересно каково решение,что-то не смог придумать))
xrenomx вне форума Ответить с цитированием
Старый 16.06.2012, 02:34   #3
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Код:
if ADOQuery3.FieldValues['kol_vo'] >= MaxKol_vo then
begin
  ShowMessage('В данном складе нет места!!!');
  ADOQuery3.Close;
  Exit;
end;
Karabash вне форума Ответить с цитированием
Старый 16.06.2012, 12:29   #4
Игорь Обухов
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 38
По умолчанию

А переменной maxkol_vo нужно приписать значение свободного места???
Игорь Обухов вне форума Ответить с цитированием
Старый 16.06.2012, 12:47   #5
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Цитата:
Сообщение от Игорь Обухов Посмотреть сообщение
А переменной maxkol_vo нужно приписать значение свободного места???
Разумеется. С каким-то значением мы должны сравнивать то что вернул запрос.
Karabash вне форума Ответить с цитированием
Старый 16.06.2012, 13:13   #6
Игорь Обухов
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 38
По умолчанию

вот написал,но не работает.

Код:
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
Maxkol_vo:=Form3.ADOQuery2free.AsInteger;
ADOQuery3.SQL.Text:='select sum(kol_kip) as kol_vo from prinat where id_sklad='+IntToStr(DBLookupComboBox1.KeyValue);
ADOQuery3.Open;
if ADOQuery3.FieldValues['kol_vo'] >=maxkol_vo then
begin
  MessageBox(Handle,'В данном складе нет места!!!','Сообщение',MB_OK or MB_ICONWARNING);
  Exit;

Последний раз редактировалось ACE Valery; 16.06.2012 в 14:19.
Игорь Обухов вне форума Ответить с цитированием
Старый 16.06.2012, 13:26   #7
Игорь Обухов
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 38
По умолчанию

понял ошибку.значение переменной,которая показывает количество свободного места(т.е.Free),надо в select выбрать...но как его там выбрать??если это значение не находится в базе,оно рассчитывается на другой форме в CalcFields..
Игорь Обухов вне форума Ответить с цитированием
Старый 16.06.2012, 13:42   #8
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Цитата:
количество свободного места(т.е.Free),надо в select выбрать...
Нет, наверное. Количество ЗАНЯТОГО места и количество СВОБОДНОГО места взаимозависимы. Т.е., достаточно подсчитать количество занятого места, как сразу станет ясно сколько есть свободного места. Исходя из того условия, сколько мест для кип шерсти на складе есть вообще. Вот это "вообще" и надо знать независимо от того сколько кип приплыло, сколько уплыло.
Karabash вне форума Ответить с цитированием
Старый 16.06.2012, 13:49   #9
Игорь Обухов
Пользователь
 
Регистрация: 16.06.2012
Сообщений: 38
По умолчанию

ну вот я еще подправил

Код:
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
ADOQuery3.SQL.Text:='select sum(kol_kip) as kol_vo,"Вот здесь еще наверно надо написать это расчетное поле а как его тут описать,если его в базе то нету" from prinat where id_sklad='+IntToStr(DBLookupComboBox1.KeyValue);
ADOQuery3.Open;
Maxkol_vo:=ADOQuery3.FieldValues('').AsInteger;//а вот здесь я получается должен присвоить это значение переменной maxkol_vo
if ADOQuery3.FieldValues['kol_vo'] >=maxkol_vo then
begin
  MessageBox(Handle,'В данном складе нет места!!!','Сообщение',MB_OK or MB_ICONWARNING);
  Exit;
end;

Последний раз редактировалось ACE Valery; 16.06.2012 в 14:19.
Игорь Обухов вне форума Ответить с цитированием
Старый 16.06.2012, 14:31   #10
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Цитата:
Вот здесь еще наверно надо написать это расчетное поле...
А можно осведомиться зачем?
Насколько было понятно из вопроса, надо было вынуть из БД занятые места, в чем запрос вида: "select sum(kol_kip) as kol_vo..." вполне преуспел.
Чего надо еще то?

Цитата:
а вот здесь я получается должен присвоить это значение переменной maxkol_vo
Нутес - это значение вы должны знать заранее. Зачем же его тягать из БД. Разве только есть таблица, которая хранит общее количество мест в складах.

Последний раз редактировалось Karabash; 16.06.2012 в 14:35.
Karabash вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на правильность ввода значения archiolidius Общие вопросы C/C++ 1 14.02.2012 22:39
проверка валидности введеного значения cliv БД в Delphi 4 21.07.2011 00:21
Проверка значения в ini файле darvin232 Общие вопросы Delphi 2 10.04.2011 17:24
Проверка изменяющегося значения ячейки vanandr91 Microsoft Office Excel 3 16.11.2010 19:04
Проверка введенного значения yourself Microsoft Office Excel 4 21.04.2008 18:40