mojaSymfonia FORUM
https://forum.mix-soft.pl/

VBA w Handel Forte
https://forum.mix-soft.pl/viewtopic.php?f=15&t=88
Strona 1 z 1

Autor:  jacszym11 [ 2008-04-10, 12:49 ]
Tytuł:  VBA w Handel Forte

Chcę wykorzystać procedury VBA w zrobieniu dodatków do handel forte.
nie AmBasic i sbc. moim zamierzeniem jest obsługa makr VBA z programu nie z pulpitu.
jako przykład tego co chcę zrobić podat to:
W UserVBASymfonia jest UserElement.
ELEMENT ma przypisaną fabrycznie funkcję Private Sub MainDoc_TryToOpen(ByVal Category As String, ByVal Group As String, Name As String, ByVal ActionType As AmOpenAction, Cancel As Boolean)

ta funkja jest wywoływana w momencie (przed) otwarciem okna w symfoni lub wywołania raportu i zwrana między innymi nazwę otwieranego elementu, co można przechwycić i zainicjować wykonuwanie programu.

Kod:
Private Sub MainDoc_TryToOpen(ByVal Category As String, ByVal Group As String, Name As String, ByVal ActionType As AmOpenAction, Cancel As Boolean)
if Name="nazwa_raportu" then userform.show
end sub


i tą metodę mogę i chciałbym wykorzystać ale...
1. wdrożeniowiec był pierwszy i podłożył swój plik UserDoc_HM.mng do symfonii, plik zahasłowany przez programistę z sagesymfonia (wdrożeniowiec nie zna hasła) i nie mogę teraz z niego korzystać (choć w nazwie ma USER).
2. czy można do symfonii dołączyć nowy projekt, aktywowany przy stacie firmy (nie sbc bo ten jest uruchamiany z pulpitu), a jak można to jak.
3. czy można wywołać makro z aktywnego projektu przez komendę umieszczoną w raporcie
np.

komeda_ktora_uruchomi_makro_start
nooutput()

przekopałem dostępną dokumentację i nie znalazłem odpowiedzi na te pytania.
i co z tym hasłem w UserVBASymfonia czy jest możliwośc poznania go.
pozdrawiam
Serwisant teraz Symfonii.

Autor:  barnie [ 2008-04-10, 13:51 ]
Tytuł: 

UserVBASymfonia jest standardowo odhasłowany. Bez tego nie masz dostępu do TryToOpen. Jedyną osobą, która może dać Ci tam dostęp to tylko ta, która zakładało hasło. Dowiedz się dlaczego odebrano Ci dostęp (może dla Twojego dobra :) ).


Cytuj:
2. czy można do symfonii dołączyć nowy projekt, aktywowany przy stacie firmy (nie sbc bo ten jest uruchamiany z pulpitu), a jak można to jak.
3. czy można wywołać makro z aktywnego projektu przez komendę umieszczoną w raporcie
np.

komeda_ktora_uruchomi_makro_start
nooutput()


3. Z ambasica możesz wywołać
Kod:
Dispatch A, D

A = GetApplication()
D = A.Documents.OpenDocument(App.Exepath + "\sbc_hm\\mojProgram.sbc")
NoOutPut()


Spowoduje to uruchomienie projektu sbc...

2. ... co za tym idzie możesz użyć Procedury ambasica ONOPEN wywoływanej przy wejściu do firmy.

Raporty - Procedury - Procedura OnTimer

Kod:
int sub OnOpen()
Dispatch A, D

A = GetApplication()
D = A.Documents.OpenDocument(App.Exepath + "\sbc_hm\\mojProgram.sbc")
   OnOpen = 0
endsub

Autor:  jacszym11 [ 2008-04-10, 14:07 ]
Tytuł: 

dzięki za zainteresowanie.
dostęp nie został zabrany tylko został wgrany plik userdoc_hm już z hasłem.
to jest jeszcze etap wdrażania i są dokładane nowe rzeczy dla potrzeb klienta, wdrożenie prowadzi wydrożeniowiec z sage'a(być może dostanę dostęp ale na razie rozpatruje inne możliwości). ja przejmę serwis po zakończeniu wdrożenia a na razie mam zlecenie na określone raporty i zestawienia które pracowały ze starym programem a klient chce to samo teraz - dlatego vba. moge w excelu ale po co jakjest w symfoni.
to jeszcze pytanko : co zrobić zeby nie było widać okna sbc a projekt był aktywny.
pozdrawiam

Autor:  barnie [ 2008-04-10, 14:22 ]
Tytuł: 

