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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2008, 15:20   #1
dimple
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 10
Смущение delphi. Не могу понять с булевскими значениями

Вообщем так. Программа у меня написана. Надо просто подкорректировать её Суть вот в чем.
Существуют 5 компаний.(1,2,3,4,22)
id_company := IntTostr(ComboBox_kompan.ItemIndex) ; //для индекса(1,2,3,4,22)
Query_GreateKal.SQL.Clear; // запрос на вставку данных
if id_company1 = inttostr(22) then begin
Query_GreateKal.SQL.Add('insert into kalkul22 (nam_usl, kolued, st1, st21, st22, itogo )');
Query_GreateKal.SQL.Add('value (:nam_usl, :kolued, :st1, :st21, :st22, :itogo)')
end else begin
//Query_GreateKal.SQL.Clear; // запрос на вставку данных
Query_GreateKal.SQL.Add('insert into kalkul'+id_company1+' (nam_usl, kolued, st1, st21, st22, itogo)');
Query_GreateKal.SQL.Add('value (:nam_usl, :kolued, :st1, :st21, :st22, :itogo)');
end;

Query_Kal.SQL.Clear; // запрос на выборку данных
if id_company1 = inttostr(22) then Query_Kal.SQL.Add('select p.nam_usl, sum(a.kolued1) as kolued, sum(a.kolued1*p.st1) as st1, sum(a.kolued1*p.st23) as st23,'sum(a.kolued1*(p.st21+st22)) as itogo
from ' +ambul+ ' a, price'+id_company+' p, people pe where a.usl=p.k_usl and a.people=pe.unicod and a.cdate>=p.ActiveFrom and a.cdate<=p.ActiveTo ')
else Query_Kal.SQL.Add('select p.nam_usl, sum(a.kolued1) as kolued, sum(a.kolued1*p.st1) as st1, sum(a.kolued1*(p.st21+st22)) as itogo from ' +ambul+ ' a, price'+id_company+' p, people pe where a.usl=p.k_usl and a.people=pe.unicod and a.cdate>=p.ActiveFrom and a.cdate<=p.ActiveTo ');
Вот это небольшие фрагменты программы. Дак у меня произошло наложение и что 2 компания и что 22 компания - идут по запросу 22. Как мне записать, что если 22 - то true, а если 2 - то false.
Помогите пожалуйста мне!!!! Заранее спасибо.
dimple вне форума Ответить с цитированием
Старый 04.05.2008, 10:11   #2
Bor_Gus
Пользователь
 
Регистрация: 02.04.2008
Сообщений: 18
По умолчанию

Если у тебя ID компаний в числах, зачем ты работаешь со строками?
И проверь данные записанные в базе.
Bor_Gus вне форума Ответить с цитированием
Старый 04.05.2008, 13:54   #3
dimple
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 10
По умолчанию

С базами все хорошо. Они рабочие.
А вот программа уже написана была. Так что до меня умники писали.
А мне то теперь как сделать?
dimple вне форума Ответить с цитированием
Старый 04.05.2008, 16:22   #4
Bor_Gus
Пользователь
 
Регистрация: 02.04.2008
Сообщений: 18
По умолчанию

Ну синтаксически и логически, вроде, все правильно.
А насчет баз, я имелл ввиду проверь сравнивемые значения... Явно посмотри что в данный момент в памяти!
Bor_Gus вне форума Ответить с цитированием
Старый 05.05.2008, 01:53   #5
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

все правильно написано...Что именно тебя смущает? вопрос как-то не совсем понятен..
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 05.05.2008, 13:25   #6
dimple
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 10
По умолчанию

Вопрос не понятен.
Значит так. Фрагменты программы правильные. А вот выше этих фрагментов идет наложение 2 и 22 компаний, т.к.
id_company := IntTostr(ComboBox_kompan.ItemIndex) ; // это я уже писала выше
и сразу после этой строки идут следующие строки:
if ComboBox_kompan.ItemIndex = 3 then id_company1 := id_company+IntTostr(ComboBox1.itemI ndex+1)
else if ComboBox_kompan.ItemIndex=2 then id_company1 := id_company+IntTostr(ComboBox2.itemI ndex+1) else id_company1:=id_company;
дак вот тут - id_company+IntTostr(ComboBox2.itemI ndex+1) получаеться 22.
Соответственно, когда я делаю запрос на компаниию 2, получаеться он требует st23, которой в базе нет. Вот я и хочу сделать булевскую переменную. Если 22 - true, иначе 2 - false.
А как мне id_company1:=inttostr(2) - сделать булевской???
Я вообщем вся запуталась. Помогите!!! не бросайте меня
dimple вне форума Ответить с цитированием
Старый 05.05.2008, 13:30   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А может тут нужно воспользоваться инструкцией LIKE чтоб искать все двадцатки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2008, 09:24   #8
dimple
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 10
По умолчанию

А может так попробовать:
id_company2:=false;
....
if id_company1 = inttostr(2)
id_company2:=true; ??????????????????????????????????? ???
dimple вне форума Ответить с цитированием
Старый 06.05.2008, 13:13   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от dimple Посмотреть сообщение
А может так попробовать:
id_company2:=false;
....
if id_company1 = inttostr(2)
id_company2:=true; ??????????????????????????????????? ???
Все-таки непонятно, почему Вы используете id_company1. Номер компании в ComboBox_kompan.ItemIndex. Вот его и нужно сравнивать:

if ComboBox_kompan.ItemIndex = 2 then {}

в id_company1 хранится уже измененный номер с учетом combox1, combox2. В этой переменной не бывает двойки:

Цитата:
if ComboBox_kompan.ItemIndex=2 then id_company1 := id_company+IntTostr(ComboBox2.itemI ndex+1)
alexBlack вне форума Ответить с цитированием
Старый 07.05.2008, 08:57   #10
dimple
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 10
По умолчанию

Спасибо огромное всем, кто откликнулся!!! У меня все получилось!
Вот что сделала (если кому интересно ):
id_company2:=false;
id_company := IntTostr(ComboBox_kompan.ItemIndex) ; // для индекса прайса
if ComboBox_kompan.ItemIndex = 3 then id_company1 := id_company+IntTostr(ComboBox1.itemI ndex+1)
else if ComboBox_kompan.ItemIndex=2 then begin id_company1 := id_company+IntTostr(ComboBox2.itemI ndex+1);id_company2:=true; end else id_company1:=id_company;
И дальше вставила такую фразу:
if (id_company1 = inttostr(22)) and (not id_company2) then ...
Заработаллоо!!!
Еще раз огромное спасибо!!!
dimple вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять в чем проблема (код) diznt Помощь студентам 2 03.08.2008 10:20
Не могу понять задание amandra Помощь студентам 11 16.10.2007 10:24
Не могу понять, что требуется? Shuraken Общие вопросы Delphi 2 10.08.2007 11:41
не могу понять... Dutchman Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2006 07:14
Не могу понять задание Юдифь Помощь студентам 2 12.12.2006 17:40