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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2008, 11:02   #11
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

Вот и весь фокус, но уважаемые программисты вы так и не поможете мне с моим вопросом??? Повторою еще раз...

У меня во всей таблице есть два поля сумм - Сумма_покупки, Сумма_продажи, когда оба эти поля принимают серый цвет я вообще не показываю эту строку в запросе (это я осуществил сделал правильно), но мне теперь надо чтобы когда одно из этих полей принимает серый цвет то в запросе просто выводить на месте этой ячейке просто значение ноля... заранее благодарен за помощь.

А с цветом кому действиетельно надо будет могу выслать пример работы приложения!!!
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 22.03.2008, 12:34   #12
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Killer_djon, я полагаю, что все сложности связаны как раз с представлением цветов в виде текста. Храните численные значения, скажем в blob'е или бинарной строке, тогда в Дельфи Вы сможете работать с ними просто как с массивом цветов, а в SQL строить условия по тому же, например, substr.
B_N вне форума Ответить с цитированием
Старый 22.03.2008, 14:04   #13
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

B_N нет отнюдь сложности не с представлением цветов в виде текста, с этим проблем нету я вас уверяю... в крациях задача такая:
когда оба поля Сумма_покупки и Сумма_продажи имеют серый цвет тогда мне не нужно выводить в запросе вообще такую строку... т.е. в строке где хранятся цвета (а в общей сложности у меня 22 поля), у меня есть такое условие, чтобы не выводилась строка:
... where (color LIKE "%clSilver;clSilver%") - и все работает замечательно, изначально было условленно в постановке задачи что серый цвет будет присваиватся только этим полям! А вот чтобы значение одного из этих двух полей было 0 (т.е. в результирующем наборе данных вместо суммы подставить 0), не получается! Точнее единственное что я прошу мне подсказать - это как вывести в запросе значение 0 ... как поставить условие я знаю!!!

Для чего это нужно: для того чтобы дебет с кредитом сводились... а серым цветом указывается поле для того чтобы дать понять что эта сумма не должна учитыватся в сводках... соответственно если сумма_покупки серым значит в дебете этой строки 0, ну и наоборот если сумма_продажи серым то в кредите 0...
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 22.03.2008, 16:22   #14
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Что-то никак я не пойму, что именно, нужно сделать, но подозреваю, что Вас должен спасти "IF". Что-нибудь вроде:
Код:
select ....., IF( (field1 = серый OR field2 = серый), 0, Sum_Pok) as Sum, .... where .....
B_N вне форума Ответить с цитированием
Старый 25.03.2008, 11:35   #15
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

B_N большое спасибо в принципе даже очень правильно и грамотно, единственное прошу мне объяснить принцип работы оператора IF:

IF( (field1 = серый OR field2 = серый), 0, Sum_Pok) as Sum - вот здесь все понятно за исключением одного: меня интерисуют параметры, если можно поподробнее пожалйста объясни мне как мне с ними работать???
Большое спасибо заранее!!!
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 25.03.2008, 11:57   #16
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Killer_djon Посмотреть сообщение
IF( (field1 = серый OR field2 = серый), 0, Sum_Pok) as Sum - вот здесь все понятно за исключением одного: меня интерисуют параметры, если можно поподробнее пожалйста объясни мне как мне с ними работать???
Большое спасибо заранее!!!
Код:
IF(expr1,expr2,expr3)
Если expr1 истинно, то возвращается expr2, иначе expr3. Остаётся надеятся, что в парадоксе тоже так.
B_N вне форума Ответить с цитированием
Старый 25.03.2008, 11:59   #17
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

Вот в том то и дело, что этот синтаксис используется в InterBase насколько я знаю, поэтому применение данного оператора в моей задаче, очень даже верное... но он при выполнении запроса выдает ошибку IF
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 25.03.2008, 12:10   #18
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

А можно ли зделать следующим образом? Цвета всех ячеек в строке хранится в отдельном поле: т.е. таким образом 'clWhite;clWhite;clWhite'... и т.д., т.е. на каждую ячейку у меня по умолчанию цвет белый, а когда я изменяю цвет то в этой строке записывается, например: 'clWhite;clSilver;clWhite', т.е. это я изменил цвет ячейки (пересечение строки со столбцом 2), ну это пример, так вот это я к чему говорю можно ли применить IF вот так:

IF ((SUBSTRING(color FROM 121 FOR 8) = clSilver), 0, Sum_pok) ...

Подскажи как правильнее его можно зделать у меня выдает ошибку на операторе IF
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранимые процедуры... Только_Учусь БД в Delphi 2 17.07.2008 06:06
Блоб поля и хранимые процедуры yulia БД в Delphi 8 07.06.2008 16:42
задача на сложные действия со строками Converse Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2008 07:34