Forum Użytkownicy Oprogramowania Humansoft Strona Główna Użytkownicy Oprogramowania Humansoft
Nieoficjalne forum użytkowników oprogramowania firmy Humansoft (Hermes SQL, Corax)
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Odnalezienie i otworzenie domyślnego pliku kontrahenta

 
Napisz nowy temat   Odpowiedz do tematu    Forum Użytkownicy Oprogramowania Humansoft Strona Główna -> Pomoc
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JuliusPL




Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Czw 12:21, 17 Mar 2016    Temat postu: Odnalezienie i otworzenie domyślnego pliku kontrahenta

Witam,
chciałbym odnaleźć pliki, które są dołączone do kontrahenta i gdy takowe istnieją uruchomić (otworzyć) plik domyślny.

Lista plików dołączonych do kontrahenta znajdują się w tabeli:
PLIKI_SK
[kartoteka],[klucz],[nazwa_pl],[rozsz_pl],[opis],[row_dtime],[glowny],[operator],[link],[E_FAKT]
dla kontrahenta klucz w polach nazwa_pl znajdziemy nazwę pliku, w polu rozsz_pl - rozszerzenie pliku, a informację, że jest to plik domyślny da nam rekord glowny

Nie wiem tylko gdzie jest zlokalizowany taki plik oraz czy istnieje jakaś funkcja hermesa, która otwiera pliki.

Wyszukać taki plik można np. poniższym kodem
Kod:

LOCAL MY_UWAGI
MY_UWAGI = SQL_FIND("NAZWA_PL, ROZSZ_PL", "PLIKI_SK", "KLUCZ = ?SKROT_KTR AND GLOWNY = 1")  //może być błąd ze składnią (zgaduję)
IF !EMPTY(MY_UWAGI)
    //jeśli istnieje to otworzyć plik (jakimś domyślnym edytorem)
ENDIF


Post został pochwalony 0 razy

Ostatnio zmieniony przez JuliusPL dnia Czw 12:23, 17 Mar 2016, w całości zmieniany 2 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Thorvaldsen
Administrator



Dołączył: 06 Lip 2015
Posty: 71
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Czw 13:54, 17 Mar 2016    Temat postu:

Ok, otworzyć możesz na pewno instrukcją RUN

Kod:
RUN '[ścieżka do pliku]'


Wtedy co prawda otworzy się najpierw okno konsoli, ale zaraz domyślny edytor. Innej metody w chwili obecnej nie znam. [/code]

Problem w tym, że SQL_FIND zwraca wartość pojedynczego pola, ale to wystarczy NAZWA_PL, tyle, że musisz jeszcze dodać ścieżkę do załączników (możesz zdefiniować ją na sztywno). Ścieżkę do załączników ustala się w opcjach głównych Hermesa.

Czyli, zakładając, że pod MY_UWAGI wczytasz NAZWA_PL z tabeli plików, wywołanie go sprowadzi się do:

Kod:

RUN 'C:\[ścieżka]\[do]\[załączników]\'+MY_UWAGI


Daj znać czy zadziała, bo chwilowo nie mogę testować.


Post został pochwalony 0 razy

Ostatnio zmieniony przez Thorvaldsen dnia Czw 13:58, 17 Mar 2016, w całości zmieniany 3 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JuliusPL




Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Czw 17:46, 17 Mar 2016    Temat postu:

Witam,
tyle udało mi się zrobić.
Mamy już nazwę i rozszerzenie, tylko nie potrafię tego połączyć w jeden string. Wygląda, że kropka łamie mi stringa.
Potrzebuję, jeszcze namierzyć ścieżkę dostępu do plików i wywołać RUN.

Kod:

LOCAL NAZWA_PLIKU
LOCAL ROZSZ_PLIKU
LOCAL NAZWA_ROZSZ_PLIKU

NAZWA_PLIKU = SQL_FIND("NAZWA_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR")
ROZSZ_PLIKU = SQL_FIND("ROZSZ_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR")

ALLTRIM(NAZWA_PLIKU)
ALLTRIM(ROZSZ_PLIKU)
NAZWA_ROZSZ_PLIKU = NAZWA_PLIKU+'.'+ROZSZ_PLIKU

