Skip to main content

AccessTr.neT M.



Çerçeve Seçimine Göre Alt Formda Filtreleme Yapmak

Çerçeve Seçimine Göre Alt Formda Filtreleme Yapmak

Çözüldü #1
merhaba, örnekte portföyüm formu mevcut. Alt formun veri kağnağı srgportfoy adlı sorgu. Alt formu üst form üzerindeki filtrem adlı çerçeve seçimine göre filtrelemek istiyorum. portföydekiler seçilirse sorguda kalan sütunu sıfırdan büyük olanları listelesin, tüm hisseler seçilirse tüm kayıtları getirsin. Bunu iki farklı sorgu düzenleyip seçime göre data source'ü değiştirerek yaptım fakat tek sorgu üzerinde sorunu çözemedim. Yardım edebilirmisiniz.

.rar Brs.rar (Dosya Boyutu: 91,47 KB | İndirme Sayısı: 9)
Cevapla
#2
Merhaba, filtrem isimli seçenek grubunun tıklandığında olayındaki kodu sil. Aynı seçenek grubunun güncelleştirme sonrasında olayına

Visual Basic Code
Dim GKriter As String
If Me.Filtrem = "0" Then

GKriter = ""

Else

GKriter = "HAVING (((Sum(Nz([PAlis], 0)) - Sum(Nz([PSatis], 0))) > 0))"


End If

Forms![Portfoyüm]![PortfoyümAlt].Form.RecordSource = "SELECT Portfoy.PHisse, Portfoy.PGrup, Sum(Nz([PAlis],0))-Sum(Nz([PSatis],0)) AS Kalan, Nz([FIYAT],0) AS Fiyat, Sum(Portfoy.PAlis) AS AAdet, Sum(Portfoy.PSatis) AS SAdet, Sum(Nz([PaTutar]+[PKomisyon],0)) AS Alis, Sum(Nz([PSTutar]-[PsKomisyon],0)) AS Satis, Round(Nz([alis]/[aadet],0),4) AS Maliyet, CDbl(Nz([Kalan]*[Fiyat],0)) AS Tutar, Round((Nz([satis],0)+Nz([tutar],0))-Nz([alis],0),2) AS Kar FROM HisseVtGun INNER JOIN (Hisseler INNER JOIN Portfoy ON Hisseler.ID = Portfoy.PHisse) ON HisseVtGun.HISSE = Hisseler.KOD GROUP BY Portfoy.PHisse, Portfoy.PGrup, Nz([FIYAT],0) " & GKriter & " ORDER BY Sum(Nz([PAlis],0))-Sum(Nz([PSatis],0)) DESC;"


kodu ekle..

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
...........
#3
Hocam elinize sağlık, ilginize teşekkürler. Aslında öğrenmek istediğim kodla çözdüğünüz sorunu sorgu üzerinde neden yapamadığımız. Aslında iki ayrı sorgu kaydedip data source değiştirerek çözebiliyorum. Ancak benim yapmaya çalıştığım tek sorgu üzerinde çözmek ve bu sorguyu sonra excel'e verirkende veri kaynağı olarak kullanmak.

Cevapla
#4
Merhaba, kodu aşağıdaki ile değiştirerek dener misin?

Visual Basic Code
Dim db As DAO.Database
Set db = CurrentDb
Dim qdf As DAO.QueryDef
Dim newSQL As String
    
DoCmd.DeleteObject acQuery, "SrgPortfoy"
    
Dim GKriter As String
If Me.Filtrem = "0" Then

GKriter = ""

Else

GKriter = "HAVING (((Sum(Nz([PAlis], 0)) - Sum(Nz([PSatis], 0))) > 0))"

End If

newSQL = "SELECT Portfoy.PHisse, Portfoy.PGrup, Sum(Nz([PAlis],0))-Sum(Nz([PSatis],0)) AS Kalan, Nz([FIYAT],0) AS Fiyat, Sum(Portfoy.PAlis) AS AAdet, Sum(Portfoy.PSatis) AS SAdet, Sum(Nz([PaTutar]+[PKomisyon],0)) AS Alis, Sum(Nz([PSTutar]-[PsKomisyon],0)) AS Satis, Round(Nz([alis]/[aadet],0),4) AS Maliyet, CDbl(Nz([Kalan]*[Fiyat],0)) AS Tutar, Round((Nz([satis],0)+Nz([tutar],0))-Nz([alis],0),2) AS Kar FROM HisseVtGun INNER JOIN (Hisseler INNER JOIN Portfoy ON Hisseler.ID = Portfoy.PHisse) ON HisseVtGun.HISSE = Hisseler.KOD GROUP BY Portfoy.PHisse, Portfoy.PGrup, Nz([FIYAT],0) " & GKriter & " ORDER BY Sum(Nz([PAlis],0))-Sum(Nz([PSatis],0)) DESC;"
Set qdf = db.CreateQueryDef("SrgPortfoy", newSQL)

Forms![Portfoyüm]![PortfoyümAlt].Form.RecordSource = "SELECT Portfoy.PHisse, Portfoy.PGrup, Sum(Nz([PAlis],0))-Sum(Nz([PSatis],0)) AS Kalan, Nz([FIYAT],0) AS Fiyat, Sum(Portfoy.PAlis) AS AAdet, Sum(Portfoy.PSatis) AS SAdet, Sum(Nz([PaTutar]+[PKomisyon],0)) AS Alis, Sum(Nz([PSTutar]-[PsKomisyon],0)) AS Satis, Round(Nz([alis]/[aadet],0),4) AS Maliyet, CDbl(Nz([Kalan]*[Fiyat],0)) AS Tutar, Round((Nz([satis],0)+Nz([tutar],0))-Nz([alis],0),2) AS Kar FROM HisseVtGun INNER JOIN (Hisseler INNER JOIN Portfoy ON Hisseler.ID = Portfoy.PHisse) ON HisseVtGun.HISSE = Hisseler.KOD GROUP BY Portfoy.PHisse, Portfoy.PGrup, Nz([FIYAT],0) " & GKriter & " ORDER BY Sum(Nz([PAlis],0))-Sum(Nz([PSatis],0)) DESC;"

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
...........
#5
Teşekkürler, elinize sağlık. merak ettiğim bişey var izninizle. kodla çözdünüz sorunu. kod yazmadan sorgunun kalan sütununa koşul koyarak yapamazmıydık bu işlemi.

Cevapla
#6
Merhaba, kalan sütununa ölçüt yazarak yapılabilirdi, ancak ölçüte ne yazdıysam çalışmadı. Kod ile sorgu oluşturulmasında bir sakınca yok.

"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
...........

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

Yorum yapmak için üye olmanız gerekiyor

ya da