• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

Makale ADO Komut Parametreleri Yöntemi ile Tablo Sorgulama veya Veri Ekleme

hakanbehcan

Yeni Üye
Katılım
23 Şub 2019
Mesajlar
1
En iyi yanıt
0
Puanları
3
Yaş
52
Konum
Tekirdağ
Ad Soyad
Hakan BEHCAN
Bu makale ilginizi çekti ise ADO ne işe yarar biliyorsunuz demektir.
Hatta çok büyük bir ihtimal ile ado ile çalışan bir kaç uygulamanız da olmuştur.

Bugüne kadar excel formlar üzerinden ADOya sql ile veri gönderirken "sql injection" konusunda pek bir önlem almadık.
Kötü niyet ve yazdığımız metinler için ' gibi sql işaretleri olmadığı sürece sorun yok. Peki işaret olursa ne oluyor? Örneğin bir text boxa yazdığınız metine göre arama yaptığınızı düşünelim, metin içine ' karakterini yazın bakalım çalışıyor mu?

Peki çözüm ney?

O zaman parametrelerden faydalanmalıyız.

Çok fazla laf kalabalığı yapmadan örneğe geçelim.

Örnekte içinde (') gibi özel karakterler olan metin kutularından veri ekleyebilecek ve sorgulayabileceksiniz.

Musteri adında bir mdb dosyamız olsun. alanları da aşağıdaki gibi olsun

mdbRaw.JPG

İçinde de biraz veri ekleyelim.

mdbfile.JPG


Şimdi excel dosyamıza bir userfom ekleyelim ve aşağıdaki gibi düzenleyelim.
form kontrollerinin adlarını kırmızı olarak üzerinde belirtiyorum.

UFRaw.JPG


Şimdi bu yöntem de kayıtsetini open ile açıp işlem yapabilirsiniz ama ben execute metodunu seviyorum.

Sıralama değişebilse de ben aşağıdaki sıralamayı tercih ediyorum.
  • Dim ile nesneleri tanımlıyorum. Önreğin (Earlybinding yönteminde intellisense olduğu için daha kolay geliyor)
    • Dim Conn As ADODB.Connection
    • Dim Rs As ADODB.Recordset
    • Dim SqlCmd As ADODB.Comman
    • Dim Prm As ADODB.Parameter
  • SQL soru metnini oluşturuyorum.
  • Komut nesnesini oluşturup parametrelerini atıyorum.
  • Komutu çalıştırıp veriyi recordsete alıyorum.
  • Nesneleri Kapatıyorum
Kodu tamamıyla görelim.

PHP:
Sub ListMusteri()
    Set Conn = New ADODB.Connection
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\TEST.MDB"

    If Me.txtAra.Text = "*" Then
        Sorgu = "Select * from musteri"
    Else
        Sorgu = "Select * from musteri where Msoyadi=@Msoyadi;"
    End If

    Set SqlCmd = New ADODB.Command

    With SqlCmd
        .ActiveConnection = Conn
        .CommandText = Sorgu
        .CommandType = adCmdText
     End With

    Set Prm = SqlCmd.CreateParameter("@Msoyadi", adVarChar, adParamInput, 255, Me.txtAra.Text)
    SqlCmd.Parameters.Append Prm

    Set Rs = SqlCmd.Execute
    If Not Rs.EOF Then
        Me.ListBox1.Column = Rs.GetRows()
    Else
        Me.ListBox1.Clear
    End If
    Set Rs = Nothing: Set Conn = Nothing
End Sub

Private Sub CommandButton1_Click()
Call ListMusteri
End Sub


Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.txtAdi.Text = Me.ListBox1.Column(1) & ""
    Me.txtSoyadi.Text = Me.ListBox1.Column(2) & ""
End Sub

Private Sub txtAra_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then Call ListMusteri
End Sub

Private Sub UserForm_Initialize()
    Me.txtAra.Text = "*"
    Call ListMusteri
End Sub[


userformumuz bu şekilde görünecek.
6. sıradaki kayda dikkat edelim. Siz de benzer kayıt ekleyin ve sorgulayın.

UfWorks.JPG

Buradaki yazılanlardan faydalanıp yaparsanız öğrenmeniz için daha iyi olur.
Örnek dosyayı da ekledik, olmadı oradan bakarsınız.

Kalın sağlıcakla,

Teşekkürler.

Yazan : Hakan Behcan
 

Ekli dosyalar

  • mdbRaw.JPG
    mdbRaw.JPG
    16.1 KB · Görüntüleme: 19
  • Uretim.rar
    32.6 KB · Görüntüleme: 42
Son düzenleme:

Murat OSMA

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,504
En iyi yanıt
13
Puanları
113
Konum
İstanbul
Web sitesi
excelarsivi.com
Ad Soyad
Murat OSMA
Office Vers.
Office 365 TR+EN
Merhaba @hakanbehcan,
Senin gibi kıymetli insanları burada görmek çok güzel.
Ellerine emeklerine sağlık, paylaşımın için teşekkür ediyorum. :giggle:(y)
 
Üst Alt