Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Запрос / 25 сообщений из 36, страница 1 из 2
22.03.2006, 17:19
    #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
22.03.2006, 18:36
    #33618315
Maksim UM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
скорее всего ошибка в формате даты (ds.Date=?)...
я так понимаю, что day - в формате $H,
тогда нужно
Код: plaintext
set ddrez.RuntimeMode= 0 
иначе нужно в текстовом виде дату передавать
в Execute
(см. доку по классу %Library.ResultSet)
...
Рейтинг: 0 / 0
23.03.2006, 09:22
    #33619029
та же мышь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Нет. в ds.Date они как раз хранятся в том виде, в каком выдает их $Horolog
...
Рейтинг: 0 / 0
23.03.2006, 12:36
    #33619846
Maksim UM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
та же мышьНет. в ds.Date они как раз хранятся в том виде, в каком выдает их $Horolog
Храняться да, а в запросе это другое.
Нужно проэксперементировать с RuntimeMode
...
Рейтинг: 0 / 0
23.03.2006, 13:12
    #33620058
оно же
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
А можно поподробнее о RunTimeMode? В справке что то ничего о нет не нашел.
...
Рейтинг: 0 / 0
23.03.2006, 13:26
    #33620124
то же
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Да и судя по всему дело не в поле с датой.
Потому что даже если убрать из запроса условие с датой и искать просто все товарные строки, тоже ничего не выводится.

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


Для этих двух строчек пропущен оператор "d"
...
Рейтинг: 0 / 0
23.03.2006, 13:47
    #33620213
???
???
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
и на каком же основании там должен быть d?
...
Рейтинг: 0 / 0
23.03.2006, 13:49
    #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
23.03.2006, 14:34
    #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
23.03.2006, 14:55
    #33620510
newbuy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
f q:'ddr.Next() d
.s nm=ddr.Get("FullName")
.d MApplication.MessageBox(nm,"BLA")
...
Рейтинг: 0 / 0
23.03.2006, 15:24
    #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
23.03.2006, 15:32
    #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
23.03.2006, 15:37
    #33620731
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
-((((теперь вообще никакие запросы не выполняются. -(

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

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

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

Есть еще одно поле типа Date.
Там пробовал такое: where DateEdit=to_date('26.03.2006','DD.MM.YYYY')
опять же, в SQL менеджере работает, в программе нет.
...
Рейтинг: 0 / 0
24.03.2006, 13:28
    #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
24.03.2006, 13:36
    #33623402
-(((
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Щас она у меня как раз явная...
там даже все полностью прописано и данные из переменных она не берет.
И все равно бестолку. Спотыкается на конвертации данных в поле Date.
...
Рейтинг: 0 / 0
24.03.2006, 13:53
    #33623469
newbuy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
quot -(((]
Щас она у меня как раз явная...
там даже все полностью прописано и данные из переменных она не берет.
И все равно бестолку. Спотыкается на конвертации данных в поле Date.[/quot]


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


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