AccessTr.neT

Tam Versiyon: IIf ile tarih karşılaştırması...
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3
Bunun için yapmanız gerekenler:

1) Sadece 2009 yılı ile sınırlandırmamak için Formunuza bir Metin Kutusu ekleyin ve yılı oraya yazın. Kodda 2009 olan yerleri de formunuzdaki metin kutusu ile değiştirin.

2) Formun diğer olaylarına koymak mantıksız olur. Çünkü belirttiğiz tarihler girilmediği sürece hata verir. Formun açıldığında veya yüklendiğinde ilgili alanları denetlemesi gerekecek. Ancak alanlar boş olacağından dolayı da hata verecek. Bence tarih alanlarının çıkıldığında olayı gayet mantıklı. Nasıl olsa baz aldığımız kriter o tarih kutusu. O tarih kutusuna göre hesaplama yaptırıyoruz.

3) İlla ki formun açıldığında, yüklendiğinde gibi olaylarında bu hesaplamayı yaptırmak istiyorsanız If ... Else kullanarak boş olduğu durumda ne olması gerektiğini de belirtin.

4) b1, b2, b3... gibi alanlar bir defa hesaplandıktan sonra zaten tabloya yazılacağından dolayı tekrar tekrar o alanları aktif hale getirmenize gerek yok. Nasıl olsa kayıt kaynağı tablodaki ilgili alan. Biz onun için olayı kodlarla hallettik.

Umarım açıklamalarım işinize yarar...

Kolay gelsin...
teşekkürler...
ben bu soruyu baştan sona okudum,sonuç olarak sorudan ve yapılandan hiç birşey anlamadım Img-grin
sayın bidehr
bence siz önce ne yapmak istediğiniz iyice düşünün,üzerinde çalışın ve tablolar ve ilişkileri buna göre kurun,sonra takıldığınızda sorunuzu sorun,kolay gelsin
Ne yaptım ne ettim bi türlü anlayamadım. Kusura bakmayın...

Yaklaşık 3 saattir yapmaya çalışıyorum ama bir türlü yapamadım. Çünkü:

1)
Alıntı:Buradaki amacım eğer üye bu yılda ve yeni üye olmuşsa üyelik tarihinden sonraki ay ödemeleri başlasın ve borç hanesine, bulunduğu aya göre 0 yada 5 TL yazsın.
demişsiniz. Peki burda IIf(Month(Date) >= 1, 5, 0) koşulunun ne mantığı var?

2) Üyelik tarihi ile tarih1'i karşılaştırmışsınız. İyi güzel hoş da, üyelik tarihinin 22.03.2009 olduğunu kabul edecek olursak;

Sizin mantığınıza göre sonuç şu olur:

IIF yapısında ay için büyük-eşit kullanmışsınız. b1 alanına 1. ay için eşitlediğimizi düşünün. Sizce sonuç ne olur? Hem eşitlik durumunda hem de büyüklük durumunda 5 yazmaz mı?

Bunun için eşitlik kullanmak zorundayız. Mecburen yani. Hata almamak için.

Bu defa da bu ay üye olduğum için önümüzdeki ay aidat ödemem lazım. Peki bunu nasıl yapacağız?

3) Ay için neden bir koşul daha oluşturduğunuzu da anlayamadım... Zaten üyelik tarihi ile tarih1 alanları arasında bir büyükse şartı koymuşuz. İki tarihi karşılaştırınca otomatik olarak zaten büyük veya küçük veya eşit olduğunu zaten öğrenmiyor muyuz? İkinci koşul yerine direk 5 yazsak aynı şey olmayacak mı?

Hadi bunları geçtik, Form1'in altına Sayfa Denetimi yerleştirmişsiniz ve ikinci sayfaya Form2'yi almışsınız. Ama Form1'in 1. sayfasındaki üye bilgileri ile 2. sayfadaki Form2 arasında hiçbir bağlantı yok. Böyle olunca da yaptıklarınız Form1'in 2. sayfasındaki form2'de görünmüyor. Bu nasıl bir mantık?

Velhasılı, kusura bakmayın, anlamak için ayrı, çözmek için ayrı zaman harcamak gerekiyor.

