powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Запрос
25 сообщений из 36, страница 1 из 2
Запрос
    #33618008
мышьбелая
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как может быть такое, что в SQL менеджере запрос выполняется, а в процессе выполнения программы - нет?
запрос такого рода:

..f day=std:1:endd d
...s ddt="SELECT dd.Cz as ids FROM Table1 as ds, Table2 as dd, Table3 as dt WHERE ds.Date=? AND ds.ID=dd.DId AND dd.Code=? AND ds.DocType=1 AND ds.Destroyed=0 AND dt.Docs=dd.DId AND dt.CSupp<>133"
...d ddrez.Prepare(ddt)
...d ddrez.Execute(day,chkdrug)
...f q:'ddrez.Next() s cena=ddrez.Get("ids")
....d MApplication.MessageBox(chkdrug,cena)

Т.е. общий смысл запроса, мы ищем только те документы, в тов.строках которого встречается chkdrug за конкретную дату обозначенную в day + некоторые доп. условия.
Тело документа это Table2, Шапочка - Table3, Table1 параметры документа.

Так вот, в коде программы этот запрос выполняется, но результат всегда, что ничего не найдено по запросу.
...
Рейтинг: 0 / 0
Запрос
    #33618315
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скорее всего ошибка в формате даты (ds.Date=?)...
я так понимаю, что day - в формате $H,
тогда нужно
Код: plaintext
set ddrez.RuntimeMode= 0 
иначе нужно в текстовом виде дату передавать
в Execute
(см. доку по классу %Library.ResultSet)
...
Рейтинг: 0 / 0
Запрос
    #33619029
та же мышь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет. в ds.Date они как раз хранятся в том виде, в каком выдает их $Horolog
...
Рейтинг: 0 / 0
Запрос
    #33619846
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
та же мышьНет. в ds.Date они как раз хранятся в том виде, в каком выдает их $Horolog
Храняться да, а в запросе это другое.
Нужно проэксперементировать с RuntimeMode
...
Рейтинг: 0 / 0
Запрос
    #33620058
оно же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробнее о RunTimeMode? В справке что то ничего о нет не нашел.
...
Рейтинг: 0 / 0
Запрос
    #33620124
то же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и судя по всему дело не в поле с датой.
Потому что даже если убрать из запроса условие с датой и искать просто все товарные строки, тоже ничего не выводится.

Хотя банальный select sd.Name from Dname as sd where Code="_chkdrug работает нормально.
...
Рейтинг: 0 / 0
Запрос
    #33620157
yvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
yvv
Гость
>>...f q:'ddrez.Next() s cena=ddrez.Get("ids") d
>>....d MApplication.MessageBox(chkdrug,cena)


Для этих двух строчек пропущен оператор "d"
...
Рейтинг: 0 / 0
Запрос
    #33620213
???
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и на каком же основании там должен быть d?
...
Рейтинг: 0 / 0
Запрос
    #33620225
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оно жеА можно поподробнее о RunTimeMode? В справке что то ничего о нет не нашел.
позволю себе выдержку из справки:
property RuntimeMode As %String
Use this method to set the SQL runtime mode for the query to be executed. Setting the runtime mode for this ResultSet does not permanently change the $zu(115,5) value. Possible values mode are:
0 for LOGICAL mode. (это внутренний формат Cache, например $H)
1 for ODBC mode.
2 for DISPLAY mode.
"" to use the process wide $zu(115,5) value.
...
Рейтинг: 0 / 0
Запрос
    #33620405
