18-10-2009, 21:21
Sayın arkadaşlar merhaba,
açılan kutulardan oluşan bir formdaki alanları yaptığım sorgunun ölçütleri olarak seçmek istiyorum Bu maksatla açılan kutuların varsayılan değer alanlarına "Hepsi" veya "Tümü" standart değerini giriyorum eğer tek bir değeri seçmek istersem açılan kutudan istediğim değeri işaretleyebiliyorum, hepsini istiyorsam açılan kutuya dokunmuyorum. bunu yapabilmek için açılan kutunun özellikler sekmesindeki "Listeye Sınır = Hayır" seçeneğinin işaretli olması gerekiyor, bu problemin çözümü için yaptığım araştırmada aşağıdaki usulü buldum,
Sonra bu listenin AfterUpdate (Güncelleştirme Sonrası) olay yordamını şu şekilde düzenleyin:
Fakat bu yöntem oldukça uzun (Sorgunun da SQL ile yazılması gerekiyor) acaba bundan daha kolay bir yöntem varmıdır? (Yani listeye sınır seçeneği evet olacak ancak açılan kutunun ilk değeri "Tümü" veya "Hepsi" olacak kullanıcı açılan kutuyu tıkladığında "Tümü" veya "Hepsi" değerini de listenin bir elemanı olarak görebilecek)
açılan kutulardan oluşan bir formdaki alanları yaptığım sorgunun ölçütleri olarak seçmek istiyorum Bu maksatla açılan kutuların varsayılan değer alanlarına "Hepsi" veya "Tümü" standart değerini giriyorum eğer tek bir değeri seçmek istersem açılan kutudan istediğim değeri işaretleyebiliyorum, hepsini istiyorsam açılan kutuya dokunmuyorum. bunu yapabilmek için açılan kutunun özellikler sekmesindeki "Listeye Sınır = Hayır" seçeneğinin işaretli olması gerekiyor, bu problemin çözümü için yaptığım araştırmada aşağıdaki usulü buldum,
SQL
- (
- SELECT Grup AS GrupAdi,
- COUNT(Grup) AS Adet
- FROM Kitaplar
- GROUP BY Grup
- )
- UNION
- (
- SELECT "(Tümü)" AS GrupAdi,
- COUNT(ID) AS Adet
- FROM Kitaplar
- );
Sonra bu listenin AfterUpdate (Güncelleştirme Sonrası) olay yordamını şu şekilde düzenleyin:
Visual Basic
- Private Sub cmbFiltre_AfterUpdate()
- If IsNull(cmbFiltre) Then Exit Sub
- Dim orderbyx As String, orderbyonx As Boolean
- ‘Eski sıralama korunacak.
- orderbyx = OrderBy
- orderbyonx = OrderByOn
- If cmbFiltre = "(Tümü)" Then
- Me.RecordSource = "Kitaplar"
- Else
- Me.RecordSource = "SELECT * FROM Kitaplar " & _
- "WHERE Grup='" & cmbFiltre & "'"
- End If
- OrderBy = orderbyx
- OrderByOn = orderbyonx
- End Sub
Fakat bu yöntem oldukça uzun (Sorgunun da SQL ile yazılması gerekiyor) acaba bundan daha kolay bir yöntem varmıdır? (Yani listeye sınır seçeneği evet olacak ancak açılan kutunun ilk değeri "Tümü" veya "Hepsi" olacak kullanıcı açılan kutuyu tıkladığında "Tümü" veya "Hepsi" değerini de listenin bir elemanı olarak görebilecek)


