05-09-2022, 12:34 (En son düzenleme: 05-09-2022, 12:37 alperalper.)
Arkadaşlar periyot hesabı için kullandığım bir fonksiyonumda sorun yaşıyorum. ekli dosyaya aşağıdaki tarihleri girerek denediğiniz zaman göreceksiniz. Tarihin üstüne belirli zamanları koyarak saydırıyorum ama koşul istediğim tarihi göstermiş olmasına rağmen koşula uymuyor gibi geçiyor ve fazladan 1 periyot sayıyor. Bilgisi olan arkadaşlar fikir verirse sevinirim.
Kural: Başlama zamanı üstüne cevap süresi eklenir eğer bu tarih cevaptan küçükse sorun yok heplama yapmaz. değilse periyot sayar. 16:30:01 terse 1 peryiot, 17:30:01 derse 2. periyot diye devam eder gider.
Eğer kural birde sorun yoksa 17:30:00 üstüne düzeltme süresi eklenir. bu süre cevap süresinden küçükse sorun yok değilse üstüne düzeltme süresi eklenerek saymaya devam eder.
Benim bu verdiğim örnek zamanlarda düzeltmeyi hesaplarken trhduzeltme 19:30:00 olmasına rağmen oradaki >= kuralı işlemiyor. anlayamadım gitti. Bu örnekte 18:30:00 a kadar bu sorun çözülmeliydi. 19:30:00 da çözüldüğü için 18:30:01 de 1 periyot 19:30:01 de ise 2. periyot olur. ama 19:30:00 da bittiği için 2. periyot oluşmuyor.
(06-09-2022, 17:47)alperalper demiş ki: . Çok ilginç koşul do until ile kullanıldığı zaman oluyor. Acaba sebebi nedir?
koşul olana kadar sayacı 1 arttır diyorsunuz. Koşulu do ya taşıyıp, -1 olduğunda dur deniyor. If de koşul oluşmamış olabilir. biraz da goto ile değil de if...else ... end if içinde daha güzel olur.
(06-09-2022, 17:47)alperalper demiş ki: . Çok ilginç koşul do until ile kullanıldığı zaman oluyor. Acaba sebebi nedir?
koşul olana kadar sayacı 1 arttır diyorsunuz. Koşulu do ya taşıyıp, -1 olduğunda dur deniyor. If de koşul oluşmamış olabilir. biraz da goto ile değil de if...else ... end if içinde daha güzel olur.
dsezgin hocam bu tarihteki sorunları hallettim. Kombinasyonlar çok karışıktı ama if else olarak yaptım hepsini güzelde oldu. Lakin bir sorunla karşılaştım. Birinci mesajda verdiğim örnek çalışmada dateadd içine eklenecek zaman dilimleri önceden tanımlıydı. Gün eklerken "d", yıl eklerken "y" saniye eklerken "n" gibi. Ancak bizim başka bir kriter olarak "w" varmış. İş günü. Dateadd("w", 1,tarih) dediğimde tarihin üstüne 1 iş günü eklemesi gerekiyor ama iş günü olmayan günlerde ekleniyor. Bu böyle çalışmaz mı? Weekday ile gün indeksine göre mi gitsem?
Resmi ve Cmt+Paz gunleri harici iki tarih arisini For Trh = #1/1/2022# To #12/31/2022# satırına referans ile aradaki işgününü saydırabilirsin.
Dini bayramları Calender(...) George'yi Hijri'ye çevirerek kontrol edilir.