powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / теоретический вопрос про ошибку UNDEFINED
60 сообщений из 60, показаны все 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
теоретический вопрос про ошибку UNDEFINED
    #34922678
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще подскажите пжлст
1. как расчитать сколько дней товар находился в продаже (может быть есть функция описанная в м-аптеке)
2. как получить остаток товара на определенную дату по определенному подразделению
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922687
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinбез функции запрос выполянется намного дольше
Тогда сделать т.с. совмещенный вариант. Ведь результаты запроса где-то считываются? Так вот вызывать эту функцию при считывании данных из "основного" запроса.
Такой вариант поможет в тестировании самой функции! :) Будет понятно при каких значениях возникает ошибка. Если она еще будет появляться...
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922703
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinи еще подскажите пжлст
Это вопросы по конкретной программке или "вообще"?
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922711
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin
без функции запрос выполянется намного дольше
Запрос в студию!
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922764
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Mandarinи еще подскажите пжлст
Это вопросы по конкретной программке или "вообще"?

это общий вопрос но расчет будет выполняться в конкретной программе разработчики которой, насколько мне изветсно, являются участниками данного форума. поэтому вопрос прежде всего к ним.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922770
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Коблов Mandarin
без функции запрос выполянется намного дольше
Запрос в студию!
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922783
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос я уже писал он остался на первой страничке данного топика
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922796
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin , если у тебя есть поля типа Date, тебе достаточно посчитать разность и прибавить единицу (если нужно)...

Второй вопрос дюже специфичен... Эт к разработчикам Или расскажи про таблицы какие там есть...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922807
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinзапрос я уже писал он остался на первой страничке данного топика
Я имел в виду запрос, в котором не используется эта функция. Непонятно, почему без неё выполняется медленнее чем с ней
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922808
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinзапрос я уже писал он остался на первой страничке данного топика
Ты про этот запрос?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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
Так он с функцией... А ты сделай в SQLе... Но без функции.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922818
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Mandarin , если у тебя есть поля типа Date, тебе достаточно посчитать разность и прибавить единицу (если нужно)...

Второй вопрос дюже специфичен... Эт к разработчикам Или расскажи про таблицы какие там есть...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

если считать по разнице дат ... можно при мер ? если он уже где то используется

я сейчас расчитываю так
создаю таблицу в которой есть две колонки код препарата и дата и накаждую такую запись выполняется запрос все приходы минус все расходы, получается достаточно быстро... но всеж хочется быстрее

и есть одно но на одном движке каше в разных базах эта процедура выполняется по разному т.е. в одной базе 30 секунд в другой 20 минут с чем это связанно поянть не могу структура таблиц одинаковая все индексы в таблицах тоже совпадают
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34922952
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Mandarinзапрос я уже писал он остался на первой страничке данного топика
Ты про этот запрос?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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
Так он с функцией... А ты сделай в SQLе... Но без функции.

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

Вот сделал для примера...
Класс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/// Тест
Class tmp.Test Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{

/// Прибыл
Property Dat1 As %Date;

/// Убыл
Property Dat2 As %Date;

}
Программка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE
 n
 s o=##class(tmp.Test).%New()
 s o.Dat1= 60266 
 s o.Dat2=+$h
 d o.%Save()
 d o.%Close()
 q
Запрос сделал в SQL менеджере
Код: plaintext
1.
2.
3.
4.
select
 *,
 Dat2-Dat1+ 1 
 from
 tmp.Test
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34923854
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinи есть одно но на одном движке каше в разных базах эта процедура выполняется по разному т.е. в одной базе 30 секунд в другой 20 минут с чем это связанно поянть не могу структура таблиц одинаковая все индексы в таблицах тоже совпадают
Возможно "виновата" фрагментированость одной из БД... Хотя такая разница!
А что значит "один движок"? Каше одно и у нее две области? Или даже компьютеры разные?
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924040
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, фрагментация конечно не должна давать такую разницу. Если только не физические проблемы с диском.

То, что структура таблиц совпадает, и индексы такие же, не дает основания предполагать, что запросы проходят одинаково. Нужно как минимум посмотреть планы запросов, и если планы действительно разные, уже смотреть селективности и все такое.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924448
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое вот тупое предложение. Вставить в функцию одну строчку:
Код: plaintext
1.
2.
GetOstByExtCode(Extcode)
 n (Extcode)
 ...
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924462
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так у них же
Код: plaintext
 n res,ost
Должно и так "пропускать" переменную Extcode...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924555
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечено, что ISC не все свои переменные "ньючит", причем чем древнее версия Cache, тем вероятность на это напороться выше. Т.е., код, сгенерированный для выполнения динамического запроса в функции может запортить что-то в вызывающем динамическом запросе. Поэтому и возникло предложение.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924674
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslovкод, сгенерированный для выполнения динамического запроса в функции может запортить что-то в вызывающем динамическом запросе
Вона че... Ясно.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924907
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Mandarinи есть одно но на одном движке каше в разных базах эта процедура выполняется по разному т.е. в одной базе 30 секунд в другой 20 минут с чем это связанно поянть не могу структура таблиц одинаковая все индексы в таблицах тоже совпадают
Возможно "виновата" фрагментированость одной из БД... Хотя такая разница!
А что значит "один движок"? Каше одно и у нее две области? Или даже компьютеры разные?
один компьютер один движек но разные области отличается только размер БД одна 2,5 ГБ другая 1,3 ну я не думаю что из за этого будет такая разница, компьютер в принципе достаточно мощный 2гб ОЗУ core 2 DUO 2 ГГц
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924921
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Mandarinесли считать по разнице дат ... можно при мер ? если он уже где то используется