-((((
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь вообще никакие запросы не выполняются. -(

Просто голый кусок кода. После него ничего нет и перед ним ничего нет и все равно.

s ddr=##class(%ResultSet).%New("%DynamicQuery.SQL")
s ddt="SELECT FullName FROM Prep WHERE ExtCode=4966 and destroyed=0"
d ddr.Prepare(ddt)
d ddr.Execute()
f q:'ddr.Next() s nm=ddr.Get("FullName")
.d MApplication.MessageBox(nm,"BLA")
...
Рейтинг: 0 / 0
Запрос
    #33620510
newbuy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
f q:'ddr.Next() d
.s nm=ddr.Get("FullName")
.d MApplication.MessageBox(nm,"BLA")
...
Рейтинг: 0 / 0
Запрос
    #33620670
-(((((
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щас это запрос стал выдавать результат в такой вот конструкции

s nm=ddr.Get("FullName")
f q:'ddr.Next() s nm=ddr.Get("FullName")
.d MApplication.MessageBox(nm,"BLA")
d MApplication.MessageBox(nm,"BLA")

Но это для простейшего запроса.
А изначальный запрос, какой был в начале темы так и не проходит
...
Рейтинг: 0 / 0
Запрос
    #33620707
newbuy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-(((((Щас это запрос стал выдавать результат в такой вот конструкции

s nm=ddr.Get("FullName")
f q:'ddr.Next() s nm=ddr.Get("FullName")
.d MApplication.MessageBox(nm,"BLA")
d MApplication.MessageBox(nm,"BLA")

Но это для простейшего запроса.
А изначальный запрос, какой был в начале темы так и не проходит

Cтрочка ".d MApplication.MessageBox(nm,"BLA")" не выполняется.
А "d MApplication.MessageBox(nm,"BLA")" выводит сообщение с последним полученным значением FullName и выводится 1 раз. См. предыдущий пост.
...
Рейтинг: 0 / 0
Запрос
    #33620731
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-((((теперь вообще никакие запросы не выполняются. -(

Неправильно:
s ddr=##class(%ResultSet).%New("%DynamicQuery.SQL")
Правильно так:
s ddr=##class(%ResultSet).%New("%DynamicQuery:SQL")
...
Рейтинг: 0 / 0
Запрос
    #33622642
=))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
=))
Гость
Да без разницы. Что с :, что с .
...
Рейтинг: 0 / 0
Запрос
    #33622833
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) может области разные
2) функции Prepare - Execute возвращают %Status, имеет смысл обратить на него внимание, там иногда полезное бывает.
...
Рейтинг: 0 / 0
Запрос
    #33622996
yvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
yvv
Гость
мля.. поставьте оператор "d" и всё заработает

>>...f q:'ddrez.Next() s cena=ddrez.Get("ids") D
>>....d MApplication.MessageBox(chkdrug,cena)
...
Рейтинг: 0 / 0
Запрос
    #33623261
-((
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-((
Гость
Да даже если и с d.
Результат нулевой.

Дата в поле Date хранится в виде $H. При этом само поле Date является типа String. никакие to_char не помогают.

Есть еще одно поле типа Date.
Там пробовал такое: where DateEdit=to_date('26.03.2006','DD.MM.YYYY')
опять же, в SQL менеджере работает, в программе нет.
...
Рейтинг: 0 / 0
Запрос
    #33623363
yvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
yvv
Гость
а строку запроса не пробовали явно формировать?
Вот так, например:

...s ddt="SELECT dd.Cz as ids FROM Table1 as ds, Table2 as dd, Table3 as dt WHERE ds.Date='"_day_"' AND ds.ID=dd.DId AND dd.Code='"_chkdrug_"' AND ds.DocType=1 AND ds.Destroyed=0 AND dt.Docs=dd.DId AND dt.CSupp<>133"

тогда здесь параметры уже не нужны
...d ddrez.Execute()
...
Рейтинг: 0 / 0
Запрос
    #33623402
-(((
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щас она у меня как раз явная...
там даже все полностью прописано и данные из переменных она не берет.
И все равно бестолку. Спотыкается на конвертации данных в поле Date.
...
Рейтинг: 0 / 0
Запрос
    #33623469
newbuy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
quot -(((]
Щас она у меня как раз явная...
там даже все полностью прописано и данные из переменных она не берет.
И все равно бестолку. Спотыкается на конвертации данных в поле Date.[/quot]


Как определили что "спотыкается", MessageBox не появляется?
Этот "явный" запрос имеет результат в SQL Manager?
Проверяли ли возврат (%Status) у Prepare и Execute?
И D наконец поставили?
...
Рейтинг: 0 / 0
Запрос
    #33623516
-(
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-(
Гость
d стоит.
Определяю что спотыкается, когда после where ставишь например Date=60339 AND DocType=1 and Destroyed=0 - Результат запроса пустой.
Если просто where DocType=1 and Destroyed=0, то выводится результат по условию.
Явный запрос результаты в SQL менеджере выводит.
...
Рейтинг: 0 / 0
Запрос
    #33623543
yvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
yvv
Гость
этj, наверно, из за несоответствия типов..
поэксперементируйте с преобразованиями.
мож так +Date=60339
мож так Date='60339'
или еще как то. Должно помочь
...
Рейтинг: 0 / 0
Запрос
    #33623549
-((
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-((
Гость
%Статус возвращает единицу.
...
Рейтинг: 0 / 0
Запрос
    #33623577
-(
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-(
Гость
Нет. Такие варианты пробовал. Не помогает.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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