Hayırlı günler saygıdeğer hocalarım.
Üzerinde çalıştığım bir program var ve butonlarla şifreli bir web sayfasından veri alıyorum. Yalnız bunu yapmak için 4 butona sırasıyla tıklama yapmam gerekiyor. Bunun nedeni de web sayfasındaki linklerin açılma süreleri. Mesela 1.ye tıklayıp hemen 2.tıklarsam bazen hata veriyor. çünkü linki açmamış oluyor. Acaba bu olayı tek butona veya azamiye indirme imkanımız ve aralarına süre olayı koyma durumumuz olabilirmi? Komutlar sırasıyla aşağıdadır.
1.
Private Sub Komut84_Click()
WebBrowser1.Navigate2 "https://kps.nvi.gov.tr/Mernis.KPS.Web.UI/QueryResidanceAddressFromIdentificationNumber.aspx"
End Sub
2.
Private Sub Komut83_Click()
WebBrowser1.Document.All("inputList_ctl01_input0").Value = Me.TC
WebBrowser1.Document.All("ctlList").Click
End Sub
3.
Private Sub Komut87_Click()
WebBrowser1.Document.getElementById("Grid_ctl02_Imagebutton1").Click
End Sub
4.
Private Sub Komut96_Click()
On Error GoTo Err_Komut96_Click
Me.MAH.Value = WebBrowser1.Document.All("ctlAddressInformation_ctlMahalle").innerText
Me.SOKAK.Value = WebBrowser1.Document.All("ctlAddressInformation_ctlCsbm").innerText
Me.DIS.Value = WebBrowser1.Document.All("ctlAddressInformation_ctlDisKapiNo").innerText
Me.IC.Value = WebBrowser1.Document.All("ctlAddressInformation_ctlIcKapiNo").innerText
Me.ADRES.Value = Me.MAH.Value & " " & Me.SOKAK.Value & " " & "N:" & Me.DIS.Value & "/" & Me.IC.Value
If Me.ADRES.Value = Me.ADRES2 Then
MsgBox "Adres Bilgileri Günceldir."
Else
MsgBox Me.ADRES.Value
If MsgBox("Adres Bilgilerinde Farklılıklar vardır. Güncelleme yapmak istiyormusunuz.", vbYesNo + vbQuestion) = vbYes Then
Me.ADRES2 = Me.ADRES
Exit_Komut96_Click:
Exit Sub
Err_Komut96_Click:
MsgBox "Kişinin Resmi Adresi İlçeniz Sınırlarında değildir."
Resume Exit_Komut96_Click
End If
End If
End Sub
Web sayfası sizlerde açmaz çünkü sadece ip üzerinden açıyor.
Komutları birleştirme
Bu sıralarda her örnekte bekleme ihtiyacı oluşuyor nedense Son 3 konuda da aynı kodları kullanmam gerekti))
Bir fonksiyon yazın ve kodların arasına yerleştirin.
artık kodlarınız arasında bekle(2) gibi süre vererek beklemeleri sağlayabilirsiniz. Örneğin:
gibi... Gerçi her sub satırı kodları otomatik olarak bölümleyecek ve tek bir sub altında olmayacaktır ama pratikte nasıl uygulanır denemedim -çünkü örnek vermemişsiniz- ama yazdıklarım bir fikir verir umarım.
Bu arada belirteyim ki daha önce buna benzer bir çalışmayı daha farklı bir şekilde yapmıştım. Webden gelen veriyi bir metin kutusuna gönderdim ve o metin kutusunun sıfır ya da null özelliği kalmadığından bu durumu kullanarak if...then ile diğer eylemi başlattım. Sanıyorum tc kimlik doğrulama ile ilgili bir örnekti. Aile hekimliği sayfasını kullanmıştım. "Eskisi çalışmaz" diye arayabilirsiniz.
Kolay gelsin.
Bir fonksiyon yazın ve kodların arasına yerleştirin.
Kod:
Public Sub Bekle(süre As Double)
Dim baslama
baslama = Timer
Do While Timer < baslama + süre
DoEvents
Loop
End Sub
Kod:
Private Sub Komut84_Click()
WebBrowser1.Navigate2 "https://kps.nvi.gov.tr/Mernis.KPS.Web.UI/QueryResidanceAddressFromIdentificationNumber.aspx"
End Sub
bekle(4)
Private Sub Komut83_Click()
WebBrowser1.Document.All("inputList_ctl01_input0").Value = Me.TC
WebBrowser1.Document.All("ctlList").Click
End Sub
bekle(5)
Private Sub Komut87_Click()
WebBrowser1.Document.getElementById("Grid_ctl02_Imagebutton1").Click
End Sub
Bu arada belirteyim ki daha önce buna benzer bir çalışmayı daha farklı bir şekilde yapmıştım. Webden gelen veriyi bir metin kutusuna gönderdim ve o metin kutusunun sıfır ya da null özelliği kalmadığından bu durumu kullanarak if...then ile diğer eylemi başlattım. Sanıyorum tc kimlik doğrulama ile ilgili bir örnekti. Aile hekimliği sayfasını kullanmıştım. "Eskisi çalışmaz" diye arayabilirsiniz.
Kolay gelsin.
İnadına, ille de Accesstr.net...
sağolun hocam bu bekle komutu işimi çözdü ellerinize sağlık.
Konuyu Okuyanlar: 1 Ziyaretçi