jacszym11 pisze:
dostęp nie został zabrany tylko został wgrany plik userdoc_hm już z hasłem.
jakbyś tego nie nazwał, masz odebrany dostęp.
jacszym11 pisze:
to jest jeszcze etap wdrażania i są dokładane nowe rzeczy dla potrzeb klienta, wdrożenie prowadzi wydrożeniowiec z sage'a
jak sam mówisz program jest dostosowywany do potrzeb klienta. Najprawdopodobniej wdrożeniowiec wykonał dodatkowe prace programistyczne i chciał je zabezpieczyć przed modyfikacją przez osoby, które mogłyby doprowadzić do awarii.
jacszym11 pisze:
to jeszcze pytanko : co zrobić zeby nie było widać okna sbc a projekt był aktywny.

Najprawdopodobniej chodzi Ci o coś takiego
Kod:
Private Sub Document_Open()
    Element.Visible = False
    UserForm1.Show
End Sub

Autor:  jacszym11 [ 2008-04-10, 18:13 ]
Tytuł: 

chyba chodzi o to, dziękuję.
a co do hasła to raczej taka polityka firmy, bo nawet wdrożeniowiec go nie zna. do tego zahasłowane są dodatkowe raporty (by może te prace były jako dodatek komercyjny, więc to normalne sam tak robię), ale irytuje mnie to że ja już nie mogę skorzystac z VBA tylko muszę kombinowac. ale to jeszcze sprawa rozwojowa.
w każdym bądź razie jeszcze raz dziękuję.

Autor:  jacszym11 [ 2008-04-15, 16:30 ]
Tytuł: 

wszytko działa fajnie (no prawie), ale mam jeszcze jeden problem.
jak przenieść wartość jednej czy kilku zmiennych z raportu do VBA.
powiedzmy że uruchamiam raport z karty towaru i chciałbym odczytac w vba IdObiektu
np:
Kod:
long idObiektu
idObiektu = GetLineId()

Dispatch A, D
A = GetApplication()
D = A.Documents.OpenDocument(A.Exepath + "\sbc_hm\\mojProgram.sbc")

uruchamiam makro Auto_Open() obiektu SBC i chciałbym pobrać/mieć możliwość odczytania zmiennej IdObiektu
pozdrawiam

Autor:  rafal [ 2008-04-15, 19:08 ]
Tytuł: 

jeden ze znanych mi sposobów to :

w części AmBasic
Kod:
#define amLong      1

long idObiektu
idObiektu = GetLineId()

Dispatch A, D
A = GetApplication()
D = A.Documents.OpenDocument(A.Exepath + "\sbc_hm\\mojProgram.sbc")
D.AddField("Param01", amLong, 4) = idObiektu

w części sbc
Kod:
Private Sub CommandButton1_Click()
MsgBox ClientField("Param01")
End Sub

W związku z tym, że wartość parametru nadajemy dopiero po otwarciu dokumentu, nie jest dostępna w zdarzeniu Private Sub Document_Open()

Autor:  jacszym11 [ 2008-04-18, 10:30 ]
Tytuł: 

jeszcze jedno: czy można zamknąć dokument SBC z poziomu VBA.

unload nie działa . a było bu elegancko gdyby użytkownik miał ładny
duży przycick "koniec" ;-)
pozdrawiam

Autor:  rafal [ 2008-04-18, 10:42 ]
Tytuł: 

Kod:
Element.CloseDoc(False)

Autor:  tatanka [ 2010-09-21, 15:02 ]
Tytuł: 

rafal pisze:
jeden ze znanych mi sposobów to :

w części AmBasic
Kod:
#define amLong      1

long idObiektu
idObiektu = GetLineId()

Dispatch A, D
A = GetApplication()
D = A.Documents.OpenDocument(A.Exepath + "\sbc_hm\\mojProgram.sbc")
D.AddField("Param01", amLong, 4) = idObiektu

w części sbc
Kod:
Private Sub CommandButton1_Click()
MsgBox ClientField("Param01")
End Sub

W związku z tym, że wartość parametru nadajemy dopiero po otwarciu dokumentu, nie jest dostępna w zdarzeniu Private Sub Document_Open()


Chciałem dopytać coś w temacie. Prześledziłem wasz wątek i spróbowałem przykładu Rafała do przekazania zmiennej z ambasic do vba. Rozumiem że poniższy kod podpinam pod guzik na formie.
Kod:
Private Sub CommandButton1_Click()
MsgBox ClientField("Param01")
End Sub


Po kliknięciu dostaję komunikat że funkcja ClientFileld("Param01") not defined. Czy w związku z wykorzystaniem tej funkcji trzeba do projektu dodać jakieś referencje ??

Poradziłem sobie.

element.clientfield("Param01")

Autor:  zz [ 2019-06-25, 15:02 ]
Tytuł:  Re: VBA w Handel Forte

A jak przenieść wartość zmiennej z SBC-a do AMbasica?
tzn. chcę wykonać RUN z parametrami

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/