Sizin yazdıklarınızı tek tek tek okudum ama yine de anlayamadım.

Bir de arkadaşlar incelesin. Benim beynim durdu...

Kolay gelsin...
Merhabalar sizi baya uğraştırdım galiba. Ama yapmak istediğim şey çok açık şöyle ki..

1.Bu program 2009 yılı için geçerli. 2010 da kullanılmayacak.

2.Bu programda karışık görünen yer form2 deki 2009 için her bir aydaki üye borcunun gösterildiği b1,b2,b3,b4,b5...... metin kutuları. Benim bu kutuda varsayılan değer olarak gelmesini istediğim iki sayı var. Bunlardan birincisi "0" diğeri "5". Eğer üye ocak ayında borçlu olması durumunda "5" yazacak, değilse "0" yazacak. Temel yapmak istenen bu.

3. IIf(Month(Date) >= 1, 5, 0) kodu şunu isteyecek. Eğer şuanda bulunduğu ay ocak olsaydı değer olarak b1 (1>=1 ) ise değeri 5 yaz. ocak ayında borçlandır , şubat ayında ise b2 (2>=1) ise değeri 5 yaz, mart için ise uan bulunduğumuz ay b3 (3>=3) ise değeri 5 yaz. Şimdi geldik nisan ayına Month(Date) mart ayında olmamız sebebiyle 3 değerini vereceği için b4 (3>=4) ise olacak ve değer olarak 0 yazacak. yani mart ayında program kullanılmaya başlayacağı için mart ayı dahil kişiler borçlandırılacak ve her bir ayın boç hanesine borç lu olduğu "5" değeri yazılacak.

4. Şimdi gelelim üyelik tarihinin şuanki tarihten büyük olması durumuna. Burada yaptırdığım tarih kontrolü yeni üyeler içindir. örneğin bu ay yani mart ayında üye olacak kişi sadece IIf(Month(Date) >= 1, 5, 0) kodu ile değerlendirilmiş olsaydı üye olmadığı ocak, şubat ve üyeliği bir ayı dolmaması sebebiyle mart ayında da borçlu olacaktı. oysaki ödemelere bir ay sonrasından başlaması gerekiyor. yani nisanda başlayacak,

IIf(Month(Date) >= 1, 5, 0) kodundan önce [u_tar]>#01.31.2009# kodunun amacı üyelik tarihinden önceki hanelerin 0 değeri almasını sağlamaktır.

eğer varsayılan değer kısmında şu kodları yazıp çalıştırabilseydim. olay yordamları ile hiç uğraşmak zorunda olmayacaktım ve işimiz kolaylaşacaktı.

Ocak ayı örneği için yani b1 için: =IIf([harun]![u_tar]>#31.01.2009#;0;IIf(Month(Date())>=1;5;0))

Şubat ayı örneği için yani b2 için: =IIf([harun]![u_tar]>#28.02.2009#;0;IIf(Month(Date())>=2;5;0))

Mart ayı örneği için yani b3 için: =IIf([harun]![u_tar]>#31.03.2009#;0;IIf(Month(Date())>=3;5;0))

Nisan ayı örneği için yani b4 için: =IIf([harun]![u_tar]>#30.04.2009#;0;IIf(Month(Date())>=4;5;0))

ve diğerleri.............

ama bu kodlar varsayılan değer olarak herhangi bir değer atamıyor. Bu sebepten dolayı olay yordamına o kodları yazarak denemek istedim onlarda form açıldığında değil 2. bir işlem yapıldığında değerleri yazdırıyor.

Dün bir başka yol denedim sorgu ile yapayım dedim. Form2 de istediğimi başka bir metin kutusunda otomatik getiriyor (kırmızı çerçeveler) ama bu başka metin kutusundaki değerleri aynı sorgu içerisinde olması sebebitle b1,b2,b3 lere alamıyorum.

Şimdi sizden istediğim tek şey var. aynı sorgu içerisinden gelen Db1 in değerini b1 e nasıl aldırırım. Bunu yapabilirsem işim bitecek.
Örneğin son halini ekler misiniz?
Sayfalar: 1 2 3