Access'te bir arama formundaki değerlerle dinamik sorgu oluşturma

Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı beceriler gerektirir.

Bu makale, ya bir Microsoft Access veritabanı (.mdb) dosyası ya bir Microsoft Access veritabanı (.accdb) dosyası için ve bir Microsoft Access projesi (.adp) için geçerlidir.

Özet

Bu makalede, Microsoft Access'te bir arama formundaki değerlerle sorgu dizesi için dinamik olarak ölçüt oluşturma işlemleri gösterilmektedir.

Daha fazla bilgi

Bazen, arama formu olarak hizmet veren bir form oluşturmak isteyebilirsiniz. Forma değer girebilmek ve uygun SQL dizesini dinamik olarak oluşturabilmek istiyorsunuz. Aşağıdaki adımlar, BuildCriteria yöntemini kullanan bir sorgu dizesini dinamik olarak nasıl oluşturabileceğinizi gösterir.

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna zımni garantiler, satılabilirlik veya belirli bir amaca uygunluk da dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri belirli bir yordamın işlevselliğini açıklamaya yardımcı olabilir, ancak özel gereksinimlerinizi karşılamak için ek işlevler sağlamak veya yordamlar oluşturmak için bu örnekleri değiştirmezler. DİkKAT: Bu örnekteki adımları izlerseniz örnek veritabanı Northwind.mdb değiştirirsiniz. Northwind.mdb dosyasını yedeklemek ve veritabanının bir kopyasında bu adımları izlemek isteyebilirsiniz.

Adım Adım Örnek

  1. Access'i başlatın.
  2. Yardım menüsünde Örnek Veritabanları'nın üzerine gelin ve Northwind Örnek Veritabanı'na tıklayın.
  3. Müşteriler formunu Tasarım görünümünde açın.
  4. Forma bir komut düğmesi ve metin kutusu ekleyin ve ardından aşağıdaki özellikleri ayarlayın:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Komut düğmesinin OnClick özelliğini aşağıdaki olay yordamına ayarlayın:
Private Sub cmdSearch_Click()
    On Error Resume Next

Dim ctl As Control
    Dim sSQL As String
    Dim sWhereClause As String

'Initialize the Where Clause variable.
    sWhereClause = " Where "

'Start the first part of the select statement.
    sSQL = "select * from customers "

'Loop through each control on the form to get its value.
    For Each ctl In Me.Controls
        With ctl
            'The only Control you are using is the text box.
            'However, you can add as many types of controls as you want.
            Select Case .ControlType
                Case acTextBox
                    .SetFocus
                    'This is the function that actually builds
                    'the clause.
                    If sWhereClause = " Where " Then
                        sWhereClause = sWhereClause & BuildCriteria(.Name, dbtext, .Text)
                    Else
                        sWhereClause = sWhereClause & " and " & BuildCriteria(.Name, dbtext, .Text)
                    End If
            End Select
        End With
    Next ctl

'Set the forms recordsource equal to the new
    'select statement.
    Me.txtSQL = sSQL & sWhereClause
    Me.RecordSource = sSQL & sWhereClause
    Me.Requery

End Sub

  1. Formu kaydedin ve Form görünümünde açın.

    Ara komut düğmesine tıkladığınızda txtSQL metin kutusunun Müşteriler formundaki değerlerden oluşturulan sorguyu yansıttığını unutmayın. Ayrıca Müşteriler formu, yeni SQL dizesinin sonuçlarını yansıtacak şekilde yeniden sorgulanmıştır.

Başvurular

BuildCriteria yöntemi hakkında daha fazla bilgi için Visual Basic Düzenleyici Yardım menüsünde Microsoft Visual Basic Yardımı'na tıklayın, Office Yardımcısı'na veya Yanıt Sihirbazı'na buildcriteria yöntemi yazın ve ardından konuyu görüntülemek için Ara'ya tıklayın.