Search  
Friday, February 10, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Clase - VCX si PRG  Curs valute BNR...
 Curs valute BNR.RO
 
 7/19/2009 7:03:00 PM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Curs valute BNR.RO
 (N/A)
*(c)2009 CLASSOFT srl - CursOnline BNR.RO - Public domain
*Autor : Cristian BIRLEA
*CursBNR.prg
*Utilizare : cursbnr()
*Exemplu : ?cursbnr('EUR')

PARAMETERS lcIdValuta
IF PARAMETERS()=0
RETURN 0
ENDIF
LOCAL xmlFile,lcStringLocate,lnCurs,lcUrl
SET DECIMALS TO 4
SET SAFETY OFF
IF FILE('nbrfxrates.xml')
ERASE 'nbrfxrates.xml'
ENDIF
lcUrl = 'http://www.bnr.ro/nbrfxrates.xml'
DECLARE INTEGER URLDownloadToFile IN urlmon INTEGER, STRING, STRING, INTEGER, INTEGER
DECLARE INTEGER DeleteUrlCacheEntry IN Wininet STRING
xmlFile = 'nbrfxrates.xml'
DeleteUrlCacheEntry(lcUrl)
lResult = ( URLDownloadToFile(0, lcUrl, xmlFile, 0x80000000 ,0) = 0 )
CLEAR DLLS "URLDownloadToFile", "DeleteUrlCacheEntry"
xmlFile=FILETOSTR(xmlFile)
IF FILE('nbrfxrates.xml')
ERASE 'nbrfxrates.xml'
ELSE
RETURN 0
ENDIF
RETURN IIF(lcIdValuta $ 'HUF JPY KRW',VAL(SUBSTR(xmlFile,AT('"'+ALLT(lcIdValuta)+'"',xmlFile )+23,6)),;
VAL(SUBSTR(xmlFile,AT('"'+ALLT(lcIdValuta)+'">',xmlFile )+6,6)))
 7/20/2009 5:59:46 PM
User is offlineHorHe
116 posts
5th


Re: Curs valute BNR.RO
 (N/A)

Foarte interesant, nu stiam ca bnr ofera posibilitatea asta.
 7/20/2009 6:12:46 PM
User is offlineoviciandrus
761 posts
www.comptech.ro
1st




Re: Curs valute BNR.RO
 (Romania)
N-ar fi interesant un parametru pentru data calendaristica? Se pot afla si cursuri anterioare zilei curente?
 7/20/2009 6:42:16 PM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Curs valute BNR.RO
 (N/A)
Acest fisier XML de pe BNR este actualizat zilnic si contine doar cursurile de schimb pentru ziua respectiva.
Daca ar exista un XML arhiva devize/zile/curs , nu ar fi o problema preluarea datelor.

Cristi Birlea
 7/21/2009 2:27:07 AM
User is offlinevicos
137 posts
5th


Re: Curs valute BNR.RO
 (N/A)
*IF checkinternetconnection()

*cCursValue = ;
[ EUR = ] + STR(preia_curs('eur', DATE(), 'BNR'),10,4)+CHR(13) + ;
[ USD = ] + STR(preia_curs('usd', DATE(), 'BNR'),10,4)+CHR(13) + ;
[ GBP = ] + STR(preia_curs('GBP', DATE(), 'BNR'),10,4)

*ENDI

*Program Preia_Curs

PARAMETERS m.moneda, m.data_curs_valutar, m.banca
IF PCOUNT()< 1
m.moneda = 'EUR'
ENDI
IF PCOUNT()< 2
m.data_curs_valutar = DATE()
ENDI
IF PCOUNT()< 3
m.banca = 'BNR'
ENDI

ocurs_valutar = CREATEOBJECT('preiacurs', m.moneda, m.data_curs_valutar, m.banca)
ocurs_valutar.preia_curs()
mcurs = ocurs_valutar.raspuns_curs_nr
RETURN mcurs

DEFINE CLASS preiacurs AS CONTAINER
WIDTH = 50
HEIGHT = 50
BACKSTYLE = 0
BORDERWIDTH = 0
data_curs_valutar = {^2005/01/01}
banca = "BNR"
moneda = "EUR"
raspuns_curs = ""
raspuns_curs_nr = 0
url_curs = ""
NAME = "preiacurs"

