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
- Access'i başlatın.
- Yardım menüsünde Örnek Veritabanları'nın üzerine gelin ve Northwind Örnek Veritabanı'na tıklayın.
- Müşteriler formunu Tasarım görünümünde açın.
- 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"
- 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
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin