Гость
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / "Классовый" запрос / 25 сообщений из 26, страница 1 из 2
30.03.2007, 14:00
    #34427507
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Делаем запрос в классе... Если с SELECT - все работает. Но ни UPDATE, ни INSERT, ни DELETE работать не желает и ошибок не выдает...

Версия 5.0.20 под Win XP...
...
Рейтинг: 0 / 0
30.03.2007, 14:05
    #34427527
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Он и не должен там работать.
Советую прочитать какую-нибудь вводную статью про архитектуру Cache' на нашем сайте или посетить вводный семинар Cache' Entree.

Вадим
...
Рейтинг: 0 / 0
30.03.2007, 14:07
    #34427535
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Спасибо, Вадим. Я так и думал... За приглашение спасибо

Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
06.04.2007, 11:31
    #34442778
blockan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
У нас работают и INSERT И UPDATE и DELETE.
Cache 4.1.5, 5.0.2

Возможно у вас какие-то неправильные классы или запросы.
...
Рейтинг: 0 / 0
06.04.2007, 11:44
    #34442856
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
извиняюсь, каше 4.1.5 и 5.2.0.239
...
Рейтинг: 0 / 0
06.04.2007, 11:44
    #34442863
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Вы просто неправильно используете запросы классов.

Запросы класса позволяют с помощью SQL (select) или специальных программ (можно делать запрос и не на основе SQL) вернуть информацию о наборе объектов (вернее вернуть набор записей таблиц, которые соответствуют объектам классов). Возвращается ResultSet - набор записей.
Вы можете работать с запросом класса через объектные интерфейсы из Cache' Object Script, Cache' Basic или внешних ОО-средств разработки, если Вы работаете с Cache' через объектные интерфейсы (ActiveX-интерфейс, объектная часть ADO .Net Managed Provider, Java Binding ....).

Если Вы хотите через объектный интерфейс изменить данные, то Вы должны работать с объектами. Открывать их, менять, сохранять.
Можно еще метод написать, в котором реализовано какое-то изменение, и вызвать этот метод через объектный интерфейс.

Запрос класса не для редактирования данных !!!

За счет единой архитектуры данных можно к тем же данным обращаться через соответствующие реляционные таблицы.
Соответственно, через ODBC, JDBC, используя динамический или встроенный SQL можно выполнять команды insert, update, delete.

Пожалуйста, прочитайте какую-нибудь обзорную статью по Cache'.
Посмотрите Object QuickStart.
Все необходимые материалы есть на сайте.

Успехов!

Советую еще подумать о миграции на последние версии Cache'.

Вадим
...
Рейтинг: 0 / 0
06.04.2007, 12:57
    #34443200
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Я (и наша команда) в общем работаем с каше более 4х лет, и вы говорите какие-то новые вещи 8-|

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

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

Чисто объектный доступ безумно тормозной.
Если я не прав, скажите в чем именно, cache start guide я читать не буду.

PS. У меня есть надежда, что я не понял, о чем идет речь. Потому что иначе 4 года - и все неправда :'-(
И еще - если использование SQL "неправильное", то почему его разрешают?
...
Рейтинг: 0 / 0
06.04.2007, 14:07
    #34443509
Сашок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Блок А.Н.Может быть, я неправильно понимаю, о чем говорится.
Я так понимаю, что под классовым запросом понимается запрос к таблице, которая создается как отображение хранимого класса, а каждая запись которой (в простом случае) отображает один объект?

Нет, речь была о SQL выражениях в запросах, определяемых в описании класса (ключевое слово Query)
...
Рейтинг: 0 / 0
06.04.2007, 14:48
    #34443691
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
О! Тут такая дискуссия :)

Сашок все правильно понял :) Я спрашивал про запрос который "хранится" в самом классе.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
06.04.2007, 17:42
    #34444443
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Сашок
Нет, речь была о SQL выражениях в запросах, определяемых в описании класса (ключевое слово Query)
А, ну тогда понятно :-) А я уже испугался.

Тогда другой вопрос: зачем в "классовом запросе" insert или delete?
Не проще ли просто сделать метод класса, и в нем все нужное? Так гораздо проще и удобнее.
...
Рейтинг: 0 / 0
06.04.2007, 18:30
    #34444573
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Блок А.Н. Сашок
Нет, речь была о SQL выражениях в запросах, определяемых в описании класса (ключевое слово Query)
А, ну тогда понятно :-) А я уже испугался.

Тогда другой вопрос: зачем в "классовом запросе" insert или delete?
Не проще ли просто сделать метод класса, и в нем все нужное? Так гораздо проще и удобнее.

Про это я и написал. Нужно сделать метод или менять объекты.
В Class Query может быть sql-запрос или запрос не на основе SQL. Но запрос!

Вы говорите, что к можно делать insert, update и delete по таблицам, которые соответствуют классам.
Конечно можно!