PROCEDURE preia_curs
THIS.raspuns_curs = "0"
THIS.url_curs = "http://www.infovalutar.ro/"+ALLTRIM(STR(YEAR(m.data_curs_valutar), 4))+"/"+ALLTRIM(STR(MONTH(m.data_curs_valutar), 2))+"/"+ALLTRIM(STR(DAY(m.data_curs_valutar), 2))+"/"+LOWER(ALLTRIM(THIS.moneda))+"."+LOWER(ALLTRIM(THIS.banca))
THIS.raspuns_curs = ReadUrl(THIS.url_curs)
LOCAL dec_vechi, point_vechi
dec_vechi = SET("decimals")
point_vechi = SET("point")
SET DECIMALS TO 6
SET POINT TO "."
THIS.raspuns_curs_nr = VAL(THIS.raspuns_curs)
SET DECIMALS TO &dec_vechi
SET POINT TO point_vechi
ENDPROC
**
PROCEDURE INIT
LPARAMETERS m.moneda, m.data_curs_valutar, m.banca
IF PCOUNT()< 1
m.moneda = 'EUR'
ENDI
IF PCOUNT()< 2
m.data_curs_valutar = DATE()
ENDI
IF PCOUNT()< 3
m.banca = 'BNR'
ENDI
THIS.moneda = m.moneda
THIS.data_curs_valutar = m.data_curs_valutar
THIS.banca = m.banca
THIS.url_curs = ""
ENDPROC
**
ENDDEFINE
 7/30/2009 4:03:22 PM
User is offlineVictor Iuga
153 posts
5th


Re: Curs valute BNR.RO
 (Romania)

imi da eroare aici:   xmlFile=FILETOSTR(xmlFile)

file  'nbrfxrates.xml' not exist

 

 

 7/30/2009 6:34:42 PM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Curs valute BNR.RO
 (N/A) Modified By CLASSOFT  on 7/30/2009 5:35:46 PM)
*(c)2009 CLASSOFT srl - CursOnline BNR.RO - Public domain
*Autor : Cristian BIRLEA
*CursBNR.prg
*Update :30.07.2009
*Utilizare : cursbnr()
*Exemplu : ?cursbnr('EUR')

PARAMETERS lcIdValuta
IF PARAMETERS()=0
RETURN 0
ENDIF
LOCAL xmlFile,lcStringLocate,lnCurs,lcUrl
SET DECIMALS TO 4
SET SAFETY OFF
IF FILE('nbrfxrates.xml')
ERASE 'nbrfxrates.xml'
ENDIF
lcUrl = 'http://www.bnr.ro/nbrfxrates.xml'
DECLARE INTEGER URLDownloadToFile IN urlmon INTEGER, STRING, STRING, INTEGER, INTEGER
DECLARE INTEGER DeleteUrlCacheEntry IN Wininet STRING
xmlFile = 'nbrfxrates.xml'
DeleteUrlCacheEntry(lcUrl)
lResult = ( URLDownloadToFile(0, lcUrl, xmlFile, 0x80000000 ,0) = 0 )
CLEAR DLLS "URLDownloadToFile", "DeleteUrlCacheEntry"
IF !FILE('nbrfxrates.xml')
WAIT WIND NOWA 'Nu am putut descarca fisierul nbrfxrates.xm de pe site-ul BNR.ro'
RETU 0
ENDIF
xmlFile=FILETOSTR(xmlFile)
IF FILE('nbrfxrates.xml')
ERASE 'nbrfxrates.xml'
ELSE
RETURN 0
ENDIF
RETURN IIF(lcIdValuta $ 'HUF JPY KRW',VAL(SUBSTR(xmlFile,AT('"'+ALLT(lcIdValuta)+'"',xmlFile )+23,6)),;
VAL(SUBSTR(xmlFile,AT('"'+ALLT(lcIdValuta)+'">',xmlFile )+6,6)))
 7/30/2009 6:40:33 PM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Curs valute BNR.RO
 (N/A)
