Öncelikle merhaba,
Forumda araştırdığım örneklere göre tam kafamdakini bulamadım malesef.
Olay şu Form1'de iki adet seçeneğim var birisi sıcaklık birisi basınç. Tablo1 de makine adı, sıcaklığı ve basıncı var.
Ben istiyorum ki sorgu yada rapor yaptığımda hangi seçenekler işaretli ise o sütun raporu alayım.
Yani sadece sıcaklık işaretledim be butona bastığım zaman ekipman adı ve sıcaklık sütunu çeksin. İkisi işaretli ise iki sütunu da gibi.
Çalıştığım asıl datada ortalama 10-15 sütun var ve bazen sadece belirli bilgiler istenebiliyor. Yardımcı olacaklara şimdiden teşekkür ederim.
(güncelleme: sorguda ölçütlerde if komutu ile denedim bir iki birşey fakat başarılı olamadım.)
Rahmetli Murtaza Bey'in bu
konusunu inceleyin. Raporunuzun kaynağı olacak sorguda kriterleri belirleyerek değişken sorgu oluşturmak için Sayın @
ozanakkaya hocamızın oldukça detaylı açıklamalarını içeren çözümlenmiş net bir örnektir.
Bende @
atoykan hocamıza ek olarak bir çözüm yolu ürettim. Aşağıdaki kodlar formunuza uygulandığında istediğiniz sonuçları alabileceksiniz.
Kod:
Private Sub Form_Load()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDb()
For Each qdf In db.QueryDefs
If qdf.Name = "s_sıcaklık" Then
CurrentDb.QueryDefs.Delete "s_sıcaklık"
CurrentDb.QueryDefs.Refresh
Exit For
End If
If qdf.Name = "s_basinc" Then
CurrentDb.QueryDefs.Delete "s_basinc"
CurrentDb.QueryDefs.Refresh
Exit For
End If
If qdf.Name = "s_basinc_sck" Then
CurrentDb.QueryDefs.Delete "s_basinc_sck"
CurrentDb.QueryDefs.Refresh
Exit For
End If
Next qdf
Set qdf = Nothing
Set db = Nothing
End Sub
Private Sub Komut7_Click()
On Error Resume Next
Dim strSQL As String
Call Form_Load
If Me.Seçenek8 = True And Me.Seçenek10 = False Then
strSQL = "SELECT Tablo1.isim, Tablo1.sıcaklık FROM Tablo1"
Set qdf = CurrentDb.CreateQueryDef("s_sıcaklık", strSQL)
DoCmd.OpenQuery qdf.Name
DoCmd.RunSQL strSQL
Call Form_Load
End If
If Me.Seçenek8 = False And Me.Seçenek10 = True Then
strSQL = "SELECT Tablo1.isim, Tablo1.basınç FROM Tablo1"
Set qdf = CurrentDb.CreateQueryDef("s_basinc", strSQL)
DoCmd.OpenQuery qdf.Name
DoCmd.RunSQL strSQL
Call Form_Load
End If
If Me.Seçenek8 = True And Me.Seçenek10 = True Then
strSQL = "SELECT Tablo1.isim, Tablo1.sıcaklık, Tablo1.basınç FROM Tablo1"
Set qdf = CurrentDb.CreateQueryDef("s_basinc_sck", strSQL)
DoCmd.OpenQuery qdf.Name
DoCmd.RunSQL strSQL
Call Form_Load
End If
'Hata:
End Sub
Private Sub Seçenek10_Click()
Call Form_Load
End Sub
Private Sub Seçenek8_Click()
Call Form_Load
End Sub
Teşekkür ederim.
En yakın müsait zamanda kontrol edip durumu burdan bildireceğim.
Öncelikle geç cevabım için kusura bakmayın işler yüzünden bakma fırsatım olmamıştı.
Sn. Atoykan Sn.murtaza bey'in açtığı konuya göz gezdirdim ama istediğim sonuç değil tam olarak. bu konuda yapılan
Excel deki filtreleme mantığında olmuş
Sn.onur_can bey istediğim kod tam olarak sizin yazdığınız. Çalıştırdığımda şöyle bi sıkıntı oldu. iki kutuyu manuel olarak işaretlemeden direk sorgu yapamıyordum. Sizin yazdığınıza olarak form açılışına;
Kod:
Private Sub Form_Open(Cancel As Integer)
Me.Seçenek10 = True
Me.Seçenek8 = True
End Sub
Kodunu ekledim hepsi direk aktif oluyor istenmeyen kolonları çıkartıyorum. Yardımınız için teşekkür ederim.
Sorununuz çözüldü ise ne mutlu. Ancak verdiğim linkteki konuyu incelemek ve mantığı anlamak yerine ezbere bir bakışla exceldeki filtreleme mantığında olmuş diyorsunuz. Orada bir filtreleme işlemi değil seçimlere göre sorgunun değiştirilerek kriterlerinin eklenmesi açıklanmış -yapmak istediğiniz işlem bu-. Sayın @
onur_can hocamızın verdiği kod ise aynı işlemin bir başka yaklaşım ile uygulanması ve netice itibarı ile mantıkları aynı, birisinde mevcuttan eleme yapıyor ve yeni sorgu oluşturuyor birisinde ise mevcuda ekleme ve aynı sorguyu oluşturuyor.