powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Калькулируемое поле. Помогите кто может, пожалуйста ...
8 сообщений из 8, страница 1 из 1
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34274053
StanislavKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ламерский вопрос, так что камнями не бить =)...

Есть база со столбцами "год выпуска" и "тип". Необходимо добавить ещё один столбец в котором, в зависимости от года (например с 86 по 92, с 93 по 97 и т.д.) и в зависимости от типа (грузовой, пассажир, ...) ставится заданное значения. Т.е. для определённого "типа" в заданном интервале ставиться тако-то значение ...

Например:

для грузовых с 86 по 92 г. - 1000
для грузовых с 93 по 97 г. - 2000
для пассажир с 86 по 92 г. - 1500
для пассажир с 93 по 97 г. - 2500


Помогите пожаааалуйста синтаксисом =) ...
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34274221
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если выражение не очень "громоздкое" то можно написать iif или icase прямо в ControlSource колонки. Но судя по всему у вас оно "немаленькое". Так что лучше написать свою функцию и в ControlSource указать ее.

PS А еще лучше все это затолкать в таблицу чтобы при изменеии каких то значений не пришлось переписывать программу .
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34274254
StanislavKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=AlexiS=-если выражение не очень "громоздкое" то можно написать iif или icase прямо в ControlSource колонки. Но судя по всему у вас оно "немаленькое". Так что лучше написать свою функцию и в ControlSource указать ее.

PS А еще лучше все это затолкать в таблицу чтобы при изменеии каких то значений не пришлось переписывать программу .

Спасиб, но мне нужен именно синтаксис команды на SQL буквально одна строка типа:

если в поле1 значение >86 и <92 в поле2 тип "груз" тогда в поле3 поставить 1000
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34274484
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так:
Код: plaintext
1.
SELECT ...
MyColumn  = ICASE(BETWEEN(поле1,  86 ,  92 ) AND поле2 = "груз",  1000 ,  BETWEEN(поле1,  93 ,  97 ) AND поле2 = "груз",  2000 , BETWEEN(поле1,  86 ,  92 ) AND поле2="пассажир",  1500 , BETWEEN(поле1,  93 ,  97 ) and поле2 = "пассажир",  2500 ,  0 ), ...FROM ...
С уважением, Алексей
P.S. Для VFP 9.0
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34276161
StanislavKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое =) - попробую ...
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34276212
StanislavKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-KМожно так:
Код: plaintext
1.
SELECT ...
MyColumn  = ICASE(BETWEEN(поле1,  86 ,  92 ) AND поле2 = "груз",  1000 ,  BETWEEN(поле1,  93 ,  97 ) AND поле2 = "груз",  2000 , BETWEEN(поле1,  86 ,  92 ) AND поле2="пассажир",  1500 , BETWEEN(поле1,  93 ,  97 ) and поле2 = "пассажир",  2500 ,  0 ), ...FROM ...
С уважением, Алексей
P.S. Для VFP 9.0


Оказалось у меня только 6,0 =( - попробую найти 9 версию, но если вдруг нет - есть вариант синтаксиса для моей старой версии? ...
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34276914
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
create cursor ctemp (vtype c( 4 ),vlower n( 4 ),vupper n( 4 ),vcoeff n( 4 ))
insert into ctemp ('груз',  1986 ,  1992 ,  1000 )
insert into ctemp ('груз',  1993 ,  1997 ,  2000 )
insert into ctemp ('пасс',  1986 ,  1992 ,  1500 )
insert into ctemp ('пасс',  1993 ,  1997 ,  2500 )
И далее вяжи курсор ctemp со своими таблицами по vtype и between vlower and vupper .
Подойдет для любой версии >=2.5, а может даже и 2.0.
...
Рейтинг: 0 / 0
Калькулируемое поле. Помогите кто может, пожалуйста ...
    #34277883
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StanislavKA Aleksey-KМожно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT ...
MyColumn  = ICASE(BETWEEN(поле1,  86 ,  92 ) AND поле2 = "груз",  1000 ,  ;
BETWEEN(поле1,  93 ,  97 ) AND поле2 = "груз",  2000 , ;
BETWEEN(поле1,  86 ,  92 ) AND поле2="пассажир",  1500 , ;
BETWEEN(поле1,  93 ,  97 ) and поле2 = "пассажир",  2500 ,  0 ), ;
... ;
FROM ...
С уважением, Алексей
P.S. Для VFP 9.0


Оказалось у меня только 6,0 =( - попробую найти 9 версию, но если вдруг нет - есть вариант синтаксиса для моей старой версии? ...

ICASE() - это просто удобная замена вложенным IIF(). Т.е. пишется нечто вроде

IIF(...,1000, IIF(...,2000, IIF(..., 1500, IIF(..., 2500, 0))))

Это работает в любых версиях FoxPro, но уж больно громоздко получается. Луше все-таки делать через собственный метод формы.

Т.е. в настройках пишешь

ThisForm.MyGrid.Column1.ControlSource = "=ThisForm.MyMethod()"

Далее создаешь в фоорме метод с именем MyMethod() который должен вернуть нужное значение. И в этом методе расписываешь всю свою логику вычисления этого значения.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Калькулируемое поле. Помогите кто может, пожалуйста ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]