Вадим
...
Рейтинг: 0 / 0
09.04.2007, 09:12
    #34446344
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Блок А.Н.зачем в "классовом запросе" insert или delete?
Не проще ли просто сделать метод класса, и в нем все нужное? Так гораздо проще и удобнее.
К "запросу" можно сразу обратиться из Дельфи. Классовый же метод "напрямую" не доступен, т.к. используем один ВизМ...
...
Рейтинг: 0 / 0
09.04.2007, 12:23
    #34446998
Сашок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
krvsaК "запросу" можно сразу обратиться из Дельфи.
почему бы с дельфи не использовать odbc?
...
Рейтинг: 0 / 0
09.04.2007, 12:48
    #34447090
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
krvsa
К "запросу" можно сразу обратиться из Дельфи. Классовый же метод "напрямую" не доступен, т.к. используем один ВизМ...
А почему-бы из VisM не выполнить метод класса?
...
Рейтинг: 0 / 0
09.04.2007, 13:35
    #34447262
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Сашокпочему бы с дельфи не использовать odbc?
Давайте примеры - покажу нашим ребятам...
...
Рейтинг: 0 / 0
09.04.2007, 13:36
    #34447265
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Блок А.Н.А почему-бы из VisM не выполнить метод класса?
Так и сделали...
...
Рейтинг: 0 / 0
09.04.2007, 17:07
    #34447976
Сашок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
krvsa Сашокпочему бы с дельфи не использовать odbc?
Давайте примеры - покажу нашим ребятам...
Кажется это было в примерах школы Pattaya - и лежит в файлах на cache_ru .
...
Рейтинг: 0 / 0
10.04.2007, 08:28
    #34448844
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Далеко ты меня послал, Сашок...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
10.04.2007, 11:39
    #34449414
Hampster-Mumpster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
krvsaСашок
почему бы с дельфи не использовать odbc?

Давайте примеры - покажу нашим ребятам...Нужны ли тут специальные примеры для Cache? ODBC - оно и в Африке ODBC...
...
Рейтинг: 0 / 0
10.04.2007, 14:52
    #34450181
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
"Посылателей" уже двое... А примеров так и нет :(
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
10.04.2007, 17:31
    #34450744
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
"Посылателей" уже двое... А примеров так и нет :(
1.работа Cache ODBC мало чем отличается от работы OBDC c любой другой бд.
Если не разберетесь, то вам в любом случае не в этот форум, а типа "учимся работать с ODBC" ;-)
2.Мне кажется, лучше реализовывать логику на стороне сервера, а при работе с ODBC это будет не так просто. В вашем случае наверно проще VisM
...
Рейтинг: 0 / 0
14.04.2007, 11:54
    #34460898
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Спор непонятен...

Никто не мешает написать Query на основе пользовательского кода
Fetch/Close/Execute - и в этом самом Execute писать хоть DELETE хоть UPDATE хоть INSERT

Никто не мешает засунуть код в процедуру - поставить у неё галку SqlProc и либо вызывать через VisM либо через ODBC - call Super.PuperClacc_Procedure()....
...
Рейтинг: 0 / 0
16.04.2007, 08:52
    #34462343
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
PtnСпор непонятен...
Так нет никакого спора :) Ответ на вопрос давно уже получен ;)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
07.09.2020, 09:35
    #39996085
Дмитрий64
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Прошу подсказки.
Делаю Class Query на основе пользовательского кода.
В Cache' 2017 всё работает.
В Cache' 2010 на %PrepareClassQuery() выдаёт ошибку.
Полагая, что это в моём коде что-то не так, продую на свежесгенерированном запросе:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Query NewQuery1() As %Query(CONTAINID = 0, ROWSPEC = "P1:%String,P2:%Integer") [ SqlProc ]
{
}

ClassMethod NewQuery1Execute(ByRef qHandle As %Binary) As %Status
{
	s qHandle=0
	Quit $$$OK
}

ClassMethod NewQuery1Close(ByRef qHandle As %Binary) As %Status [ PlaceAfter = NewQuery1Execute ]
{
	k qHandle
	Quit $$$OK
}

ClassMethod NewQuery1Fetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = NewQuery1Execute ]
{
	s AtEnd=0,Row=$lb($zv,$i(qHandle))
	Quit $$$OK
}



После

Код: sql
1.
2.
3.
s stmt=##class(%SQL.Statement).%New()
s status=stmt.%PrepareClassQuery("User.MyDemoClass","NewQuery1")
w


%objlasterror="0 SŠ(<FUNCTION>zprepare+25^%SQL.Statement.1zprepare+25^%SQL.Statement.1"
rs=""
status="0 SŠ(<FUNCTION>zprepare+25^%SQL.Statement.1zprepare+25^%SQL.Statement.1"
stmt=<OBJECT REFERENCE>[1@%SQL.Statement]

Как сделать, чтобы запрос работал и под 2010 тоже?
...
Рейтинг: 0 / 0
07.09.2020, 11:39
    #39996123
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Классовый" запрос
Дмитрий64,

%SQL.Statement в этой версии ещё не было.
Используйте %Library.ResultSet: работает везде.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / "Классовый" запрос / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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