Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / теоретический вопрос про ошибку UNDEFINED / 25 сообщений из 60, страница 1 из 3
06.11.2007, 12:54
    #34918532
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Всем привет!

подскажите пжлст почему при первом обращении к программе

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
GetOstByExtCode(Extcode)
 i $d(Extcode)= 0  s Extcode= 0 
 n res,ost
 s ost= 0 
 s res = ##class(%Library.ResultSet).%New("%DynamicQuery.SQL") 
 d res.Prepare("SELECT SUM(OST) FROM PartiesGoods WHERE DrugsID->ExtCode = ?")
 d res.Execute(Extcode)
 i res.Next()  s ost=res.GetData( 1 )
 d res.%Close()
 q ost

появлеется ошибка UNDEFINED при повторном обращении ошибка не появляется и программа отрабатывает нармально. если перезапустить сервер каше то при первом обращении к программе опять появиться ошибка типа UNDEFINED
...
Рейтинг: 0 / 0
06.11.2007, 13:31
    #34918692
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
UNDEFINED где? Стек-то покажи...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
06.11.2007, 14:00
    #34918829
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Строку
Код: plaintext
 i $d(Extcode)= 0  s Extcode= 0 
принято записывать как
Код: plaintext
 s Extcode=$g(Extcode, 0 )

Другого на первый взгляд не видно - включай обработчик ошибок и смотри подробнее.
...
Рейтинг: 0 / 0
06.11.2007, 14:10
    #34918866
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Ptnпринято записывать как
Код: plaintext
 s Extcode=$g(Extcode, 0 )

Мы используем такой вариант
Код: plaintext
 s:$g(Extcode)="" Extcode= 0 
Поскольку в вашем случае при
Код: plaintext
Extcode=""
нулю оно никогда не приравняется, т.к. переменная определена...
...
Рейтинг: 0 / 0
06.11.2007, 14:26
    #34918935
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Странный, ИМХО, вопрос. Cache, начиная с 5.1, прямо в $ze указывает неопределенную переменную: *var. Номер строки кода, где случилась ошибка, показывают все версии, даже самые древние :)
...
Рейтинг: 0 / 0
06.11.2007, 14:27
    #34918939
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
krvsa Ptnпринято записывать как
Код: plaintext
 s Extcode=$g(Extcode, 0 )

Мы используем такой вариант
Код: plaintext
 s:$g(Extcode)="" Extcode= 0 
Поскольку в вашем случае при
Код: plaintext
Extcode=""
нулю оно никогда не приравняется, т.к. переменная определена...

Где она определена ??? Это код для вызова d ^GetOstByExtCode(), а не d ^GetOstByExtCode("")

Да и собсно ... ну укажите +
Код: plaintext
 s Extcode=+$g(Extcode, 0 )

ЗЫ: Это если вам нужен именно ноль - вместо ноля можете поставить любое значение по умолчанию
...
Рейтинг: 0 / 0
06.11.2007, 14:37
    #34918970
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
PtnГде она определена ???
Вызовы бывают разные... ;)
...
Рейтинг: 0 / 0
06.11.2007, 14:39
    #34918982
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
MandarinВсем привет!

подскажите пжлст почему при первом обращении к программе

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
GetOstByExtCode(Extcode)
 i $d(Extcode)= 0  s Extcode= 0 
 n res,ost
 s ost= 0 
 s res = ##class(%Library.ResultSet).%New("%DynamicQuery.SQL") 
 d res.Prepare("SELECT SUM(OST) FROM PartiesGoods WHERE DrugsID->ExtCode = ?")
 d res.Execute(Extcode)
 i res.Next()  s ost=res.GetData( 1 )
 d res.%Close()
 q ost

появлеется ошибка UNDEFINED при повторном обращении ошибка не появляется и программа отрабатывает нармально. если перезапустить сервер каше то при первом обращении к программе опять появиться ошибка типа UNDEFINED

Ошибка UNDEFINED может возникнуть если Extcode передавался через точку, и передавалось имя с индексами, но без значения в самом имени. Для нее $d(Extcode) даст не 0, а 10. Тогда не произойдет присваивания s Extcode=0 и при обращении к Execute(Extcode) получим UNDEFINED. А вот почему происходит при первом и не происходит при повторном - надо смотреть код который вызывает GetOstByExtCode.
...
Рейтинг: 0 / 0
06.11.2007, 21:37
    #34920339
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
ниодин из вариантов не принес результата..., подскажите как сделать выход из программы по условию ExtCode null или "" ?
...
Рейтинг: 0 / 0
06.11.2007, 21:38
    #34920341
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
вот скрин ошибки
...
Рейтинг: 0 / 0
07.11.2007, 07:41
    #34920648
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Ошибка внутри SQL - включай в настройках сохранять MAC код для SQL запросов - открывай эту самую CacheSql7 И смотри что там в %0Ac ... если всё тот же Extcode - ну не знаю - считай буковки - авось где русскую С впечатали.

