powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / теоретический вопрос про ошибку UNDEFINED
25 сообщений из 60, страница 1 из 3
теоретический вопрос про ошибку UNDEFINED
    #34918532
Фотография 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
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34918692
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UNDEFINED где? Стек-то покажи...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34918829
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строку
Код: plaintext
 i $d(Extcode)= 0  s Extcode= 0 
принято записывать как
Код: plaintext
 s Extcode=$g(Extcode, 0 )

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

Мы используем такой вариант
Код: plaintext
 s:$g(Extcode)="" Extcode= 0 
Поскольку в вашем случае при
Код: plaintext
Extcode=""
нулю оно никогда не приравняется, т.к. переменная определена...
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34918935
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный, ИМХО, вопрос. Cache, начиная с 5.1, прямо в $ze указывает неопределенную переменную: *var. Номер строки кода, где случилась ошибка, показывают все версии, даже самые древние :)
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34918939
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
теоретический вопрос про ошибку UNDEFINED
    #34918970
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnГде она определена ???
Вызовы бывают разные... ;)
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34918982
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
теоретический вопрос про ошибку UNDEFINED
    #34920339
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ниодин из вариантов не принес результата..., подскажите как сделать выход из программы по условию ExtCode null или "" ?
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34920341
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот скрин ошибки
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34920648
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка внутри SQL - включай в настройках сохранять MAC код для SQL запросов - открывай эту самую CacheSql7 И смотри что там в %0Ac ... если всё тот же Extcode - ну не знаю - считай буковки - авось где русскую С впечатали.

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

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

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

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

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
теоретический вопрос про ошибку UNDEFINED
    #34922347
Фотография 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
теоретический вопрос про ошибку UNDEFINED
    #34922359
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может запрос без функции переписать?
Сразу туда группировку вставить?
--------
Cache for Windows (Intel) 5.2.3 (Build 710U) Tue Dec 12 2006 10:15:11 EST
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922368
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одназначно без функции. SQL - так SQL на 100%!
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922577
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaОдназначно без функции. SQL - так SQL на 100%!
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

без функции запрос выполянется намного дольше
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922615
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
25 сообщений из 60, страница 1 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / теоретический вопрос про ошибку UNDEFINED
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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