IF !EMPTY(NAZWA_PLIKU)
   EDIT_TXT("O", "Nazwa pliku", NAZWA_ROZSZ_PLIKU)
ENDIF


Post został pochwalony 0 razy

Ostatnio zmieniony przez JuliusPL dnia Czw 17:47, 17 Mar 2016, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Thorvaldsen
Administrator



Dołączył: 06 Lip 2015
Posty: 71
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Pią 10:40, 18 Mar 2016    Temat postu:

Ścieżka do pliku to folder plików tymczasowych, jest dostępny pod zmienną: _xscdp. To jest wartość katalogu załączników ustawiona w ustawieniach globalnych.

ALLTRIM to funkcja która zwraca przetworzoną wartość i nie rusza parametrów, pewnie z tego powodu łamał ci się ciąg (mógł być znak nowej linii na końcu NAZWY PLIKU).

Spróbuj:
Kod:

SCIEZKA = _xscdp + ALLTRIM(NAZWA_PLIKU) + '.' + ALLTRIM(ROZSZ_PLIKU)


Post został pochwalony 0 razy

Ostatnio zmieniony przez Thorvaldsen dnia Pią 14:11, 18 Mar 2016, w całości zmieniany 3 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JuliusPL




Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Pon 12:10, 21 Mar 2016    Temat postu:

Poniższy kod zwraca dokładnie to co mnie interesuje, ścieżkę , nazwę pliku wraz z rozszerzeniem głównego załącznika do kontrahenta.

Kod:

LOCAL NAZWA_PLIKU
LOCAL ROZSZ_PLIKU
LOCAL NAZWA_ROZSZ_PLIKU

NAZWA_PLIKU = SQL_FIND("NAZWA_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR AND GLOWNY = 1")
ROZSZ_PLIKU = SQL_FIND("ROZSZ_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR AND GLOWNY = 1")

NAZWA_ROZSZ_PLIKU = _xscdp + ALLTRIM(NAZWA_PLIKU) + '.' + ALLTRIM(ROZSZ_PLIKU)

IF !EMPTY(NAZWA_PLIKU)
   EDIT_TXT("O", "Nazwa pliku", NAZWA_ROZSZ_PLIKU)
ENDIF





Na razie kod wyświetla go w oknie, a ja potrzebuję go uruchomić.
Kod:
RUN(NAZWA_ROZSZ_PLIKU)

Niestety nie działa.


Post został pochwalony 0 razy

Ostatnio zmieniony przez JuliusPL dnia Pon 12:11, 21 Mar 2016, w całości zmieniany 2 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Thorvaldsen
Administrator



Dołączył: 06 Lip 2015
Posty: 71
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Pon 16:11, 21 Mar 2016    Temat postu:

Mój błąd.

Przy przekazywaniu zmiennej do instrukcji RUN trzeba poprzedzić ją znakiem dolara, aby pobrać jej wartość.

Czyli:
Kod:
RUN &NAZWA_ROZSZ_PLIKU


Post został pochwalony 0 razy

Ostatnio zmieniony przez Thorvaldsen dnia Pon 17:37, 21 Mar 2016, w całości zmieniany 2 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JuliusPL




Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Pon 17:56, 21 Mar 2016    Temat postu:

Witam,
nie poradziłem sobie z RUN, ale zrobiłem to w inny sposób. W każdym razie działa. Jeżeli można coś poprawić w składni lub zrobić to lepiej to zapraszam.

Kod:

DECLARE INTEGER ShellExecute IN shell32.dll ;
  INTEGER hndWin, ;
  STRING cAction, ;
  STRING cFileName, ;
  STRING cParams, ; 
  STRING cDir, ;
  INTEGER nShowWin


LOCAL NAZWA_PLIKU
LOCAL ROZSZ_PLIKU
LOCAL NAZWA_ROZSZ_PLIKU

NAZWA_PLIKU = SQL_FIND("NAZWA_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR AND GLOWNY = 1")
ROZSZ_PLIKU = SQL_FIND("ROZSZ_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR AND GLOWNY = 1")

