Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Как может быть такое, что в 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 параметры документа. Так вот, в коде программы этот запрос выполняется, но результат всегда, что ничего не найдено по запросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 17:19 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
скорее всего ошибка в формате даты (ds.Date=?)... я так понимаю, что day - в формате $H, тогда нужно Код: plaintext в Execute (см. доку по классу %Library.ResultSet) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 18:36 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Нет. в ds.Date они как раз хранятся в том виде, в каком выдает их $Horolog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 09:22 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
та же мышьНет. в ds.Date они как раз хранятся в том виде, в каком выдает их $Horolog Храняться да, а в запросе это другое. Нужно проэксперементировать с RuntimeMode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 12:36 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
А можно поподробнее о RunTimeMode? В справке что то ничего о нет не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:12 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Да и судя по всему дело не в поле с датой. Потому что даже если убрать из запроса условие с датой и искать просто все товарные строки, тоже ничего не выводится. Хотя банальный select sd.Name from Dname as sd where Code="_chkdrug работает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:26 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
>>...f q:'ddrez.Next() s cena=ddrez.Get("ids") d >>....d MApplication.MessageBox(chkdrug,cena) Для этих двух строчек пропущен оператор "d" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:37 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
и на каком же основании там должен быть d? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:47 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
оно жеА можно поподробнее о 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:49 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
теперь вообще никакие запросы не выполняются. -( Просто голый кусок кода. После него ничего нет и перед ним ничего нет и все равно. 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") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 14:34 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
f q:'ddr.Next() d .s nm=ddr.Get("FullName") .d MApplication.MessageBox(nm,"BLA") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 14:55 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Щас это запрос стал выдавать результат в такой вот конструкции s nm=ddr.Get("FullName") f q:'ddr.Next() s nm=ddr.Get("FullName") .d MApplication.MessageBox(nm,"BLA") d MApplication.MessageBox(nm,"BLA") Но это для простейшего запроса. А изначальный запрос, какой был в начале темы так и не проходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 15:24 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
-(((((Щас это запрос стал выдавать результат в такой вот конструкции 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 раз. См. предыдущий пост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 15:32 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
-((((теперь вообще никакие запросы не выполняются. -( Неправильно: s ddr=##class(%ResultSet).%New("%DynamicQuery.SQL") Правильно так: s ddr=##class(%ResultSet).%New("%DynamicQuery:SQL") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 15:37 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Да без разницы. Что с :, что с . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 10:53 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
1) может области разные 2) функции Prepare - Execute возвращают %Status, имеет смысл обратить на него внимание, там иногда полезное бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 11:36 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
мля.. поставьте оператор "d" и всё заработает >>...f q:'ddrez.Next() s cena=ddrez.Get("ids") D >>....d MApplication.MessageBox(chkdrug,cena) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 12:11 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Да даже если и с d. Результат нулевой. Дата в поле Date хранится в виде $H. При этом само поле Date является типа String. никакие to_char не помогают. Есть еще одно поле типа Date. Там пробовал такое: where DateEdit=to_date('26.03.2006','DD.MM.YYYY') опять же, в SQL менеджере работает, в программе нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 13:05 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
а строку запроса не пробовали явно формировать? Вот так, например: ...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() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 13:28 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Щас она у меня как раз явная... там даже все полностью прописано и данные из переменных она не берет. И все равно бестолку. Спотыкается на конвертации данных в поле Date. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 13:36 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
quot -(((] Щас она у меня как раз явная... там даже все полностью прописано и данные из переменных она не берет. И все равно бестолку. Спотыкается на конвертации данных в поле Date.[/quot] Как определили что "спотыкается", MessageBox не появляется? Этот "явный" запрос имеет результат в SQL Manager? Проверяли ли возврат (%Status) у Prepare и Execute? И D наконец поставили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 13:53 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
d стоит. Определяю что спотыкается, когда после where ставишь например Date=60339 AND DocType=1 and Destroyed=0 - Результат запроса пустой. Если просто where DocType=1 and Destroyed=0, то выводится результат по условию. Явный запрос результаты в SQL менеджере выводит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 14:03 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
этj, наверно, из за несоответствия типов.. поэксперементируйте с преобразованиями. мож так +Date=60339 мож так Date='60339' или еще как то. Должно помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 14:08 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
%Статус возвращает единицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 14:09 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Нет. Такие варианты пробовал. Не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 14:14 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Попробуйте, например, без ограничений по дате выполнить запрос в Вашей программе. Созраните в переменную дату или посмотрите на нее в терминале. Используйте именно этот формат даты. Или просто в терминал выведите. Если не поможет, то Вам будет нужно создать проектик с Вашими классами, программой для заполнения тесовых данных и Вашей программой, в которой у Вас есть многострадальный запрос. В терминале наберите $ZV и определите точную версию Cache'. Этот проект можно экспортировать и отправить Вашему техническому консультанту в InterSystems и в SQL.RU. Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:05 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Без даты все отлично работает в программе. Но мне нужна обязательная выборка по дате. Версия Каши 5.0.2 Билд 607 На данный момент запрос выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Пробовалась переменная dt в кавычках и без них. Вот так: SELECT ds.ID as ID FROM Docs as ds, DocTitles as dt WHERE ds.DateCreate='60339' AND ds.DocType=1 AND ds.Destroyed=0 AND ds.Titles=dt.ID AND dt.CodeOfSupplier<>133 Поле DateCreate - типа string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:14 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Здесь ds.DateCreate="_dt_" нужно кавычки одиночные добавить. Вот так: ds.DateCreate='"_dt_"' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:26 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
там же написано.. пробовалось и с кавычками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:28 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
ааай ... не заметил что уже пробовались кавычки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:31 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Ну тогда остается эксперимент. Уберите из запроса проверку ds.DateCreate, и выводите пары значений ds.DateCreate и dt на терминал или в файл. Только обрамляйте их какими нибудь символами, что бы пробел увидеть, если будет.. Тогда можно глазами посмотреть равны ли эти значения.. Если равны - ошибается компилятор. Если не равны, нужно понять как их преобразовывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:36 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
И ещё... не знаю есть ли в этом смысл, но... Я не использую конструкцию типа s zpr=##class(%ResultSet).%New("%DynamicQuery.SQL") а пишу просто s xx=##class(%ResultSet).%New() тоесть без "%DynamicQuery.SQL" Есть ли разница - не знаю, но попробуйте, может поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:42 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Хе.. а это то что? s dt=+..SDate.Date и в то же время DocTitles as dt НЕПОРЯДОК, однако ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:52 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Почему у Вас такая старая версия Cache'. Советую переходить на Cache' 5.0.21 или 5.1. Как дата выводится в Терминал или в программу, если её выбрать ? Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:58 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
VadimFПочему у Вас такая старая версия Cache'. Советую переходить на Cache' 5.0.21 или 5.1. Как дата выводится в Терминал или в программу, если её выбрать ? Вадим По поводу новой версии Каши ничего сказать не могу. Работаем с тем, что есть. К тому же вопрос по поводу перехода на новую версию щас не стоит, и заканчивать вот эту программку нужно на той версии, что доступна в данный момент. --- Дата из базы выводится *60124* и в переменной с которой мы ее сравниваем тоже *60124* Символы специальные, чтоб заметить пробел если че. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:14 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
УБЕЙТЕ... УБЕЙТЕ МЕНЯ!!!!.... ЙАДУ.... SQL Manager выполнялся в другой области.............. А программа писалась в старой копии базы......................................... три дня убилось..... ---- спасибо за ваше терпение.... но по крайней мере что то новое подчерпнулось из нашей беседы..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=39&tid=1559607]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 353ms |

| 0 / 0 |
