Access..Tarihe göre yapılan sorgulama toplam alanlarını etkiliyor.

Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Arkadaşlar. Uzun süredir üzerinde çalıştığım bir fatura-stok programım var. Bu programın cari extre bölümünde bir sorun yaşıyorum. Gönderdiğim ekte extre almak için formu açtığımda karşıma çıkan Cari hesap kutusunu ve ilk tarih-son tarih alanlarını seçip raporla dediğimde gelen extre (rapor) üzerinde verileri profesyonel extreler gibi sıralamak istiyorum. Bu yüzden tarihe göre sıralı ALIŞ FATURASI, SATIŞ FATURASI - TAHSİLAT ve ÖDEME alanları sorunsuz yerleşiyor. Fakat alt toplamları alamıyorum. Çünkü alt toplamları sınıflandıramıyorum. Bunun için 4 adet alt rapor yaptım fakat bunlardaki alanların toplamı vermesi gerekiyor. Bu sebeple bir sorgu daha yapıp tarihe süzülmüş verileri toplamam lazım. Bunun için de yaklaşık 8 sorgu ve 4 alt rapor yapmış oluyorum. Bunun daha kolay bir yolu olabilir mi?. Üstte sıralanan verileri işlem türüne göre rapor üzerinde toplayamaz mıyız? (Bu arada nz de kullandım. Bunun için de bazı sıkıntılar oluştu. Buna da dikkat...
Ekta örnek dosya var. İçinde de veriler mevcut. Fikirlerinizi bekliyorum. Kolay gelsin. (Biraz uzun ve karışık oldu.. Kusura bakmayın)
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Şimdi gönderdiğim şekli bahsettiğim sorguları yapılarak düzeltilmiş hali... Bu şekliyle sorusuz çalışıyor. Ama ben bu türden verileri hep -hamallık diyeceğim- böyle sorgular yoluyla yapıyorum. Daha pratik bir yol öneren olabilir belki..
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
ve faturalarda ve makbuzlarda yer alan dolar miktarının da o günkü kur üzerinden cari extreye aktarılmış hali.. Şimdi tek sıkıntı var: Devreden bakiye.. Yani bir extre alınca daha önceki döneme ait alış-satış faturaları ödeme ve tahsilat toplamları da en üste gelmeli ve en alttaki toplamlar bu sayıyı da baz almalı.. Şu anda sadece sorgulanan tarih aralığını hesaplıyor. Halbuki önceden kalma bir sürü hesaplar var. Onları da "devreden bakiye" olarak nasıl extrenin en üstüne atarız? (Bu arada saat sabahın 4.28'i.. Ben yatıyorum. Cevaplarınızı sabırsızlıkla bekliyorum. Belki yarın ben de yeni fikirler oluştururum ama şu an beyin durdu. Zzzzzzzzzzzz..)
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
sayın mehmetdemiral,

neden işlemtürü alanına göre gruplama yapmıyorsunuz?
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Verileri her biri ayrı tablodan getirip bir tabloda birleştirdiğim ve işlem türü adını verdiğim alanı da o anda sorguda deyim şeklinde oluşturduğum için raporda aslında öyle bir alan yokmuş gibi kabul ettim. Yani nasıl yapacağım ki. Öyle bir şekilde buraya ulaştım ki belki de artık basit şeyleri düşünemiyorumdur. Sıralama ve gruplamadan böytle birşey yapılamaz diye düşündüm... O zaman verileri istediğim gibi sıralamıyor galiba...
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
(yanlış anlamış olabilirim onu baştan söyliiim.)
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Yoo. Gayet güzel anlamışsın. İşte böylece gereksiz bir sürü alt formu kullanmamış oluyorum. Dsum kullanımını bilmediğim için ve bu komutu süzme parametresiyle kullanmadığım için görsel yöntemler uyduruyorum. Visual programlama benim yaptığım olsa gerek :)))
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Peki, asıl diğewr konu nasıl olacak. Yani devir işi.. Devreden bakiye işi.. İşi böyle çözünce sanki o da daha kolay olacak gibi geliyor bana.. ne dersiniz?
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Bu arada sizin yaptığınız örneği etraflıca inceleyince cari hesaba göre süzmediğini, tablodan direkt veri aldığını gördüm. Bu da hangi tarihi sorgularsam sorgulayayım aynı sonucu döndürüyor. Ayrıca ANALİZ'e hiç satışım ve iadem yokken sonuç sıfır dönmüyor ve böylece nz fonksiyonunu da kullanamıyor. Dsum'ı biraz daha parametre ile ve başka verileri toplamada kullanmak gerek galiba..
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
DSum ın son parametresi, kriter parametresi.

istediğiniz kriterleri oraya ekleyebilirsiniz.

ben sadece işlem türünü koymuştum. siz tarihi de ve gerekli olan diğer kriterleri de ekleyin.
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Bence bu sorun şöyle aşılabilir. Yaptığım ekleme sorgularu cariextre tablosunu oluştururken verileri süzdürebilirim. Böylece oluşan geçici tablo istediğimiz verilerle oluşur o zaman sizin dsum komutu iş görür. Yapıp deneyeyim bakalım. Ama hala sıfıra dönüştürme için tereddütlerim var.
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
evet aynen dediğim gibi oldu. Sonuçlar doğrulandı fakat Dsum ile nz birlikte kullanılmalı. Onu da yaparsam ok.
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
=DSum("miktar";"cariextretablosu";"işlemtürü='ALIŞ FATURASI'")

bu komutla nz yi nasıl kullanacağım? Girdi yoksa sonuç null oluyor. Sıfıra döndermek için daha önceki örnekte =nz(...);0 gibi bir yol kullanmıştım. Ama bu komutta nasıl olacak?...
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
DSum ın son parametresi, kriter parametresi.

istediğiniz kriterleri oraya ekleyebilirsiniz.

ben sadece işlem türünü koymuştum. siz tarihi de ve gerekli olan diğer kriterleri de ekleyin.
Carikod değeri ve işlem tarihi alanları değişken olduğu için ancak form üzerinden alınabilirdi. Burada olduğu gibi o metin kutusu hep aynı kriterle sorgulanmıyor. Ama ben bunu ekleme sorgularımı filtreleyerek hallettim. Siz bana dsum ile nz nasıl birarada kullanılıyor onu öğretin. Teşekkürler.. Yardımlarınız için..
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Onu deneyeceğim. Bu arada bir açık daha çıktı ortaya. O da sorguları formda seçilen carikod ve tarihe göre oluşturunca tabloda sadece bu tarihteki veriler oluyor. O zaman da kullanıcı tarih seçmezse tablodaki ilk ve son verileri göstremeiyoruz. Yani

If IsNull(Me.ilktarih) Then

Me.ilktarih = DMin("işlemtarihi", "cariextretablosu")
End If

If IsNull(Me.sontarih) Then
Me.sontarih = DMax("işlemtarihi", "cariextretablosu")
End If


komutları işe yaramıyor doğal olarak. Çünkü oluşan tablo süzülmüş bir tablo..
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
evet teşekkürler... Dedsiğin gibi çalışıyor.

=nz(DSum("miktar";"cariextretablosu";"işlemtürü='SATIŞ FATURASI'");0)

sonuç doğru..
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Aklıma birşey geldi. Bu tarih aralıklarını girmeyince rapor oluşturması için bir tablo oluşturup güncelleme sorgusu ile sadece seçilen cari karta ait tahsialt-ödeme-satış ve alış faturalarının tarihlerini yazdırsam ve buradaki kodu da

If IsNull(Me.ilktarih) Then

Me.ilktarih = DMin("işlemtarihi", "bahsettiğim_tablo")
End If

If IsNull(Me.sontarih) Then
Me.sontarih = DMax("işlemtarihi", "bahsettiğim_tablo")
End If


şekline getirsem nasıl olur?..
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
bir üstte bir açık daha var demişsiniz,

okudum ama pek bişey anlamadım.

bugün hayli yoğunum, hızlıca okuyup, o anda anladıysam cevaplayama çalışıyorum. onun için cevaplar da yanlışlar da olabilir. mazur görün.
 
Üst