AccessTr.neT
Uygulamada Kurları Alırken Hata Alıyorum - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Uygulamada Kurları Alırken Hata Alıyorum (/konu-uygulamada-kurlari-alirken-hata-aliyorum.html)

Sayfalar: 1 2


Uygulamada Kurları Alırken Hata Alıyorum - exmadon - 08/10/2023

merhaba; uygulamada kur alırken belli belirsiz zamanlarda aynı hatayı alıyorum. 10 da 1 hata veriyor nedenini çözemedim. Bu sorunla ilgili forumda bir konuda buldum ama ondada çözüme ulşamadım yardımcı olursanız çok sevinirim


RE: Uygulamada Kurları Alırken Hata Alıyorum - atoykan - 09/10/2023

Merhaba Sayın @exmadon.
Web üzerinden veri alırken objectiniz -ki uygulamanızda xmldoc- beklenen şekilde yüklenmediğinde veya nothing olarak atandığında bu hatayı alırsınız.
Uygulamanızda da xmldoc istendiği gibi yüklenmediğinde DovizListesi nesnesine erişilemediğinden hata alıyorsunuz. Örneğiniz özelinde bu tip web kaynaklarına erişim gerektiren uygulamalar için çalışmanıza web kaynaklarına erişimi denetleyecek
If xmldoc Is Nothing Then
MsgBox "XML belgesi yüklenemedi.", vbExclamation
Exit Sub
End If
gibi bir kontrol kodu eklemelisiniz. Böylece web kaynaklarına erişimi doğruladıktan sonra diğer adımlara geçersiniz.


RE: Uygulamada Kurları Alırken Hata Alıyorum - exmadon - 09/10/2023

(09/10/2023, 09:35)atoykan yazdı: Merhaba Sayın @exmadon.
Web üzerinden veri alırken objectiniz -ki uygulamanızda xmldoc- beklenen şekilde yüklenmediğinde veya nothing olarak atandığında bu hatayı alırsınız.
Uygulamanızda da xmldoc istendiği gibi yüklenmediğinde DovizListesi nesnesine erişilemediğinden hata alıyorsunuz. Örneğiniz özelinde bu tip web kaynaklarına erişim gerektiren uygulamalar için çalışmanıza web kaynaklarına erişimi denetleyecek
If xmldoc Is Nothing Then
MsgBox "XML belgesi yüklenemedi.", vbExclamation
Exit Sub
End If
gibi bir kontrol kodu eklemelisiniz. Böylece web kaynaklarına erişimi doğruladıktan sonra diğer adımlara geçersiniz.

Merhaba ilginiz için teşekkür ederim. Sorumu mazur görün denedim ama çalıştıramadım . Bu kodu tam olarak hangi sıraya ekleyeceğim.


RE: Uygulamada Kurları Alırken Hata Alıyorum - atoykan - 09/10/2023

load işlemini kontrol edeceğinize göre xmldoc.load sonrasına eklemeniz gerekmez mi?


RE: Uygulamada Kurları Alırken Hata Alıyorum - exmadon - 11/10/2023

Malesef olmadı hala hata alıyorum 10 kere düzgün çalışıyorsa 1 kere hata veriyor.


RE: Uygulamada Kurları Alırken Hata Alıyorum - atoykan - 20/10/2023

Bu tür durumlar, ağ trafiği veya sunucu tarafında beklenmedik durumlar nedeniyle olabilir.
Kod:
Private Sub BtnTR_Click()
    On Error GoTo ErrorHandler

    Dim xmldoc As Object
    Set xmldoc = CreateObject("Msxml.DOMDocument")
    xmldoc.async = False

    ' xmldoc nesnesini yükleme işleminde hata denetimi
    If Me.KurTarihi < Date Then
        On Error Resume Next
        xmldoc.Load "http://www.tab.gov.tr/kurlar/" & Format(Me.KurTarihi, "yyyymm")
        On Error GoTo 0
        If xmldoc.parseError.errorCode <> 0 Then
            MsgBox "XML yükleme hatası: " & xmldoc.parseError.reason, vbExclamation 'Hata mesajı xml parse hatasını size gösterecektir
            Exit Sub
        End If
    Else
        On Error Resume Next
        xmldoc.Load "http://www.tcmb.gov.tr/kurlar/today.xml"
        On Error GoTo 0
        If xmldoc.parseError.errorCode <> 0 Then
            MsgBox "XML yükleme hatası: " & xmldoc.parseError.reason, vbExclamation 'Hata mesajı aynı şekilde xml parse hatasını size gösterecektir
            Exit Sub
        End If
    End If

    If xmldoc Is Nothing Then
        MsgBox "XML belgesi yüklenemedi.", vbExclamation 'xmldoc nesnesinin yüklenemediğini bildirir
        Exit Sub
    End If

    Dim DovizListesi As Object
    Set DovizListesi = xmldoc.documentElement.selectNodes("Currency")

    If DovizListesi Is Nothing Then
        MsgBox "Döviz listesi bulunamadı.", vbExclamation 'DovizListesi nesnesinin kontrolünü yaparak yüklenemedi ise bildirir
        Exit Sub
    End If

    On Error Resume Next

    Dim DovizCinsi As String
    Dim OrjIsim As String
    Dim Alis As String
    Dim Satis As String

    For Each Dovizler In DovizListesi
        DovizCinsi = Dovizler.SelectSingleNode("Isim").Text
        OrjIsim = Dovizler.SelectSingleNode("CurrencyName").Text
        Alis = Dovizler.SelectSingleNode("ForexBuying").Text
        Satis = Dovizler.SelectSingleNode("ForexSelling").Text

        If DovizCinsi = "ABD DOLARI" Then
            Me.DOLAR_ALIS = Alis
            Me.DOLAR_SATIS = Satis
        ElseIf DovizCinsi = "Euro" Then
            Me.EURO_ALIS = Alis
            Me.EURO_SATIS = Satis
        End If
    Next

    Set xmldoc = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "Hata: " & Err.Description, vbExclamation
    Set xmldoc = Nothing
End Sub

kodunuzu yukarıdaki şekilde revize ederseniz yükleme işlemi sırasında ve XML belgesi oluşturulurken hata denetimi ekler ve aynı zamanda xmldoc.parseError.errorCode kullanarak XML yükleme işlemi sırasındaki hataları yakalarsınız. Bu size ağ trafiğindeki veya sunucudaki anormallikler, hatalar üzerinde daha fazla denetimle bilgi vererek uygulamanızın daha doğru işlemesinde yardımcı olacaktır.