incerca intai sa vezi daca BNR.ro merge in browser..in general dimineata intre 9-10h nu prea merge sau poate ai prins momentul actualizarii fisierului undeva intre 14-15h
mai sus am tratat eroarea cu fisierul
 7/30/2009 11:21:06 PM
User is offlineVictor Iuga
153 posts
5th


Re: Curs valute BNR.RO
 (N/A)

yeap, exact intre 14 si 15 m-am jucat cu sursa asta  

Am banuit ca-i din cauza ca nu reuseste descarcarea, insa situl BNR era functional (da ce-i drept n-am incercat decat prima pagina). Statea mult la instructiune de download, cam 1..2 minute. Acuma l-am incercat de acasa si o mers din prima, cursul e 4.2038.

Musai de vazut cu contabilii, ca ie o chestie cursu BNR. Daca tin bine minte cel afisat azi pana la o anumita ora (12 sau 14) e cursul oficial de azi, iar dupa ora respectiva afiseaza cursul de maine. Cel mai simplu ar fi daca Mugur o pus si data in fisier, altfel putem incerca o interpretare dupa ora descarcarii.

 7/31/2009 10:43:16 AM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Curs valute BNR.RO
 (N/A)
Din pacate problema asteptarii persista..si pana la 10 minute.
Folosesc des DLL-ul din cod , insa nu are o optiune TIMEOUT si stau de multe ori dupa el ca prostu'.
Problema apare daca site-ul este ocupat sau internetul merge cu sacadatii, inca nu am gasit o rezolvare profi.Daca nu merge net-ul raspunde instantaneu RETU 0.
M-am gandit ca o sa scriu un mic executabil care se va ocupa de acest DLL in care pun un timer setat pe 30 secunde (pe QUIT) si acesta o sa fie apelat din aplicatia principala.

 7/31/2009 3:28:59 PM
User is offlineDoru Constantin
304 posts
3rd




Re: Curs valute BNR.RO
 (N/A)
Ma bag si eu:

oXml = CreateObject("Microsoft.XMLDOM")
oXML.async = .F.
oXML.validateOnParse = .F.
oXml.load("http://www.bnro.ro/nbrfxrates.xml")

?
? oXML.SelectNodes('DataSet/Body/Cube/Rate[@currency="EUR"]').item(0).text
? oXML.SelectNodes('DataSet/Body/Cube/Rate[@currency="USD"]').item(0).text
?
 7/31/2009 8:35:05 PM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Curs valute BNR.RO
 (N/A)

 Doru Constantin wrote
Ma bag si eu:

oXml = CreateObject("Microsoft.XMLDOM")
oXML.async = .F.
oXML.validateOnParse = .F.
oXml.load("http://www.bnro.ro/nbrfxrates.xml")

?
? oXML.SelectNodes('DataSet/Body/Cube/Rate[@currency="EUR"]').item(0).text
? oXML.SelectNodes('DataSet/Body/Cube/Rate[@currency="USD"]').item(0).text
?

 

Hehehehe... codul asta e super tare ;)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/31/2009 9:21:06 PM
User is offlineCLASSOFT
231 posts
www.classoft.ro
4th


Re: Curs valute BNR.RO
 (N/A) Modified By CLASSOFT  on 7/31/2009 8:21:54 PM)
Din cate stiu Microsoft.XMLDOM este un activeX.
Intr-adevar pentru fisiere de tip XML are o gramada metode de citire,scriere,pe noduri etc.si asigura un cod deosebit de simplu si compact.
Ai testat cum merge in conditii de instabilitate , exemplu bnr.ro ? Daca nu ai raspuns de la server cat are TIMEOUT-ul ?
O sa-l rulez luni 24 de ore intr-un do while sa vad cum se comporta in conditii de stress si ce erori apar .
Cum e cu acest ActiveX, este distribuit cu windows-ul ? De la ce versiune ? Sau vine ca add-on ?
 7/31/2009 11:49:57 PM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Curs valute BNR.RO
 (N/A)
La mine in calculator a venit cu Windows Update. Link-ul de download este http://www.microsoft.com/downloads/details.aspx?FamilyID=993c0bcf-3bcf-4009-be21-27e85e1857b1&displaylang=en, deci pare sa fie simplu de instalat (are setup propriu).
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/31/2009 11:55:28 PM
User is offlineDoru Constantin
304 posts
3rd




