|
функции 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/search_topic.php?author=kleo007&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 438ms |
total: | 615ms |
0 / 0 |