|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
есть таблица "начиления" Zhis, поле "месяц За" monthfor - типа N мне надо получить русскоязычное название месяца, в запросе пишу строчку: Код: plaintext
выдаёт ошибку "недопустимое значение, тип или число аргументов функции" пишу так: Код: plaintext
опять та же ошибка прятала zhis.monthfor в скобки [] или такие () - та же ошибка что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 09:37 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
кстати, если написать вот так: Код: plaintext
выдаёт: "Январь" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 09:39 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssa, что за поле zhis.monthfor? Не символьное ли? DATE([nYear, nMonth, nDay]) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 09:46 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
нет, я ж написала, типа N - numeric - числовое ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 09:55 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
IgorNGalyssa, что за поле zhis.monthfor? Не символьное ли? DATE([nYear, nMonth, nDay]) написала: Код: plaintext
ошибка: слишком мало аргументов ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 09:56 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaIgorNGalyssa, что за поле zhis.monthfor? Не символьное ли? DATE([nYear, nMonth, nDay]) написала: Код: plaintext
ошибка: слишком мало аргументовА теперь объясните назначение квадратных скобок? С учетом того факта, что функции date() нужны три числовых параметра. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 10:12 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
Sergey Sizovalyssaпропущено... написала: Код: plaintext
ошибка: слишком мало аргументовА теперь объясните назначение квадратных скобок? С учетом того факта, что функции date() нужны три числовых параметра. я это понимаю, просто IgorNG зачем-то их поставил. мне и в голову не приходило их там ставить. но даже если поставть их так: Код: plaintext
0 эффекта я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 10:24 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssa Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 10:46 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaSergey Sizovпропущено... А теперь объясните назначение квадратных скобок? С учетом того факта, что функции date() нужны три числовых параметра. я это понимаю, просто IgorNG зачем-то их поставил. мне и в голову не приходило их там ставить. но даже если поставть их так: Код: plaintext
0 эффекта я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ? Это не я поставил квадратные скобки, это цитата из хэлпа ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 10:54 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaя это понимаю, просто IgorNG зачем-то их поставил. мне и в голову не приходило их там ставить.Хелп хотя бы иногда, но читать таки нужно.но даже если поставть их так: Код: plaintext
0 эффектаРазумеется. Еще раз - хелп таки надо читать. я так понимаю, рагуется из-за точки о которую спотыкается в функции date() ?Не так понимаете. Я уже написал: функции date() нужны три числовых параметра. С каких пор числовые параметры стали обрамляться квадратными скобками? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 11:36 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
да блин при чём тут квадратные скобки. без них почему ругается??? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:02 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaда блин при чём тут квадратные скобки. без них почему ругается???Потому, что какой-то параметр нечисловой. Или версия фокса старая, в которой параметры у функции отсутствовали. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:05 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
самое удивительное: полностью скрипт Код: 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.
выполняет запрос без ошибок когда в параметрах на форме завожу даты: 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 выкидывает почему-то с ошибкой: ошибка в пользовательском скрипте: "недопустимое значение, тип или число аргументов функции" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:27 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssa, alyssaвыдаёт ошибку "недопустимое значение, тип или число аргументов функции" Возможно в запросе zhis.monthfor null или 0 или > 12 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:43 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
такой вариант исключён. потому что в отборе where строго прописано брать с месяца d1 по месяц d2, если взять и поставить там: Код: plaintext
так: Код: plaintext
Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:54 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
и ещё в таблице начилений, поле monthfor не бывает пустым или более 12 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:57 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssa, А если в запросе вместо cmonth(date(2011,zhis.monthfor,1)) as monthfor, ; вывести zhis.monthfor что будет в колонке? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 12:59 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
DmGralyssa, А если в запросе вместо cmonth(date(2011,zhis.monthfor,1)) as monthfor, ; вывести zhis.monthfor что будет в колонке? в колонке будут числа от 1 до 12, именно числа, я проверяла, арифметические операции выполняются. а мне нужны именно слова (для кросстаблицы, если знаете, что это). я пока по-другому решила эту проблему (очень мудруным путём) . но это же не дело. надо же понять почему не работает скрипт именно в январе, феврале. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 13:05 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaDmGralyssa, А если в запросе вместо cmonth(date(2011,zhis.monthfor,1)) as monthfor, ; вывести zhis.monthfor что будет в колонке? в колонке будут числа от 1 до 12, именно числа, я проверяла, арифметические операции выполняются. а мне нужны именно слова (для кросстаблицы, если знаете, что это). я пока по-другому решила эту проблему (очень мудруным путём) . но это же не дело. надо же понять почему не работает скрипт именно в январе, феврале.Пока не представите набор исходных данных к этому скрипту для его опробования можно только продолжать гадать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 13:26 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssa, что выдает запрос Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 13:30 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
Sergey Sizovalyssa, что выдает запрос Код: plaintext
вывел строки с 1 столбцом, заполненным числами от 1 до 12 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 15:20 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaSergey Sizovalyssa, что выдает запрос Код: plaintext
вывел строки с 1 столбцом, заполненным числами от 1 до 12Строк ровно 12? Какое значение у настройки set date? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 15:28 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaDmGralyssa, А если в запросе вместо cmonth(date(2011,zhis.monthfor,1)) as monthfor, ; вывести zhis.monthfor что будет в колонке? в колонке будут числа от 1 до 12, именно числа, я проверяла, арифметические операции выполняются. а мне нужны именно слова (для кросстаблицы, если знаете, что это). я пока по-другому решила эту проблему (очень мудруным путём) . но это же не дело. надо же понять почему не работает скрипт именно в январе, феврале. Я правильно понимаю что при замене на вывод monthfor запрос начинает работать без ошибки? как вариант так попробуй еще: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 15:43 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
Dima Tкак вариант так попробуй еще: Код: plaintext
В данном случае надо проверять не на NULL, а на EMPTY(), поэтому вместо nvl() надо использовать evl() Код: plaintext
Правда, автор не говорит какая у нее версия FoxPro, а функция EVL() была введена только в VFP8. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 15:55 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
использует библиотеки 8го, так что думаю 8 VFP8RRUS.DLL ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 16:01 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
Скорее всего, проблема заключается в технологии выполнения запросов в FoxPro. Дело в том, что сначала, еще ДО собственно выполнения запроса происходит формирование структуры выходного курсора. Того, куда будет записан результат выборки. Чтобы это сделать, FoxPro берет "первые попавшиеся" записи из таблиц-источников, поля которых указаны в списке полей и выражений опции SELECT. На основании этих данных выполняется определение типов и размерностей полей. И вот здесь есть несколько "засад". 1. Функция Date() выдаст указанную ошибку, если один из параметров равен нулю Код: plaintext
Откуда 0? Ну, вероятно, у Вас все-таки есть в таблице запись, в которой поле zhis.monthfor не заполнено. Пустое. Вот и получили сообщение об ошибке. 2. Размерность символьных полей определяется также по первому вычисленному значению. Это значит, что если первый попавшийся месяц - это, скажем, "Март", то будет сформировано поле размерностью в 4 символа. И название всех остальных месяцев будет "обрезано" до первых 4 символов. ===================================================== Далее соображения "общего" плана. Использовать функции, результат работы которых зависит от используемого модуля локализации, как минимум, не осторжно. Результат работы функции CMONTH() напрямую зависит от того, какая библиотека локализации vfpXrenu.dll или vfpXrrus.dll использована. Если использована русская библиотека, то имена месяцев будут по русски, если английская - по английски. При этом, следует иметь в виду, что вероятность глюков и ошибок в локализованных библиотеках значительно выше, чем в англоязычной. Поэтому, для подобных функций проще писать замену. Т.е. свои собственные функции, которые возвращают то, что требуется но всегда на нужном языке вне зависимости от используемой библиотеки. В данном случае, можно сделать такую функцию Код: 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. 35. 36. 37.
Соответственно в запросе можно просто вызвать эту функцию Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 16:15 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
ВладимирМ Код: plaintext
вот с этим работает! но я так и написала свою ф-ю замены, пока ждала, когда мне не этом форуме ответят))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 16:18 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
значит надо проводить "ремонт" и "коррекцию" БД, раз где-то занулились параметры начислений, это не шутки... Благодарю за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 16:21 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
Это не обязательно ошибка данных. Это действительно особенность "нулевого" прогона Select-SQL. Просто, при определенных условиях (каких - не известно), в этом самом "нулевом" прогоне может использоваться фиктиная запись, значение всех полей у которой BLANK. Т.е. не заполнено. Если интересно, то обсуждение этой особенности для VFP9 было здесь http://forum.foxclub.ru/read.php?29,239391,page=1 Алексей Цингауз - это один из разработчиков VFP9. "Лечение" в том и заключается, что всегда предполагать возможность существования подобной записи. Функция EVL() собственно и заменяет пустое значение на указанное во втором параметре. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 16:37 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
alyssaВладимирМ Код: plaintext
вот с этим работает! но я так и написала свою ф-ю замены, пока ждала, когда мне не этом форуме ответят)))А на вопрос "Строк ровно 12?" так и не ответили. Трудно было сразу сообщить о наличии пустых значений? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2011, 23:03 |
|
функции date() и cmonth()
|
|||
---|---|---|---|
#18+
проходящий.alyssaпропущено... вот с этим работает! но я так и написала свою ф-ю замены, пока ждала, когда мне не этом форуме ответят)))А на вопрос "Строк ровно 12?" так и не ответили. Трудно было сразу сообщить о наличии пустых значений? Строк 12 как я понял из этого alyssaSergey Sizovalyssa, что выдает запрос Код: plaintext
вывел строки с 1 столбцом, заполненным числами от 1 до 12 похоже действительно происходит "нулевой" прогон как ВладимирМ выше писал. Там по ссылке тоже глюки с функцией DATE() ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2011, 06:50 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1584398]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 296ms |
total: | 453ms |
0 / 0 |