powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [CacheActiveX] Как выполнить "классовый" запрос?
12 сообщений из 12, страница 1 из 1
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737400
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Произвольный запрос работает...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set f = CreateObject("CacheActiveX.Factory")
Set rs = CreateObject("CacheActiveX.ResultSet")
If Not f.IsConnected() Then

f.Connect("cn_iptcp:127.0.0.1[1972]:SAMPLES:_SYSTEM:SYS")

Set rs=f.DynamicSQL("select TOP 3 * from Sample.Person")
rs.Execute()
while rs.Next
    WScript.Echo rs.Get("SSN") 'выводим поле SSN первых трёх записей из таблицы Sample.Person
wend

rs.Close()


А как выполнить "классовый" запрос?
Т.е. есть класс tmp.test , в нем есть запрос getData ... Как выполнить его?
Какой там синтаксис?
----------
Cache for Windows (x86-64) 2012.2.2 (Build 801) Fri Dec 7 2012 12:08:23 EST
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737416
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResultSet

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim res As CacheActiveX.ResultSet
Set res = factory.ResultSet("Person","ByName")

Dim ok As Boolean
ok = res.Execute("L")  ' pass in any arguments expected by the query
while res.Next()
  Debug.Print res.Get("Name")
wend
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737428
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor ResultSet
Ага, спасибо...

Но не получается в Дельфи получить результат запроса RoutineList из класса %Library.Routine ...
Пишет, де нет такого запроса в классе... Но правда имя запроса почему-то показывает большими буквами...
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737440
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПишет, де нет такого запроса в классе... Но правда имя запроса почему-то показывает большими буквами...Это может быть потому, что этот запрос не SqlProc.
из java такая же проблема
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737446
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делал запрос StudioOpenDialog в классе %RoutineMgr
так же позволяет получить все программы, но даже больше возможностей
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737451
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что пишем

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TfMain.Catalog() ;
var
 resultset : variant ;
 list  : TStringList ;
begin
 list    := TStringList.Create ;
 resultset   := connection.ResultSet('%Routine', 'RoutineList') ;
 resultset.Execute('*.MAC,*.INT', 1, 0, '') ;
 while resultset.Next() do ;
  list.Add(resultset.Get('Name')) ;
 list.SaveToFile('d:\catalog.txt') ;
end ;


Но дает "кащейскую" ошибу, де нет такой "хранимой процедуры"...
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737466
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaде нет такой "хранимой процедуры"...Что и означает что не стоит флаг SqlProc, у этого Query
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737481
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorЯ делал запрос StudioOpenDialog в классе %RoutineMgr
так же позволяет получить все программы, но даже больше возможностей
Переписали на него...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TfMain.Catalog() ;
var
 resultset : variant ;
 list  : TStringList ;
begin
 list    := TStringList.Create ;
 resultset   := connection.ResultSet('%RoutineMgr', 'StudioOpenDialog') ;
 resultset.Execute() ;
 while resultset.Next() do
  list.Add(resultset.Get('Name')) ;
 list.SaveToFile('d:\catalog.txt') ;
end ;


Теперь ругается на
Код: pascal
1.
resultset.Next()


Де недопустимое число параметров...
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38737490
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorЯ делал запрос StudioOpenDialog в классе %RoutineMgr
так же позволяет получить все программы, но даже больше возможностей
Все!
Убрали скобки
Код: pascal
1.
resultset.Next


Все заработало! Спасибо.
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38755081
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaНо не получается в Дельфи получить результат запроса RoutineList из класса %Library.Routine ... Пишет, де нет такого запроса в классе... Но правда имя запроса почему-то показывает большими буквами...Покажите Ваш код на паскале и укажите $zv. У меня (2014.2) на VBScript всё прекрасно отрабатывается:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.

Set f = CreateObject("CacheActiveX.Factory")
If Not f.IsConnected() Then

  f.Connect("cn_iptcp:127.0.0.1[1972]:%SYS:_SYSTEM:SYS")

  Set rs=f.ResultSet("%Library.Routine","RoutineList")
  rs.Execute "*.MAC,*.BAS",,,"SAMPLES"
  s=""
  while rs.Next
    s=s & rs.Get("Name") & vbCrLf
  wend

  rs.Close()
  WScript.Echo s
End If
И даже из Портала и "Caché Monitor" всё работает:call %Library.Routine_RoutineList('*.MAC,*.BAS',,,'SAMPLES')DAiMorЭто может быть потому, что этот запрос не SqlProc.Кроме того это зависит ещё и от версии Caché: RoutineList не имеет [SqlProc].
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38755240
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitУ меня (2014.2)
2012...
...
Рейтинг: 0 / 0
[CacheActiveX] Как выполнить "классовый" запрос?
    #38755596
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa2012...В этой версии ошибка есть, но можно либо добавить [SqlProc] в RoutineList , либо сделать свою ХП на основе RoutineList .

PS: в 2014.2 RoutineList уже имеет [SqlProc].
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [CacheActiveX] Как выполнить "классовый" запрос?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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