2016-04-08 22 views
0

Kullanıcının sütunları artan veya azalan şekilde sıralamasını sağlayan basit bir veri ızgarası görüntüleyen bir alt form var. sırasıyla iki farklı comboboxes tarafından sağlanır, bu bağlam combobox_1_value ve combobox_2_value olarakSıralamada Parametreli Sorgu Yeniden Değerlendirmeler

Dim query  As DAO.QueryDef 
Dim recordSet As DAO.Recordset 

Set query = CurrentDb.QueryDefs("DatagridQuery") 
query.Parameters("one").Value = combobox_1_value 
query.Parameters("two").Value = combobox_2_value 
Set recordSet = query.OpenRecordSet 
Set Me.subform.From.Recordset = recordSet 

: DataGridUniqueIdentifier için

veri datagrid recordsource ayarlamak için parametreli bir sorgu kullanan bir yenileme fonksiyon tarafından temin edilmektedir ana formda.

Şu anda ortaya çıkan sorun, datagrid'in her zaman sıralama veya filtre özelliğinin her ayarlandığı zaman alttaki sorguyu yeniden değerlendirmesidir; bu, parametre değerlerini combobox değerlerinden almak yerine, el ile parametre girdisi girmesini ister.

Birleşik girişlerimin değerlerini sorgu parametrelerine bağlayabilmem veya sıralama ve filtreleme işlevlerini geçersiz kılmanın bir yolu var mı? Böylece kayıt kümesinin sıralamalarını doğrudan vba'da uygulayabiliyorum?

cevap

0

Kayıt kümesini yeniden ayarlarsanız, form her zaman istenir. o OrderBy mülkü sıralama için

Me!subform.Form.Filter = "[SomeField] = somevalue" 
Me!subform.Form.FilterOn = True 

: Yapabileceğin Ne

, formun Filtre özelliğini ayarlamaktır

Me!subform.Form.OrderBy = "[SomeField] Asc" 
Me!subform.Form.OrderByOn = True 
+0

Bu, hatalı olmadığım takdirde datagrid'ten sıralama olayını yakalamaz. – narain

+0

UI'de sıralama yapmak istemiyor. Gördüğün şey buysa, başka bir şey oluyor. – Gustav

+0

Evet, sahip olduğum problem bu. Bir sütun seçtiğimde ve alttaki sorguyu artan veya azalan sırayla yeniden değerlendirdiğimde. – narain

0

ben bir çözüm buldum hangi görünüşte daha uzun bir çalışma süresiyle sonuçlanır.

Public Function GetComboboxValue() 
    GetComboboxValue = Forms!Form1!Combobox.Value 
End Function 

ilgili sorgu sonra şuna benzer: i belirledik Ayrıca

SELECT * FROM sampleTbl 
WHERE ForeignID = GetComboboxValue() 

Ben bir sorgu parametresi olarak küresel bir işlevi kullanmak için alt form için sorguyu tekrar yazmış Alt pencereyi istemek için Combobox öğesini tıklatın:

Private Sub combobBox_AfterUpdate() 
    Me.subform.Requery 
End Sub 

s istediğim gibi çalışıyor, sorgu parametrizasyonu artık düzgün çalışmıyor gibi görünüyor. Görünüşe göre sorgu, sorgulanan tablodaki tüm kayıtları döndürür ve sonradan yalnızca recordSet'i filtreler.

+0

Alt form denetiminin “MasterLinkFields” ve “ChildLinkFields” özelliklerini kullanabilmek çok daha kolay olurdu; alt öğe için combox değeri ve child için ForeignID değeri. – Gustav