powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / функции date() и cmonth()
25 сообщений из 31, страница 1 из 2
функции date() и cmonth()
    #37235162
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица "начиления" Zhis, поле "месяц За" monthfor - типа N
мне надо получить русскоязычное название месяца, в запросе пишу строчку:

Код: plaintext
cmonth(date( 2011 ,zhis.monthfor, 1 )) as m1 ;

выдаёт ошибку "недопустимое значение, тип или число аргументов функции"
пишу так:

Код: plaintext
date( 2011 ,zhis.monthfor, 1 ) as m1 ;

опять та же ошибка
прятала zhis.monthfor в скобки [] или такие () - та же ошибка

что не так?
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235165
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати, если написать вот так:
Код: plaintext
cmonth(date( 2011 , 1 , 1 )) as m1 ;

выдаёт: "Январь"
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235181
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssa,

что за поле zhis.monthfor? Не символьное ли?

DATE([nYear, nMonth, nDay])
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235202
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, я ж написала, типа N - numeric - числовое
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235204
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGalyssa,

что за поле zhis.monthfor? Не символьное ли?

DATE([nYear, nMonth, nDay])

написала:
Код: plaintext
cmonth(date([ 2011 , ZHIS.monthfor,  1 ]))

ошибка: слишком мало аргументов
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235229
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaIgorNGalyssa,

что за поле zhis.monthfor? Не символьное ли?

DATE([nYear, nMonth, nDay])

написала:
Код: plaintext
cmonth(date([ 2011 , ZHIS.monthfor,  1 ]))

ошибка: слишком мало аргументовА теперь объясните назначение квадратных скобок? С учетом того факта, что функции date() нужны три числовых параметра.
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235248
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizovalyssaпропущено...


написала:
Код: plaintext
cmonth(date([ 2011 , ZHIS.monthfor,  1 ]))

ошибка: слишком мало аргументовА теперь объясните назначение квадратных скобок? С учетом того факта, что функции date() нужны три числовых параметра.

я это понимаю, просто IgorNG зачем-то их поставил. мне и в голову не приходило их там ставить.
но даже если поставть их так:
Код: plaintext
cmonth(date( 2011 , [ZHIS.monthfor],  1 ))

0 эффекта

я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ?
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235282
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssa
Код: plaintext
cmonth(date( 2011 , [ZHIS.monthfor],  1 ))
я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ?Нет. Ругается из-за квадратных скобок. Покажите нам вывод
Код: plaintext
?vartype(ZHIS.monthfor)
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235296
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaSergey Sizovпропущено...
А теперь объясните назначение квадратных скобок? С учетом того факта, что функции date() нужны три числовых параметра.

я это понимаю, просто IgorNG зачем-то их поставил. мне и в голову не приходило их там ставить.
но даже если поставть их так:
Код: plaintext
cmonth(date( 2011 , [ZHIS.monthfor],  1 ))

0 эффекта

я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ?

Это не я поставил квадратные скобки, это цитата из хэлпа
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235393
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaя это понимаю, просто IgorNG зачем-то их поставил. мне и в голову не приходило их там ставить.Хелп хотя бы иногда, но читать таки нужно.но даже если поставть их так:
Код: plaintext
cmonth(date( 2011 , [ZHIS.monthfor],  1 ))

0 эффектаРазумеется. Еще раз - хелп таки надо читать.
я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ?Не так понимаете. Я уже написал: функции date() нужны три числовых параметра. С каких пор числовые параметры стали обрамляться квадратными скобками?
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235452
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да блин при чём тут квадратные скобки. без них почему ругается???
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235462
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaда блин при чём тут квадратные скобки. без них почему ругается???Потому, что какой-то параметр нечисловой. Или версия фокса старая, в которой параметры у функции отсутствовали.
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235527
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
самое удивительное:
полностью скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SELECT ;
  ORGBASE_1.RN, ;
  ORGBASE_1.SHOWNAME AS FIO, ;
  substr(ZSUBDIV_1.NAME,len(alltrim(ZSUBDIV_1.number))+ 2 ,len(alltrim(ZSUBDIV_1.name))-len(alltrim(ZSUBDIV_1.number))- 1 ) as podrazdelenie, ;
  ZTIPDOL_1.NAME AS DOLJNOST, ;
  iif(ZANK_1.jobbegin<=d1,d2-d1+ 1 ,d2-ZANK_1.jobbegin+ 1 ) AS Q_M, ;
  ZVIDISP_1.CODE AS VID_LIC, ;
  cmonth(date( 2011 ,zhis.monthfor, 1 )) as monthfor, ;
  sum(ZHIS.SUM) as s1 ;