Re: Curs valute BNR.RO
 (N/A)
-- Daca vrei msxml cu timeout, atunci:

oHttp = Createobject("MSXML2.ServerXMLHTTP")
*-- http://msdn.microsoft.com/en-us/library/ms760403%28VS.85%29.aspx
oHttp.setTimeouts(5000, 5000, 15000, 0) && (resolveTimeout, connectTimeout, sendTimeout, receiveTimeout)
*-- sau -- oHttp.waitForResponse(milisecunde)
oHttp.Open("GET", "http://www.bnr.ro/nbrfxrates.xml", .F.)
oHttp.setRequestHeader("Content-Type","text/xml;charset=UTF8")
oHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate")
oHttp.Send()

oXml = Createobject("Microsoft.XMLDOM")
oXml.Async = .F.
oXml.validateOnParse = .F. && --> foarte important pentru www.bnr.ro
oXml.LoadXML(oHttp.responseXML.xml)

?
? oXml.SelectNodes('DataSet/Body/Cube/Rate[@currency="EUR"]').Item(0).Text
? oXml.SelectNodes('DataSet/Body/Cube/Rate[@currency="USD"]').Item(0).Text
?

*-- Bineinteles ca trebuie sa faci si unele validari.
*-- DISCALIMAR: Nu utilizez acest cod intr-un scenariu real. L-am scris doar pentru ca a venit vorba ;)
 3/12/2010 6:50:28 PM
User is offlinestefan_JKSL
62 posts


Re: Curs valute BNR.RO
 (N/A)
am apelat si eu la un amic, mai destept ca mine (pentru ca a trecut pe www.dynamicslookup.ro) si mi-a oferit urmatoarea solutie :

?_curs_valuta("USD",{^2009-06-10})

FUNCTION _curs_valuta
LPARAMETERS _valuta as Character, _data_curs as Date

SET DATE ITALIAN
SET CENTURY ON

url = "http://www.bnr.ro/MakeXmlFile.aspx?date="+DTOC(_data_curs)

oxml = CREATEOBJECT('Microsoft.XMLDOM')
oXML.async = .f.
oXML.validateOnParse = .f.

oXML.load(url)


IF !EMPTY(oXML.ParseError.Reason)
   RETURN .F.
ENDIF

dataCurs = oXML.selectsingleNode("/DataSet/Body/Cube").getAttribute("date")
nrMonede = oXML.selectnodes("/DataSet/Body/Cube/Rate").length
FOR a = 0 TO nrMonede-1
    _cur = oXML.selectnodes("/DataSet/Body/Cube/Rate").item(a).getAttribute("currency")
    _val = oXML.selectnodes("/DataSet/Body/Cube/Rate").item(a).text
    IF UPPER(ALLTRIM(_cur)) = UPPER(ALLTRIM(_valuta))
       EXIT
    ENDIF
NEXT a
RETURN _val

 3/15/2010 4:11:11 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Curs valute BNR.RO
 (N/A)
http://www.infovalutar.ro/howto/foxpro.aspx
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 5/19/2010 9:43:43 AM
User is offlineSilviu
130 posts
5th


Re: Curs valute BNR.RO
 (Romania)
Salut
 am incercat si eu sa preiau cursul dar am o pb. Afiseaza fara zecimale .......... si nu pricep. Help
 5/19/2010 11:47:11 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Curs valute BNR.RO
 (N/A)
Salut. Am rulat codul ala (ma refer la cel de pe infovalutar.ro) exact asa cum e si mi-a returnat asta: 4.1949000000
Acu' ma intreb cum l-ai folosit. Poti sa pui aici codul tau?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 5/19/2010 5:07:28 PM
User is offlineSilviu
130 posts
5th


Re: Curs valute BNR.RO
 (Romania)
Salut
       am folosit primul cod care apare la topic.
 5/19/2010 5:57:00 PM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Curs valute BNR.RO
 (N/A) Modified By Grigore Dolghin  on 5/19/2010 4:59:28 PM)
L-am verificat - functioneaza corect si ala.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Clase - VCX si PRG  Curs valute BNR...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement