Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-03-28, 14:03x



Odpowiedz w temacie  [ Posty: 52 ]  Przejdź na stronę 1, 2, 3, 4  Następna
Pervasive - Wprowadzanie kursu walut? 
Autor Wiadomość

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Pervasive - Wprowadzanie kursu walut?
Witam, chciałem spytać się czy istnieje możliwość dodania przy pomocy raportów własnego wpisu do kursu walut...?


2013-11-26, 11:21
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3982
Pomógł: 445
Post Re: Pervasive - Wprowadzanie kursu walut?
o jakim programie piszesz?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-11-26, 11:35
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
Oczywiście chodzi o Symfonia Handel 2013.


2013-11-26, 12:06
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3982
Pomógł: 445
Post Re: Pervasive - Wprowadzanie kursu walut?
Ta wiadomość była pomocna.(1)
Kod:
int sub DodajKurs(string sWaluta, string sData, float fKurs)

   BaseWL wl
      wl.Clear()
      wl.SetField("data",      sData )
      wl.SetField("waluta",    sWaluta )
      wl.SetField("kurs",    fKurs )
      wl.SetField("kurss",   fKurs )
      wl.SetField("kursk",   fKurs )
      wl.Insert()
      wl.DoUpdate()
endsub

DodajKurs("EUR","2012-10-01",4.0)


UWAGA Rozwiązanie ingeruje w dane programu

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-11-26, 12:35
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
Cytuj:
UWAGA Rozwiązanie ingeruje w dane programu

Czyli rozumiem że jak za rok uszkodzi mi się baza z zupełnie innego powodu, to sage powie mi że to moja wina bo:
11 miesięcy, 4 dni, 7h, 23min temu wprowadziłem ręcznie prawidłowo kurs do programu i to pewnie tego wina...?

Tak czy inaczej bardzo dziękuje za kod...


2013-11-26, 13:24
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
Sorry że truje ale proszę jeszcze o jedną informacje:
- Chcę pobrać z bazy ostatnią (najnowszą) datę kursu walut jaka została wpisana
ale kiedy pobieram z nowo otwartego wskaźnika tabeli to odczytuje mi najstarszy wpis...

Jak zrobić aby odczytał mi aktulany ostatni wpis?

Bardziej szczegółowo:
Kod:
string data
BaseWL wl
data = wl.GetField("data")
message data


Jak odczytać inny wiersz niż pierwszy po otwarciu tabeli?


2013-11-26, 20:14
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3982
Pomógł: 445
Post Re: Pervasive - Wprowadzanie kursu walut?
Istnieje funkcja KursWaluty

Kod:
Print KursWaluty("EUR")


Możesz także sam czytać z bazy

Kod:
float sub Kurs(string sWaluta, string sData)

   BaseWL wl

   wl.SetKey( "waluta" )
   wl.SetKeySeg( "waluta", sWaluta)
   wl.SetKeySeg( "data", sData)
   
   if !wl.GetRec( EQ ) then Kurs = wl.GetField( "kurs" )

endsub

Print Kurs("EUR","2013-11-26")


Tylko pamiętaj, że w jednym dniu waluta może mieć kilka kursów.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-11-26, 23:05
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
Wiem wiem że waluta może mieć różne wartości jednego dnia...
Mi potrzebne tylko aby sprawdzić czy w danym dniu ktoś już wprowadzał kurs...
A jeśli nie to zostanie pobrany z nbp i doda się sam do listy :)
Wiem że to lenistwo... ;P


2013-11-27, 18:40
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3982
Pomógł: 445
Post Re: Pervasive - Wprowadzanie kursu walut?
Ciekawy jestem jak będziesz pobierał kursy w NBP. Masz już jakiś pomysł?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-11-27, 18:51
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
Napisałem aplikacje (nie związaną z symfonią) która pobiera z nbp ostatni kurs waluty EURO (w tym przypadku bez parametru)
lub kurs dowolnej waluty z dowolnego dnia podawany jako parametr aplikacji
czyli ShellExecute("x:\application.exe EUR 01012014")
Całość zapisuje do pliku w postaci: 1 linijka WALUTA, 2 linijka DATA, 3 linijka ŚREDNI KURS
Dalej pozostaje już odczytać plik w symfonii...