FROM ;
  ZHIS ;
    inner join ZFCAC as ZFCAC_1 on (ZHIS.FCAC_RN = ZFCAC_1.FCAC_RN) ;
      inner join ZANK as ZANK_1 on (ZFCAC_1.ANK_RN = ZANK_1.ANK_RN) ;
        inner join ORGBASE as ORGBASE_1 on (ZANK_1.ORGBASE_RN = ORGBASE_1.RN) ;
      inner join ZPOST as ZPOST_1 on (ZFCAC_1.POST_RN = ZPOST_1.POST_RN) ;
        inner join ZSUBDIV as ZSUBDIV_1 on (ZPOST_1.SUBDIV_RN = ZSUBDIV_1.SUBDIV_RN) ;
        inner join ZTIPDOL as ZTIPDOL_1 on (ZPOST_1.TIPDOL_RN = ZTIPDOL_1.TIPDOL_RN) ;
      inner join ZVIDISP as ZVIDISP_1 on (ZFCAC_1.VIDISP_RN = ZVIDISP_1.VIDISP_RN) ;
    inner join ZSNU as ZSNU_1 on (ZHIS.SNU_RN = ZSNU_1.SNU_RN) ;
 ;
WHERE (ZANK_1.jobend>=d2) and ;
(Zsnu_1.catalog_rn = "00Zт") AND  ;
(!(Zsnu_1.code="ИмуществоВычет")and!(Zsnu_1.code="Налоговая база") and ;
!(Zsnu_1.code="ПособияР")and!(Zsnu_1.code="Б/Л_Берем") and ;
!(Zsnu_1.code="Возврат копеек")and!(Zsnu_1.code="ВозвратКопеек") and ;
!(Zsnu_1.code="ВходящаяДоплата")and!(Zsnu_1.code="ВходящиеКопейки") and ;
!(Zsnu_1.code="ЗПрдрОрг")and!(Zsnu_1.code="Льгота_И") and ;
!(Zsnu_1.code="ОтпускДИнв")and!(Zsnu_1.code="ПособияЛ") and ;
!(Zsnu_1.code="ПособияБ")and!(Zsnu_1.code="ПособияМ") and ;
!(Zsnu_1.code="ПособияП")and!(Zsnu_1.code="ПутевкиФСС")) and ;
  (zhis.year = year(d1)) AND  ((zhis.monthfor>=month(d1))and(zhis.monthfor<=month(d2))) and ;
  ((Zsubdiv_1.name = "1")or(Zsubdiv_1.name = "2")) ;
GROUP BY zhis.monthfor, ZVIDISP_1.CODE, ZHIS.ANK_RN ;
ORDER BY ORGBASE_1.SHOWNAME, ZVIDISP_1.CODE ;
INTO CURSOR R

выполняет запрос без ошибок когда в параметрах на форме завожу даты:
d1 = 01.03.2011
d2 = 30.04.2011
или
d1 = 01.04.2011
d2 = 30.04.2011
или
d1 = 01.03.2011
d2 = 31.05.2011
когда же пытаюсь прихватить январь и/или февраль:
d1 = 01.01.2011
d2 = 28.02.2011
или
d1 = 01.01.2011
d2 = 31.03.2011
или
d1 = 01.01.2011
d2 = 30.04.2011
или
d1 = 01.02.2011
d2 = 31.03.2011
выкидывает почему-то с ошибкой: ошибка в пользовательском скрипте: "недопустимое значение, тип или число аргументов функции"
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235587
DmGr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alyssa,

