powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / MS Excel связь с Cache
7 сообщений из 32, страница 2 из 2
MS Excel связь с Cache
    #38079072
Maarina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использовала Excel через Delphi (шаблонами). Интерфейс на Delphi писался, а все данные из Cache тащили.
Ну и примерчик. Может и примитивно, но работало и бухи не жаловались, им нравилось.
Delphi:
procedure pr_excel;
var W:variant;
f1:textfile;
fs,c,cc,CC2:string;
d,nl,den,mes,god,mm,n,nd,pr,ch,sum,ostn,ostk:string;
i,j,k,t,k1:integer;
kol_prix,kol_ras:string;
ITOGCHAS,sumpr,sumrs:DOUBLE;
A:array [2..9] of string;

begin
try //1try
try //2try
W:=GetActiveOleObject('Excel.Application');
except //2try
try //3try
W:= CreateOleObject('Excel.Application');
except //3try
ShowMessage('Íå ìîãó çàïóñòèòü Excel');
end; //3try
end; //2try
//AssignFile(f1,'c:\Êàññîâàÿ êíèãà.txt');
//Reset(f1);
//ReadLn(f1,fs);
//CloseFile(f1);
fs:='\\192.168.0.201\asup\XLT\Êàññîâàÿ êíèãà.xlt';
w.WorkBooks.Add(fs);
// w.Visible:=True;
org:=KasForm2.Label2.Caption;
den:=copy(KasForm2.maskedit1.Text,1,2);
w.ActiveWorkBook.ActiveSheet.Cells[2,15].Select;
w.Selection.Value:=den;
mes:=copy(KasForm2.maskedit1.Text,4,2);
w.ActiveWorkBook.ActiveSheet.Cells[2,20].Select;
w.Selection.Value:=mm;
<.....>
w.ActiveWorkBook.ActiveSheet.Cells[15,112].Select;
w.Selection.Value:=zpt(floattostr(sumpr));
w.ActiveWorkBook.ActiveSheet.Cells[15,124].Select;
w.Selection.Value:=zpt(floattostr(sumrs));

if KasForm2.CheckBox1.Checked=false then
begin
w.ActiveWorkBook.ActiveSheet.PrintOut;
W.DisplayAlerts:=False;
W.ActiveWorkbook.SaveAs('C:\2.XLS');
W.DisplayAlerts:=True;
w.QUIT;
end
else w.visible:=true;

finally //1try
w:=UnAssigned;
end; //1try }
end;


Код из COS:
Class Orbita.BUHUCH Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{

//НОМЕР ЛИСТА КАССОВОЙ КНИГИ

Method NOMLIST(D) As %String
{
S S=""
I $D(^["OTL_ZPI"]CC1(D)) S NL=^["OTL_ZPI"]CC1(D)
I '$D(^["OTL_ZPI"]CC1(D)) S NL=$O(^["OTL_ZPI"]CC1(D),-1)+1
S S=NL
Q NL
}

Method NOMPP(D, PR, N) As %String
{
S S=""
S S=$O(^["OTL_ZPI"]KASKN(D,PR,N))
Q S
}

Method NOMND(D, PR, N, ND) As %String
{
S S=""
S S=$O(^["OTL_ZPI"]KASKN(D,PR,N,ND))
Q S
}

Method NOMCH(D, PR, N, ND, CH) As %String
{
S S=""
S S=$O(^["OTL_ZPI"]KASKN(D,PR,N,ND,CH))
Q S
}

Method NOMST(D, PR, N, ND, CH) As %String
{
S S=""
S S=$P(^["OTL_ZPI"]KASKN(D,PR,N,ND,CH),"\",2)_"\"_$P(^["OTL_ZPI"]KASKN(D,PR,N,ND,CH),"\",4)
Q S
}

Method OST(ST, D) As %String
{
S S=""
I ST="1" S DT=$O(^["OTL_ZPI"]SAL2(D),-1) S S=^["OTL_ZPI"]SAL2(DT)
I ST="2" S S=^["OTL_ZPI"]SAL2(D)
Q S
}

Method FORMMAS(D) As %String
{
K ^["OTL_ZPI"]KASKN(D)
S DN=$O(^["OTL_ZPI"]SAL2(D),-1)
S OSTN=^["OTL_ZPI"]SAL2(DN) ;ОСТАТОК НА НАЧАЛО ДНЯ
S OSTK=^["OTL_ZPI"]SAL2(D) ;ОСТАТОК НА КОНЕЦ ДНЯ
S NL="" I $D(^["OTL_ZPI"]CC1(D)) S NL=^["OTL_ZPI"]CC1(D)
//I '$D(^CC1(D)) S NL=$O(^CC1(""),-1)+1
S ^["OTL_ZPI"]KASKN(D,"OSTN")=OSTN
S ^["OTL_ZPI"]KASKN(D,"OSTK")=OSTK
M ^["OTL_ZPI"]KASKN(D,"PR")=^["OTL_ZPI"]KDOK22(D,1)
M ^["OTL_ZPI"]KASKN(D,"RS")=^["OTL_ZPI"]KDOK22(D,2)
Q NL
}

}


Ну и соответственно шаблон на сервере был
...
Рейтинг: 0 / 0
MS Excel связь с Cache
    #38079078
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
В принципе можно
и другое .. VisM например или что-то еще

Нее другое (особенно VisM) не интересно пока.
Странно, а говорили что не интересен ... ;)
Я думаю все средство хороши !
...
Рейтинг: 0 / 0
MS Excel связь с Cache
    #38079468
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , еще раз спасибо! Теперь подключение контролирую.
...
Рейтинг: 0 / 0
MS Excel связь с Cache
    #38079472
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuСтранно, а говорили что не интересен ... ;)
Я думал что это тот компонент, что ранее давали для связи Делфи с Каше... Когда можно было несколько переменных передать "туда" и несколько получить "обратно".
...
Рейтинг: 0 / 0
MS Excel связь с Cache
    #38081910
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit krvsa ,

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

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub find()
   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")
     Wend
     rs.Close()
   End If
End Sub



И сразу имею синтаксические ошибки на строках

Код: vbnet
1.
2.
3.
     rs.Execute()
     ...
     rs.Close()
...
Рейтинг: 0 / 0
MS Excel связь с Cache
    #38081914
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошло вот так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub find()
   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")
     ok = rs.Execute()
     While rs.Next
       Debug.Print rs.Get("SSN")
     Wend
     ok = rs.Close()
   End If
End Sub
...
Рейтинг: 0 / 0
MS Excel связь с Cache
    #38081929
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В итоге взял за основу такой вариант...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim obj As Variant
Dim ors As Variant
Dim ok As Variant
Sub find()
   Set obj = CreateObject("CacheActiveX.Factory")
   obj.Connect ("cn_iptcp:cache[1972]:ERR:_SYSTEM:SYS")
   If obj.IsConnected() Then
      Set ors = obj.DynamicSQL("select TOP 3 * from wrk.Member")
      ok = ors.Execute()
      While ors.Next
         Debug.Print ors.Get("Name")
      Wend
      ok = ors.Close()
   End If
End Sub
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / MS Excel связь с Cache
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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