|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2008, 15:20 | #1 |
Пользователь
Регистрация: 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. Помогите пожалуйста мне!!!! Заранее спасибо. |
04.05.2008, 10:11 | #2 |
Пользователь
Регистрация: 02.04.2008
Сообщений: 18
|
Если у тебя ID компаний в числах, зачем ты работаешь со строками?
И проверь данные записанные в базе. |
04.05.2008, 13:54 | #3 |
Пользователь
Регистрация: 29.04.2008
Сообщений: 10
|
С базами все хорошо. Они рабочие.
А вот программа уже написана была. Так что до меня умники писали. А мне то теперь как сделать? |
04.05.2008, 16:22 | #4 |
Пользователь
Регистрация: 02.04.2008
Сообщений: 18
|
Ну синтаксически и логически, вроде, все правильно.
А насчет баз, я имелл ввиду проверь сравнивемые значения... Явно посмотри что в данный момент в памяти! |
05.05.2008, 01:53 | #5 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
все правильно написано...Что именно тебя смущает? вопрос как-то не совсем понятен..
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
05.05.2008, 13:25 | #6 |
Пользователь
Регистрация: 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) - сделать булевской??? Я вообщем вся запуталась. Помогите!!! не бросайте меня |
05.05.2008, 13:30 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А может тут нужно воспользоваться инструкцией LIKE чтоб искать все двадцатки?
I'm learning to live...
|
06.05.2008, 09:24 | #8 |
Пользователь
Регистрация: 29.04.2008
Сообщений: 10
|
А может так попробовать:
id_company2:=false; .... if id_company1 = inttostr(2) id_company2:=true; ??????????????????????????????????? ??? |
06.05.2008, 13:13 | #9 | ||
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
if ComboBox_kompan.ItemIndex = 2 then {} в id_company1 хранится уже измененный номер с учетом combox1, combox2. В этой переменной не бывает двойки: Цитата:
|
||
07.05.2008, 08:57 | #10 |
Пользователь
Регистрация: 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 ... Заработаллоо!!! Еще раз огромное спасибо!!! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу понять в чем проблема (код) | 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 |