Вот сделал для примера...
Класс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/// Тест
Class tmp.Test Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{

/// Прибыл
Property Dat1 As %Date;

/// Убыл
Property Dat2 As %Date;

}
Программка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE
 n
 s o=##class(tmp.Test).%New()
 s o.Dat1= 60266 
 s o.Dat2=+$h
 d o.%Save()
 d o.%Close()
 q
Запрос сделал в SQL менеджере
Код: plaintext
1.
2.
3.
4.
select
 *,
 Dat2-Dat1+ 1 
 from
 tmp.Test


это слишком просто :)

есть подводные камни...
1. т.к. расчет этот нужно делать в определенном периоде например 3 месяца дата прихода может не войти в этот период так как и дата расхода
2. у товара может быть несколько партий и расходоваться они могут в произвольном порядке а не в порядке поступления.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924932
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Нет, фрагментация конечно не должна давать такую разницу. Если только не физические проблемы с диском.

То, что структура таблиц совпадает, и индексы такие же, не дает основания предполагать, что запросы проходят одинаково. Нужно как минимум посмотреть планы запросов, и если планы действительно разные, уже смотреть селективности и все такое.

планы запросов одинаковые я проверял базы лежат на одном физическом диске поэтому проблемы в диске не должно быть, а как проверить селективность ? ниразу этого не делал...
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34924949
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovТакое вот тупое предложение. Вставить в функцию одну строчку:
Код: plaintext
1.
2.
GetOstByExtCode(Extcode)
 n (Extcode)
 ...


это не подходит запрос теперь постоянно выдает UNDEFINED а не только при первом запуске :)
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34925183
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinкак проверить селективность?
Запустите проверку целостности - она покажет процент заполнения... В 5.0.* есть режим устранения дефрагментации "Сжатие базы данных".
Мало того! IS вооружил нас программкой "уменьшения" самого файла cache.dat Мы ей пользуемся после "долгосрочного архивирования" (это наш термин).
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34925192
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinесть подводные камни...
Тогда праграмм-маграмм писать нада.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34925365
newbie'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa...Мало того! IS вооружил нас программкой "уменьшения" самого файла cache.dat Мы ей пользуемся после "долгосрочного архивирования" (это наш термин).
что за программка и для какой версии cache?
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34925428
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас БД полупустая, программка уменьшает файл cache.dat
Делали для 5.0.*... Но недавно подтвердили, что будет нормально работать и 2007. Клиенты провели "ходовые" испытания - все работает
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34925666
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinзапрос теперь постоянно выдает UNDEFINED Добавьте в список переменных в круглых скобках те переменные, которые у вас UNDEFINED, и будет вам счастье :)
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34925906
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глянул еще раз на вашу функцию... Почитали бы, все же, доку (специально даю ссылку по 5.0) тынц .
Замеченные ошибки/неточности:
1. надо писать %DynamicQuery:SQL (а лучше всего ничего не писать)
2. надо закрывать ResultSet rset.Close() - без %!
3. надо проверять коды завершения.
Скорее всего, сочетание 2+3 и приводит к ошибке. 1ый раз у вас что-то отваливается, но ResultSet остается открытым, при повторном обращении вы берете уже из открытого ResultSet - и у вас работает.
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34926829
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov1. надо писать %DynamicQuery:SQL (а лучше всего ничего не писать)
Это будел поумолчанию?
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34927199
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
будет - давным давны уже внутри %New() ничего для динамики не указываем
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34930592
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переделал процедуру вот так

GetOstByExtCode(code,kpr)
n res,ost,str
s ost = 0
s res = ##class(%ResultSet).%New()
s str = "SELECT SUM(OST) as Ost FROM PartiesGoods WHERE (DrugsID = ?) AND (KprID = ?)"
d res.Prepare(str)
d res.Execute(code,kpr)
d res.Next()
s ost=res.Data("Ost")
d res.Close()
q ost

результат остался тот же

и еще заметил вот что
когда используется эта функция в запрсе типа INSERT ошибка может выдаваться при вставке любой записи т.е. из этого можно сделать вывод что ошибка не во входных параметрах а в построении самой функции ... а где именно понять не могу...

есть аналогичная функция

ostbar(div,DrugsId,dat)
n que,str,ost,regi
s que=##class(%ResultSet).%New()
s str="SELECT ReggIID FROM PartiesGoods WHERE (KprID = ?) AND (DrugsID = ?)"
d que.Prepare(str)
d que.Execute(div,DrugsId)
s ost=0
f q:'que.Next() d
. s regi=que.Get("ReggIID") q:regi=""
. s ost=ost+$$ost(div,regi,dat)
d que.Close()
q ost

которая работает без ошибок
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34930593
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и почему эта ошибка повторяется только пи перезапуске каше ? если повторно вызывать запрос с этой функцией то ошибки нет.. где смысл не понятно :) мистика какая то
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34930704
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наконечто все решилось :)

вот рабочий код

GetOstByExtCode(Extcode,Kpr)
n (Extcode,Kpr,res,ost)
s ost = 0
s res = ##class(%Library.ResultSet).%New()
d res.Prepare("SELECT SUM(OST) FROM PartiesGoods WHERE (DrugsID = ?) and (Kprid=?)")
d res.Execute(Extcode,Kpr)
i res.Next() s ost=res.GetData(1)
d res.Close()
q ost

ключевая строчка - n (Extcode,Kpr,res,ost)
...
Рейтинг: 0 / 0
теоретический вопрос про ошибку UNDEFINED
    #34931212
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем туда вставили res и ost?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / теоретический вопрос про ошибку UNDEFINED
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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