NAZWA_ROZSZ_PLIKU = _xscdp + ALLTRIM(NAZWA_PLIKU) + '.' + ALLTRIM(ROZSZ_PLIKU)

IF !EMPTY(NAZWA_PLIKU)
   cFileName = NAZWA_ROZSZ_PLIKU
   cAction = "open"
   ShellExecute(0,cAction,cFileName,"","",1)
ENDIF


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Thorvaldsen
Administrator



Dołączył: 06 Lip 2015
Posty: 71
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Pon 18:15, 21 Mar 2016    Temat postu:

Fajnie, że znalazłeś. Rozwiązanie z ShellExecute jest ok i może się przydawać w niektórych sytuacjach (np. otwieranie url, nie wiem jak to ogarnie RUN, albo parametry), ale tutaj, w prologu wystarczyłoby dodać & - większa czytelność kodu, a co więcej DECLARE powinno być wywołane tylko raz w programie, a nie za każdym razem przed użyciem. Co prawda nie powinno to stwarzać jakichś problemów, ale jest to kilka zbędnych (za drugim razem) instrukcji.

Gdyby umieścić w module branżowym taką deklarację i jeszcze dopisać sobie własną funkcję wykorzystującą ShellExecute to wtedy owszem.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JuliusPL




Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Wto 10:33, 22 Mar 2016    Temat postu:

Kod:
RUN &NAZWA_PLIKU

niestety nie uruchamia plików PDF (nie wiem jak inne - nie testowałem)

Okazało się, że nie trzeba używać DECLARE, kod poniżej tez działa.
Kod:

LOCAL NAZWA_PLIKU
LOCAL ROZSZ_PLIKU
LOCAL NAZWA_ROZSZ_PLIKU

NAZWA_PLIKU = SQL_FIND("NAZWA_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR AND GLOWNY = 1")
ROZSZ_PLIKU = SQL_FIND("ROZSZ_PL", "PLIKI_SK", "KLUCZ = ?SYMBOL_KTR AND GLOWNY = 1")

NAZWA_ROZSZ_PLIKU = _xscdp + ALLTRIM(NAZWA_PLIKU) + '.' + ALLTRIM(ROZSZ_PLIKU)

IF !EMPTY(NAZWA_PLIKU)
   ShellExecute(0,"open",NAZWA_ROZSZ_PLIKU,"","",1)
ENDIF


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Thorvaldsen
Administrator



Dołączył: 06 Lip 2015
Posty: 71
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Wto 10:50, 22 Mar 2016    Temat postu:

No to byłoby dobre, ale pytanie, czy po nowym uruchomieniu Hermesa dalej będzie działać? Daj znać Smile

Czytałem, że RUN pozostawia wiele do życzenia rzeczywiście. U mnie działa dobrze i otwiera PDF, ale wyobrażam sobie, że to nie koniecznie musi się sprawdzać w innych środowiskach.


Post został pochwalony 0 razy

Ostatnio zmieniony przez Thorvaldsen dnia Wto 10:52, 22 Mar 2016, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
JuliusPL




Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Wto 10:57, 22 Mar 2016    Temat postu:

Thorvaldsen napisał:
No to byłoby dobre, ale pytanie, czy po nowym uruchomieniu Hermesa dalej będzie działać? Daj znać Smile

masz racje
Smile nie działa


Pytanie, jeżeli można coś zadeklarować, to może można tez coś zwolnić, jak np. delphi (FreeAndNill)


Post został pochwalony 0 razy

Ostatnio zmieniony przez JuliusPL dnia Wto 11:01, 22 Mar 2016, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Thorvaldsen
Administrator



Dołączył: 06 Lip 2015
Posty: 71
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Wto 11:06, 22 Mar 2016    Temat postu:

Tak, CLEAR mogłoby zadziałać. Podejrzewam, że w postaci:
Kod:
CLEAR ShellExecute


Trzeba by sprawdzić, ale tak czy siak nie jest to rozwiązanie idealne. Spróbuję później opisać jak zrobić własny prosty moduł branżowy - u mnie to po prostu lista różnych globalnych funkcji uruchamianych z Hermesem, idealne miejsce na takie DECLARE.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Użytkownicy Oprogramowania Humansoft Strona Główna -> Pomoc Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin