Skip to main content

AccessTr.neT


Seçeneğe Göre Raporda Belli Sütunları Görüntüleme.

Seçeneğe Göre Raporda Belli Sütunları Görüntüleme.

Çözüldü #1
Ö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.)
.rar Database1.rar (Dosya Boyutu: 17,4 KB | İndirme Sayısı: 7)
Son Düzenleme: 03/10/2024, 21:59, Düzenleyen: andarc.
Cevapla
#2
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.
Cevapla
#3
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

 İyi olan tek şey bilgi ve kötü olan tek şey de cehalettir. (Sokrates)
Cevapla
#4
Teşekkür ederim.
En yakın müsait zamanda kontrol edip durumu burdan bildireceğim.
Cevapla
#5
Ö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.
Cevapla
#6
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.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task