 |
Użytkownicy Oprogramowania Humansoft Nieoficjalne forum użytkowników oprogramowania firmy Humansoft (Hermes SQL, Corax)
|
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
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
JuliusPL
Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
JuliusPL
Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
JuliusPL
Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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 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
|
Wysł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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
JuliusPL
Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Wto 10:33, 22 Mar 2016 Temat postu: |
|
|
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 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
|
Wysł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ć
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 poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
JuliusPL
Dołączył: 11 Mar 2016
Posty: 36
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysł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ć
|
masz racje
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 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
|
Wysłany: Wto 11:06, 22 Mar 2016 Temat postu: |
|
|
Tak, CLEAR mogłoby zadziałać. Podejrzewam, że w postaci:
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 |
|
 |
|
|
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
|