Merhaba arkadaşlar,
Ekte Ozan Bey'in yardımcı olduğu ilgili tarihe göre kur değerlerini merkez bankası sitesinden çeken bir veritabanı kodu mevut.
Fakat pazartesi günleri -siteyle alakalı kur ilanı dolayısıyla - kur alırken sorun oluyor.
Bu yüzden koda eğer ilgili tarihte sorun yaşanıyorsa, 3 gün öncesinin tarihi için kur almayı denemesi şartı eklemek istiyorum.
örneğin 13.06.2016 tarihli bir kuru çekmede başarısız oluyor, bu yüzden 10.06.2016 tarihi için deneme yapması gerekiyor.
Yardımlarınız için şimdiden teşekkürler.
Merhaba,
fatura tarihide 3 gün önceye alınacak mı acaba?
(19/06/2016, 20:56)ozanakkaya yazdı: Merhaba,
fatura tarihide 3 gün önceye alınacak mı acaba?
Hayır sadece kuru 3 gün öncesine göre alacak.
Kodu aşağıdaki ile değiştirerek deneyiniz.
Sub KurAl()
On Error GoTo hata
Dim xmldoc, DovizListesi, Dovizler As Object
Dim SorguTarihi As Date
Dim HaftaSonu, GDoviz, GDovizCins As String
Set xmldoc = CreateObject("Msxml.DOMDocument")
xmldoc.async = False
SorguTarihi = Me.tofatura_tarihi
HaftaSonu = Weekday(tofatura_tarihi, vbMonday)
If HaftaSonu = 7 Then
SorguTarihi = DateAdd("d", -2, SorguTarihi)
ElseIf HaftaSonu = 6 Then
SorguTarihi = DateAdd("d", -1, SorguTarihi)
End If
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")
GDoviz = Me.tofatura_doviztip
If GDoviz = "€" Then
GDovizCins = "EURO"
ElseIf GDoviz = "$" Then
GDovizCins = "ABD DOLARI"
End If
For Each Dovizler In DovizListesi
If Eval("'" & Dovizler.SelectSingleNode("Isim").Text & "' In('" & GDovizCins & "')") Then
Me.tofatura_kur = Replace(Dovizler.SelectSingleNode("ForexSelling").Text, ".", ",")
End If
Next
hata:
If Err.Number = "91" Then
If MsgBox(" " & DateAdd("d", -3, Me.tofatura_tarihi) & " tarihine ait veri alınsın mı", vbYesNo) = vbYes Then
SorguTarihi = DateAdd("d", -3, Me.tofatura_tarihi)
HaftaSonu = Weekday(tofatura_tarihi, vbMonday)
If HaftaSonu = 7 Then
SorguTarihi = DateAdd("d", -2, SorguTarihi)
ElseIf HaftaSonu = 6 Then
SorguTarihi = DateAdd("d", -1, SorguTarihi)
End If
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")
GDoviz = Me.tofatura_doviztip
If GDoviz = "€" Then
GDovizCins = "EURO"
ElseIf GDoviz = "$" Then
GDovizCins = "ABD DOLARI"
End If
For Each Dovizler In DovizListesi
If Eval("'" & Dovizler.SelectSingleNode("Isim").Text & "' In('" & GDovizCins & "')") Then
Me.tofatura_kur = Replace(Dovizler.SelectSingleNode("ForexSelling").Text, ".", ",")
End If
Next
End If
End If
Set xmldoc = Nothing
End Sub
Çalıştı, çok teşekkürler.
Ozan Bey
Bende hata veriyor.
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")
"Object vaiable or with block vaiable notset" hatası veriyor. nasıl düzeltebilirim.
Ozan Bey
Bende hata veriyor.
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")
Run Time "91"
"Object vaiable or with block vaiable notset" hatası veriyor. nasıl düzeltebilirim.
(20/06/2016, 01:08)ozanakkaya yazdı: Kodu aşağıdaki ile değiştirerek deneyiniz.
Sub KurAl()
On Error GoTo hata
Dim xmldoc, DovizListesi, Dovizler As Object
Dim SorguTarihi As Date
Dim HaftaSonu, GDoviz, GDovizCins As String
Set xmldoc = CreateObject("Msxml.DOMDocument")
xmldoc.async = False
SorguTarihi = Me.tofatura_tarihi
HaftaSonu = Weekday(tofatura_tarihi, vbMonday)
If HaftaSonu = 7 Then
SorguTarihi = DateAdd("d", -2, SorguTarihi)
ElseIf HaftaSonu = 6 Then
SorguTarihi = DateAdd("d", -1, SorguTarihi)
End If
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")
GDoviz = Me.tofatura_doviztip
If GDoviz = "€" Then
GDovizCins = "EURO"
ElseIf GDoviz = "$" Then
GDovizCins = "ABD DOLARI"
End If
For Each Dovizler In DovizListesi
If Eval("'" & Dovizler.SelectSingleNode("Isim").Text & "' In('" & GDovizCins & "')") Then
Me.tofatura_kur = Replace(Dovizler.SelectSingleNode("ForexSelling").Text, ".", ",")
End If
Next
hata:
If Err.Number = "91" Then
If MsgBox(" " & DateAdd("d", -3, Me.tofatura_tarihi) & " tarihine ait veri alınsın mı", vbYesNo) = vbYes Then
SorguTarihi = DateAdd("d", -3, Me.tofatura_tarihi)
HaftaSonu = Weekday(tofatura_tarihi, vbMonday)
If HaftaSonu = 7 Then
SorguTarihi = DateAdd("d", -2, SorguTarihi)
ElseIf HaftaSonu = 6 Then
SorguTarihi = DateAdd("d", -1, SorguTarihi)
End If
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")
GDoviz = Me.tofatura_doviztip
If GDoviz = "€" Then
GDovizCins = "EURO"
ElseIf GDoviz = "$" Then
GDovizCins = "ABD DOLARI"
End If
For Each Dovizler In DovizListesi
If Eval("'" & Dovizler.SelectSingleNode("Isim").Text & "' In('" & GDovizCins & "')") Then
Me.tofatura_kur = Replace(Dovizler.SelectSingleNode("ForexSelling").Text, ".", ",")
End If
Next
End If
End If
Set xmldoc = Nothing
End Sub
xmldoc.Load "http://www.tcmb.gov.tr/kurlar/" & Format(SorguTarihi, "yyyymm") & "/" & Format(SorguTarihi, "ddmmyyyy") & ".xml"
Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")