2013-11-27, 19:15
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3982
Pomógł: 445
Post Re: Pervasive - Wprowadzanie kursu walut?
Napisz jak Twoja aplikacja pobiera kurs z NBP. Moze uda sie to zaimplementowac w AmBasicu.

Wystarczy Execute(). ShellExecute jest do otwierania Np. Pliku JPG za pomoca domyslnego programu.

Kod:
ShellExecute("c:\zdjecie.jpg")


Poza tym przy execute raport leci dalej i nie czeka az Twoja aplikacja sciagnie kurs. Tak wiec moze cos sie wysypac.
Poszukaj na forum sposobu na uruchomienie zewnetrznej aplikacji i poczekanie na jej zamkniecie.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-11-27, 20:00
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
Spokojnie... znam oba polecenia ShellExecute i Execute.
A napisałem ShellExecute bo akurat często używam go w innych językach...

Co do samego sposobu pobierania z NBP to:
Aby dostać aktualny (ostatni) kurs wystarczy:
1. Pobrać plik dane z adresu: http://www.nbp.pl/kursy/xml/LastA.xml
2a. Rozdzielić do tablicy kolejno wszystkie linijki z pliku i poszukać stringu <kod_waluty>EUR</kod_waluty>
jeśli się znajdzie to należy przyjąć że następna linijka będzie zawierać <kurs_sredni> "wartość waluty" </kurs_sredni>
więdz wyciągamy wartość pomiędzy ciągiem <kurs_sredni> a </kurs_sredni>
lub
2b. Jeśli można wczytać cały plik do jednego stringa to użyć RegExp
aby pobrać ciąg liczbowy pomiędzy <kod_waluty>EUR a </kurs_sredni>
....(nie wspominam tu oczywiście o sprawdzaniu błedów i ewentualne porównywanie z poprzednimi kursami w celu upewnienia się czy czasem waluta z 4.2019 zmieniła wartość na 174.4323...)
Kwestia pobierania z innych dat wymaga dodatkowo sprawdzenia w pliku http://www.nbp.pl/kursy/xml/dir.txt
wybranego pliku XML dla danego dnia... ale to nie problem więc jeśli zaczniesz zabawę z pisaniem tego w AMBasicu
to Ci pomogę...

(PS. Czasem lepiej zrobić ShellExecute i zrobić timer w oczekiwaniu na rezultat programu
niż blokowanie całej aplikacji do czasu zakończenia procesu... który nie zawsze musi się skończyć ;)
(Czy w AM są jakieś timery, countery lub tym podobne??
bo jak nie to pozostaje tylko porównanie wartości zwracanych przez funkcje Time)


2013-11-27, 20:48
Wyświetl profil
Ekspert
Ekspert
Awatar użytkownika

Rejestracja: 2008-04-18, 18:52
Posty: 5169
Pomógł: 59
Post Re: Pervasive - Wprowadzanie kursu walut?
Soreki ze sie wtrace do waszej dyskusji ale nurtuje mnie pytanie:
Ale po co zaczynac to robić? - juz dawno (od ponad 4 lat) takie rozwiania są napisane do symfonii (od paru rożnych firm )- korzystające pliku xml z nbp i wget albo dispatch ie

( Kontakt w stopce - zmodyfikowane przez Administrator FORUM)

i nawet sage ma na stronie swoj dodatek tez (w rozwiązaniach dodatkowych)- wiec wybor jest spory

co do regexp - popelnilem taka wersja w ambasicu i dziala sprawnie od lat ale teraz ostatnio jednak uważam ze lepiej do parsowania uzyc biblioteki XMLdom - szybciej sie czyta i ladniej wyglada programistyczne - biblioteka jest zazwyczaj w kazdym windowsie gdzies a jak nie ma to mozna sobie pobrac np stad http://www.microsoft.com/en-us/download ... px?id=3988


2013-11-27, 22:51
Wyświetl profil

Rejestracja: 2013-10-20, 19:08
Posty: 49
Post Re: Pervasive - Wprowadzanie kursu walut?
:) Pewnie że łatwiej użyć rozwiązania innych... ale dawać sage za taką przyjemność 400 netto...?
Nie że jestem zboczony ale chyba wole wydać te pieniądze na inne przyjemności :)
Co do sposobu to oczywiste że najbardziej logiczne jest użyć MSXML... bo po to XML był stworzony...
Ale w przypadku gdy program ma odczytać jedną małą wartość float z pliku
to powoływanie specjalnie obiektu MSXML jest w tym przypadku tak samo wydajne jak regexp
czy bardziej proste rozwiązania.
Zasada jest taka że zawsze należy oceniać wielkość przedsięwzięcie do opłacalności
używania zewnętrznych rozwiązań... Jak to powiadał wujek Sam:
Nie pytaj co twój Windows może zrobić dla Ciebie, zapytaj co tym możesz zrobić za twojego windowsa...


2013-11-28, 07:07
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3982
Pomógł: 445
Post Re: Pervasive - Wprowadzanie kursu walut?
Ta wiadomość była pomocna.(3)
Kod:
limit 200000

float sub PobierzKurs(string sWaluta, string sData)

   date dDataNBP
   dDataNBP.FromStr( sData )

   dispatch fso = "Scripting.FileSystemObject"
   dispatch req = "Microsoft.XmlHttp"
   dispatch xml = "Microsoft.XMLDOM"
   dispatch tmpFile
   dispatch dNull
   
   dispatch xmlPOZYCJE
   dispatch xmlPOZYCJA
      dispatch xmlKOD_WALUTY
      dispatch xmlKURS_SREDNI


   string sWybranyXML   
   string tmp = KatalogFirmy() + "kurs.tmp"// plik tymczasowy
   string url = "http://www.nbp.pl/kursy/xml/dir.txt"
   int iPozycje   

   req.open ("GET", url, 0)
   req.send
   
   fso.CreateTextFile( tmp, 1 )
   tmpFile = fso.OpenTextFile( tmp, 2 )
   tmpFile.Write( req.responseText )
   tmpFile.Close
   
   tmpFile = dNull
   
   tmpFile = fso.OpenTextFile( tmp, 1 )
      
   while !tmpFile.AtEndOfStream
      buf = tmpFile.ReadLine      
      if find regular (using "a???z%s%2.2d%2.2d", mid((using "%d", dDataNBP.Year ),3,2), dDataNBP.Month, dDataNBP.Day) then sWybranyXML = buf
   wend

   xml.async = 0
   xml.Load( "http://www.nbp.pl/kursy/xml/" + sWybranyXML +".xml" )

   xmlPOZYCJE = xml.getElementsByTagName("pozycja")

   for iPozycje = 0 to iPozycje > xmlPOZYCJE.length - 1

      xmlPOZYCJA = xmlPOZYCJE.item( iPozycje )

      if xmlPOZYCJA.getElementsByTagName("kod_waluty").item(0).text == sWaluta then
   
         PobierzKurs = val(xmlPOZYCJA.getElementsByTagName("kurs_sredni").item(0).text)

      endif

   next iPozycje

endsub

print PobierzKurs("EUR","2013-11-27")

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-11-28, 11:31
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 52 ]  Przejdź na stronę 1, 2, 3, 4  Następna
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Pobieranie kursu walut przy pomocy AMBasic

w Programowanie

ddooh

2

3250

2015-08-17, 12:46

ddooh Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Usuwanie zatwierdzania kursu waluty

w Programy Handlowe

tarta

0

2070

2018-04-06, 09:37

tarta Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Zmiana kursu rozpoczęcia waluty

w Programy Księgowe

masek_294

1

2517

2010-06-07, 15:08

wrob Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. HMF 2020 - import kursu waluty

w Programowanie

KrzysztofK

1

2648

2020-07-21, 23:13

Arek44 Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 7 gości


Nie możesz tworzyć 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 dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant