Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / MS Excel связь с Cache / 25 сообщений из 32, страница 1 из 2
12.12.2012, 13:53
    #38075739
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Ранее читал что некторые из присутствующих активно используют MS Excel для вывода данных из БД Каше...

Можно посмотреть тестовый примерчик такого действа?
Например такого варианта:
- на первом листе есть ряд настроечных полей, в которые нужно внести нужные значения
- есть поле с именем глобала
- есть кнопка типа "Получить данные"
- при нажатии на кнопку происходит связь с Кащеем
- и чтение данных из того глобала
- заполняется табличка на другом листе, в две колонки "Узел" и "Значение"

Есть добрые самаритяне?
----------
Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST
Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST
...
Рейтинг: 0 / 0
12.12.2012, 14:25
    #38075801
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Я покажу пример прямого доступа используя VB6.
(такое же писать макрос на Екселе) для кнопки.
Разделителем между узлом и содержимое косая черта
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Private Sub excel_click()
Dim Ret1 As String, Hor As String
Dim Ret(65534) As String
Dim arrayX As Variant
Dim dm As Integer, cnt As Integer, n1 As Integer
Dim i As Long
Dim objExcel As Excel.Application

On Error GoTo Error
Set objExcel = New Excel.Application
txtLoad.Text = "Loading ..."
Me.MousePointer = vbHourglass
'*** Excel Export  -------------------------------------------------
objExcel.Workbooks.Add App.Path & "\Rap\blabla.xls"
objExcel.Worksheets(2).Activate
m.Do "NOTA^NALOG", Ret, dm, Er
    If Er <> "" Then
    MsgBox Er, vbInformation
    Exit Sub
    End If
            