alyssaвыдаёт ошибку "недопустимое значение, тип или число аргументов функции"
Возможно в запросе zhis.monthfor null или 0 или > 12
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235608
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такой вариант исключён. потому что в отборе where строго прописано брать с месяца d1 по месяц d2, если взять и поставить там:
Код: plaintext
(zhis.year = year(d1)) AND  ((zhis.monthfor>= 1 )and(zhis.monthfor<= 2 )) and ;
выкидывает с ошибкой, а если отбираем заведомо после первых двух месяцев:
так:
Код: plaintext
(zhis.year = year(d1)) AND  ((zhis.monthfor>= 3 )and(zhis.monthfor<= 4 )) and ;
или так:
Код: plaintext
(zhis.year = year(d1)) AND  (zhis.monthfor= 3 ) and ;
или так:
Код: plaintext
(zhis.year = year(d1)) AND  (zhis.monthfor= 4 ) and ;
и т.д. то нормально выполняется запрос...
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235615
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и ещё в таблице начилений, поле monthfor не бывает пустым или более 12
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235617
DmGr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alyssa,

А если в запросе вместо
cmonth(date(2011,zhis.monthfor,1)) as monthfor, ;

вывести zhis.monthfor что будет в колонке?
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235628
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmGralyssa,

А если в запросе вместо
cmonth(date(2011,zhis.monthfor,1)) as monthfor, ;

вывести zhis.monthfor что будет в колонке?

в колонке будут числа от 1 до 12, именно числа, я проверяла, арифметические операции выполняются.
а мне нужны именно слова (для кросстаблицы, если знаете, что это). я пока по-другому решила эту проблему (очень мудруным путём) . но это же не дело. надо же понять почему не работает скрипт именно в январе, феврале.
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235685
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaDmGralyssa,

А если в запросе вместо
cmonth(date(2011,zhis.monthfor,1)) as monthfor, ;

вывести zhis.monthfor что будет в колонке?

в колонке будут числа от 1 до 12, именно числа, я проверяла, арифметические операции выполняются.
а мне нужны именно слова (для кросстаблицы, если знаете, что это). я пока по-другому решила эту проблему (очень мудруным путём) . но это же не дело. надо же понять почему не работает скрипт именно в январе, феврале.Пока не представите набор исходных данных к этому скрипту для его опробования можно только продолжать гадать.
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37235711
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssa,
что выдает запрос
Код: plaintext
SELECT distinct monthfor FROM ZHIS
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37236105
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizovalyssa,
что выдает запрос
Код: plaintext
SELECT distinct monthfor FROM ZHIS

вывел строки с 1 столбцом, заполненным числами от 1 до 12
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37236142
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaSergey Sizovalyssa,
что выдает запрос
Код: plaintext
SELECT distinct monthfor FROM ZHIS

вывел строки с 1 столбцом, заполненным числами от 1 до 12Строк ровно 12? Какое значение у настройки set date?
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37236194
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alyssaDmGralyssa,

А если в запросе вместо
cmonth(date(2011,zhis.monthfor,1)) as monthfor, ;

вывести zhis.monthfor что будет в колонке?

в колонке будут числа от 1 до 12, именно числа, я проверяла, арифметические операции выполняются.
а мне нужны именно слова (для кросстаблицы, если знаете, что это). я пока по-другому решила эту проблему (очень мудруным путём) . но это же не дело. надо же понять почему не работает скрипт именно в январе, феврале.
Я правильно понимаю что при замене на вывод monthfor запрос начинает работать без ошибки?

как вариант так попробуй еще:
Код: plaintext
cmonth(date( 2011 ,nvl(zhis.monthfor,  1 ), 1 )) as monthfor
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37236227
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tкак вариант так попробуй еще:
Код: plaintext
cmonth(date( 2011 ,nvl(zhis.monthfor,  1 ), 1 )) as monthfor

В данном случае надо проверять не на NULL, а на EMPTY(), поэтому вместо nvl() надо использовать evl()

Код: plaintext
cmonth(date( 2011 ,evl(zhis.monthfor,  1 ), 1 )) as monthfor

Правда, автор не говорит какая у нее версия FoxPro, а функция EVL() была введена только в VFP8.
...
Рейтинг: 0 / 0
функции date() и cmonth()
    #37236250
alyssa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
использует библиотеки 8го, так что думаю 8
VFP8RRUS.DLL
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / функции date() и cmonth()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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