Если что то другое - IMXO нужно смотреть описание таблицы.
...
Рейтинг: 0 / 0
07.11.2007, 07:44
    #34920649
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Кстати не знаю копировал ты код или воспроизвел по памяти - но в Каше - у таблицы PartiesGoods
должен быть пакет. И имя её нужно указывать полностью например : Parties.PartiesGoods или SQLUser.Parties - уж какой он у тебя мне неведомо
...
Рейтинг: 0 / 0
07.11.2007, 08:23
    #34920671
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Mandarinниодин из вариантов не принес результата...
Так они не на это были нацелены...
Mandarinподскажите как сделать выход из программы по условию ExtCode null или "" ?
Например так
Код: plaintext
 q:$g(ExtCode)=""
...
Рейтинг: 0 / 0
07.11.2007, 08:25
    #34920674
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
PtnОшибка внутри SQL - включай в настройках сохранять MAC код для SQL запросов - открывай эту самую CacheSql7 И смотри что там в %0Ac ...
Я бы скопировал SQL текст в SQL менеджер и там запустил с конкретным значением... Информации будет поболее чем на предложеной картинке.
По крайней мере раньше мне этого хватало для проверки...
...
Рейтинг: 0 / 0
07.11.2007, 12:18
    #34921480
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Да и версию Cache обновить не мешало бы, глядишь, и ошибка уйдет... Что-то я последние несколько лет не припомню подобных казусов с SQL. Какую версию используете, Mandarin?
...
Рейтинг: 0 / 0
07.11.2007, 12:50
    #34921639
NoGot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Сам сегодня столкнулся с такой проблемой.
Если это процедура, то нужно обьявить все переменные, в том числе и SQLCODE в публичных, и сделать для них new в коде процедуры.
...
Рейтинг: 0 / 0
07.11.2007, 13:06
    #34921684
NoGot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Но это тока в версии 5.0.х, как в остальных - не знаю
...
Рейтинг: 0 / 0
07.11.2007, 13:56
    #34921926
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
NoGot
Объявление переменной в new на UNDEFINED не влияет.

ЗЫ: Легче посмотреть код запроса

krvsa я не про это ... ошибка в запросе SQL, не в смысле ошибки в генераторе SQL.
Просто из кода запроса можно определить что это за фигня - параметр ли - вычиcлимое поле ли ... или например у глобала таблицы ExtCode "целостость" нарушена... в SQL менеджер вы получите точно такую же ошибку IMXO

что опять же быстрее увидеть в коде запроса ....
...
Рейтинг: 0 / 0
07.11.2007, 14:08
    #34921976
NoGot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
А, извините, перепутал, мой случай оказывается касался только embedded SQL statements. А тут динамика...
...
Рейтинг: 0 / 0
07.11.2007, 15:12
    #34922248
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
вот текст запроса

insert into Real_INF
select
drugs->lastobj->fullname,
drugs->extcode,
$$GetOstByExtCode^InfUtils(drugs->extcode),
sum(Quantity),
sum(SumCenaRoz),
sum(SumCenaRoz)-sum(Quantity*CenaZak)
from docdata
where daterec between "01/01/2007" and "03/01/2007"
and destroyed=0
and docs->status1=1
and docs->doctype->tablename in (15,20)
and kpr->extcode=4
group by drugs->lastobj->fullname, drugs->extcode

Версия каше 5.0.2.607.1
...
Рейтинг: 0 / 0
07.11.2007, 15:37
    #34922347
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Mandarin , SQLменеджер какую картинку/ошибку дает?

И еще... В этом запросе
Код: plaintext
SELECT SUM(OST) FROM PartiesGoods WHERE DrugsID->ExtCode = ?
для DrugsID->ExtCode ноль это "значимое" значение или NULL?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.11.2007, 15:41
    #34922359
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Может запрос без функции переписать?
Сразу туда группировку вставить?
--------
Cache for Windows (Intel) 5.2.3 (Build 710U) Tue Dec 12 2006 10:15:11 EST
...
Рейтинг: 0 / 0
07.11.2007, 15:43
    #34922368
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
Одназначно без функции. SQL - так SQL на 100%!
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.11.2007, 16:15
    #34922577
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
krvsaОдназначно без функции. SQL - так SQL на 100%!
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

без функции запрос выполянется намного дольше
...
Рейтинг: 0 / 0
07.11.2007, 16:20
    #34922615
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
теоретический вопрос про ошибку UNDEFINED
krvsa Mandarin , SQLменеджер какую картинку/ошибку дает?

И еще... В этом запросе
Код: plaintext
SELECT SUM(OST) FROM PartiesGoods WHERE DrugsID->ExtCode = ?
для DrugsID->ExtCode ноль это "значимое" значение или NULL?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

в данном случае ноль это "значимое" значение
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / теоретический вопрос про ошибку UNDEFINED / 25 сообщений из 60, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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