arrayX = Ret
n1 = 16 '****Кидаем начиная с 17-ой строки ****
For cnt = 1 To dm
Ret1 = arrayX(cnt)
arr = Split(Ret1, "\")
n1 = n1 + 1
prb.VALUE = cnt
objExcel.Cells(n1, 2).VALUE = arr(0)
objExcel.Cells(n1, 6).VALUE = arr(1)
 Next cnt

    objExcel.Visible = True
    Set objExcel = Nothing
    
Me.MousePointer = vbDefault
txtLoad.Text = ""
prb.Refresh
Exit Sub
Error:
Me.MousePointer = vbDefault
Set objExcel = Nothing
MsgBox ("Error " & Err.Description)
   
End Sub

...
Рейтинг: 0 / 0
12.12.2012, 14:28
    #38075806
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
ValeriuЯ покажу пример прямого доступа используя VB6.
Спасибо. Будет хоть с чего-то начать...
Я покажу спецу, который у нас ВБашит, может ему этого и хватит...
...
Рейтинг: 0 / 0
12.12.2012, 15:12
    #38075900
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Valeriu , а где там собственно соединение с Кащеем? Запуск там чего-то и возврат значения?
...
Рейтинг: 0 / 0
12.12.2012, 15:27
    #38075937
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Я в этом случае использовал Activate . В принципе можно
и другое .. VisM например или что-то еще
На сторону Екселя
Код: vbnet
1.
2.
3.
4.
5.
6.
Set m = CreateObject("m.Command")
'cache
m.Server = "192.168.1.101" 'Windows Host
m.PORT = 6330              'txtPort.Text
m.Login
m.Xecute ("ZN ""user"""")


На сторону каше
Код: vbnet
1.
2.
3.
4.
5.
GlbNodes(nod,i,er)
 ;Load 
 f i=1:1 s var=$Q(@var) q:var=""  d
 . s nod(i)=var_"\"_@var
 Quit
...
Рейтинг: 0 / 0
12.12.2012, 15:44
    #38075967
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
ValeriuВ принципе можно
и другое .. VisM например или что-то еще
Нее другое (особенно VisM) не интересно пока.

ValeriuНа сторону каше
Код: vbnet
1.
2.
3.
4.
5.
GlbNodes(nod,i,er)
 ;Load 
 f i=1:1 s var=$Q(@var) q:var=""  d
 . s nod(i)=var_"\"_@var
 Quit


Зачем передавать i и er?
Чему изначально равно var?

И самого вызова GlbNodes с параметрами я что-то не увидел...
...
Рейтинг: 0 / 0
12.12.2012, 15:46
    #38075975
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
krvsa ,

Из VBA и не только Вы можете работать с СУБД Caché через VisM, ActiveX, ADO, ...
Примеры всех трёх вариантов для VBScript (что не суть важно) можно посмотреть здесь (в самом начале).

Вариант ADO для VBA уже рассматривался: 6304596
Готовый Excel файл с макросом во вложении .

Valeriu
Код: vbnet
1.
CreateObject("m.Command")

Это применимо для СУБД Caché?
...
Рейтинг: 0 / 0
12.12.2012, 15:48
    #38075978
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servit , спасибо! Бум смотреть...
...
Рейтинг: 0 / 0
12.12.2012, 15:52
    #38075994
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servitЭто применимо для СУБД Caché?
Это MSM-Activate, который присутствует в Каше
[root@GTM cachesys]# cache
USER>zn "%sys"

%SYS>d ^APIMGR

Note: MSM-Activate can be configured from SYSGEN now


MSM-Activate Management Utility V4.4.0/Cache Config 1

Select APIMGR Option:

1 - Enable Remote MSM-Activate connections
2 - Disable Remote MSM-Activate connections
3 - List Current Servers
4 - Terminate MSM-Activate Server
5 - Configure MSM-Activate Username/Passwords
6 - Configure Security
7 - Configure a different Server

Select Option: 1

Known port for MSM-Activate Server <1666>: 6330

...
Рейтинг: 0 / 0
12.12.2012, 16:05
    #38076042
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
krvsaЗачем передавать i и er?
Чему изначально равно var?
содрал просто код с готовой программы
i- чтобы на клиенте еще раз не считал сколько строк
в er можно передавать ошибку если она происходит, или какую то инфо(это на любителя)
var=^globalname ...
...
Рейтинг: 0 / 0
12.12.2012, 16:22
    #38076083
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Valeriu ,

MSM-Activate это на стороне сервера , а не клиента .

На стороне Excel-клиента установлены только клиентские библиотеки для подключения к СУБД Caché.
Эти библиотеки для x64 по умолчанию устанавливаются в каталог:
Код: plaintext
C:\Program Files (x86)\Common Files\InterSystems\Cache\

Какие именно из этих файлов отвечают за "m.Command"?
...
Рейтинг: 0 / 0
12.12.2012, 16:41
    #38076122
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servitКакие именно из этих файлов отвечают за "m.Command"?
ftp://ftp.intersystems.com/pub/msm/utilities/MSMActivate44.zip
Это устанавливается на стороне клиента...
...
Рейтинг: 0 / 0
12.12.2012, 16:50
    #38076144
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Я использую только это
msmole32.dll
...
Рейтинг: 0 / 0
12.12.2012, 17:37
    #38076238
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Valeriu ,
MSM-ActivateInterSystems recommends that, as a long-term goal, you convert your MSM-Activate based applications to native Caché technology.
источник Безусловно, Ваш вариант - тоже вариант:

включить на сервере MSM-Activate
поставить на клиент библиотеки MSM
использовать интерфейсы MSM

Но я не нашёл у ТС упоминаний об MSM.
...
Рейтинг: 0 / 0
12.12.2012, 17:48
    #38076270
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
krvsaРанее читал что некторые из присутствующих активно используют MS Excel для вывода данных из БД Каше...

Можно посмотреть тестовый примерчик такого действа?
Например такого варианта:
- на первом листе есть ряд настроечных полей, в которые нужно внести нужные значения
- есть поле с именем глобала
- есть кнопка типа "Получить данные"
- при нажатии на кнопку происходит связь с Кащеем
- и чтение данных из того глобала
- заполняется табличка на другом листе, в две колонки "Узел" и "Значение"

Есть добрые самаритяне?
----------
Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST
Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST

Активно используют - пожалуй не то слово !

Мы буквально находимся ВНУТРИ искусственно созданного EXCEL ,
который находится ВНУТРИ CACHE и ИНТЕРАКТИВНО отображается на множество клиентов
на их обычные EXCEL - одновременно - но в разных сечениях.

Клиенты вводят - редактируют - генерят отчеты - и т п,
как бы - с их точки зрения - в каком то особо навороченом EXCEL
(на самом деле работает только один на всех виртуальный EXCEL, встроенный в CACHE )

Такая завязка дала множество бонусов :
-- скорость CACHE !
-- многооконность
-- многомерность обьектов виртуального EXCEL ( в обычном EXCEL только три измерения : листы - строки - колонки )
-- проектирование БЕЗ написания программ - только формулы в ячейках листов
-- формы генерятся автоматом на основе тех же формул в ячейках
-- единая база данных на много десятков EXCEL-абонентов (в ней все данные - в EXCELях пользователей только формулы)
-- все бантики Microsoft Office для идеального оформления отчетов - диаграмм - dashboards
-- удобный табличный ввод данных со всеми подстраховками и подсказками


из фишек -

- на листах EXCEL находятся сотни невидимых "проектов" кнопок, списков, изображений
которые отрисовываются в нужный момент - по необходимости -
например при наведении мышки на данную зону
поэтому не загромождают вид и не сжирают время на отрисовку при запуске

- есть, например, круиз-контроль - по скопированной или автоматически составленой дорожной карте
система сама собой работает - вводит данные - нажимает кнопки - выбирает из списков - выдает отчеты
(пользователь пьет кофей или пиво)

клиент связан с сервером по tcp (не vism и не activate )
...
Рейтинг: 0 / 0
12.12.2012, 18:33
    #38076354
Александр GAGADDDOC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
Можна посмотреть тут.
Работаем из таблицей Ексель постоянно и в MSM и с Кашой

http://www.docadd.narod.ru/PROGPRK.htm
...
Рейтинг: 0 / 0
12.12.2012, 19:16
    #38076424
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
MX-9 , многабукафф но нет примеров которые можно посмотреть и опробовать...
...
Рейтинг: 0 / 0
12.12.2012, 19:21
    #38076433
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servit Готовый Excel файл с макросом во вложении .
На его основе получил то, что хотел.
Еще раз спасибо.
...
Рейтинг: 0 / 0
13.12.2012, 08:39
    #38076988
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servitПримеры всех трёх вариантов для VBScript (что не суть важно) можно посмотреть здесь (в самом начале).
Я совсем не искушон в этом деле... Расскажи что потом можно будет делать с этим?

servitПример реляционного доступа:
Код: vbnet
1.
2.
3.
4.
5.
Set cn=Createobject("ADODB.Connection") 

cn.ConnectionString="DRIVER={InterSystems ODBC35}; SERVER=127.0.0.1; PORT=1972; DATABASE=SAMPLES; UID=_system; PWD=SYS"
cn.open
WScript.Echo "Succesfully!"



Т.е. к Кащею подключились... И потом что и чем можно пользоваться для получения данных? И каких именно? Классовых или простых глобалов?
...
Рейтинг: 0 / 0
13.12.2012, 08:42
    #38076992
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servit , еще хотел уточнить...
Как проверить подключился ли я к Кащею? По тем трём вариантам, что ты описал в блоге...
...
Рейтинг: 0 / 0
13.12.2012, 14:59
    #38077847
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servit , есть еще непонятки по вот этому примеру...

авторПример объектного доступа:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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()
  Set person = f.Static("Sample.Person")
  age=person.CurrentAge(45678) 'вызываем метод класса Sample.Person

  WScript.Echo age
End If



Вроде как определили переменные f и rs...
Код: vbnet
1.
2.
Set f = CreateObject("CacheActiveX.Factory")
Set rs = CreateObject("CacheActiveX.ResultSet")



А потом поменяли значение у того rs...
Код: vbnet
1.
  Set rs=f.DynamicSQL("select TOP 3 * from Sample.Person")



В чем тут тайный смысл?

P.S.
Наши сишники так же заитересовались этим подключением и просят показать примеры...
...
Рейтинг: 0 / 0
13.12.2012, 18:50
    #38078361
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
krvsaЯ совсем не искушон в этом деле... Расскажи что потом можно будет делать с этим?Много чего: 6304596
ADO (wiki)
Использование библиотеки ADO (с примерами)krvsaТ.е. к Кащею подключились... И потом что и чем можно пользоваться для получения данных? И каких именно? Классовых или простых глобалов?Реляционный интерфейс предполагает доступ к таблицам, представлениям, хранимым процедурам . Поэтому, если Вы напишете ХП для работы с глобал(ом/ами), то соответственно сможете работать с любыми данными. Также советую посмотреть статью на Хабре по этой теме.krvsaКак проверить подключился ли я к Кащею? По тем трём вариантам, что ты описал в блоге...
ADO: State (см. ссылку выше)
пример
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Set cn=Createobject("ADODB.Connection") 

WScript.Echo "Состояние до = " & cn.State

cn.ConnectionString="DRIVER={InterSystems ODBC35}; SERVER=127.0.0.1; PORT=1972; DATABASE=SAMPLES; UID=_system; PWD=SYS"
cn.open

WScript.Echo "Состояние после = " & cn.State

'Закрываем соединение
cn.Close
Set cn = Nothing


VisM: ConnectionState
CacheActiveX.Factory: IsConnected() , Connect() krvsa<...> В чем тут тайный смысл?Первую строку добавил, чтобы показать тип rs . Вполне можно её закомментировать или вовсе убрать:
Код: vbnet
1.
'Set rs = CreateObject("CacheActiveX.ResultSet")

krvsaНаши сишники так же заитересовались этим подключением и просят показать примеры...Примеров из блога и документации для Delphi, VB и VBS недостаточно или есть проблемы с их адаптацией под C?
...
Рейтинг: 0 / 0
14.12.2012, 08:21
    #38078855
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servitПримеров из блога и документации для Delphi, VB и VBS недостаточно или есть проблемы с их адаптацией под C?
Я так понял что проблемы именно с адаптацией...
...
Рейтинг: 0 / 0
14.12.2012, 08:54
    #38078880
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
servitVisM: ConnectionState

Что-то это свойство не особо помогло...
Если указать несуществующий сервер - появляется системное окно с надписью о невозможности соединения с повтором и отменой... После отмены опять стандартное окно со списком серверов и пока не подключится не отстанет.
Вот такого как раз не хочется... Хотелось бы просто дать сообщение о невозможности соединиться и все.
...
Рейтинг: 0 / 0
14.12.2012, 11:10
    #38079048
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel связь с Cache
krvsaЯ так понял что проблемы именно с адаптацией...Это сюда .krvsaЧто-то это свойство не особо помогло...
Если указать несуществующий сервер - появляется системное окно с надписью о невозможности соединения с повтором и отменой... После отмены опять стандартное окно со списком серверов и пока не подключится не отстанет.
Вот такого как раз не хочется... Хотелось бы просто дать сообщение о невозможности соединиться и все.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Set f = CreateObject("VISM.VisMCtrl.1")

f.ErrorTrap=True
f.Server="CN_IPTCP:localhost[197256]"

If f.Error <> 0 Then
  WScript.Echo "Код ошибки=" & f.Error & " Текст ошибки=" & f.ErrorName
Else
  f.Execute("=$zv") 'получение версии СУБД
  WScript.Echo f.VALUE
End if
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / MS Excel связь с Cache / 25 сообщений из 32, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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