oldukça karışık bir kod dizilimi sorusu ile karşınızdayım. üstadlarım için iyi bir beyin fırtınası olacağına inanıyorum
sorum şu şekilde,
puantaj formumda;
personel listesi,
başlangıç ve bitiş tarihi seçeceğim 2 adet metin kutusu,
personeli bindireceğim servis aracı combobox u,
vardiyasını seçeceğim combobox um var.
yapmak istediğim şu;
perlist'ten personeli çoklu bir şekilde seçtikten sonra, oluştur butonuna tıkladığımda,
1- servisler tabloma seçimlerim doğrultusunda iki tarih arası çoklu kayıt yapacak (bunu yaparken aynı tarihe aynı kişiyi aynı vardiyaya yazmamam gerekiyor)
servisi seçtiğim "guzergah" combobox unda ikinci sütunda aracın kapasitesi de yazılı. kayıt işlemi yapıldıktan sonra seçilen aracın kapasitesinden fazla kayıt yapılmış ise o günün ilgili vardiyasına, "araç kapasitesini aştınız" gibi bir uyarı da çıkabilir mi acaba? uyarı sadece bilgi amaçlı olacak. kapasite aşılsa da işlem yapılacak.
2- yemek tabloma yine aynı şekilde iki tarih arası çoklu kayıt yapacak (yine aynı tarihe ve aynı vardiyaya aynı kişi yazılmaması lazım.)
birkaç denemem oldu ama başaramadım. örnek dosyamı da ekliyorum, yardımcı olursanız çok memnun olurum. şimdiden teşekkür ederim.
Vardiya_DevilSpath.rar (Boyut: 83,63 KB / İndirilme: 150)
Uygulama senaryosu dahilinde, formda ki ilgili personelin secimi ile tarih ve vardiya secimi ile servisler tablosuna kayitlari eklenmesini, ek'teki dosyada bulabilirsiniz.
Öncelikle konuyla ilgilendiğiniz için teşekkür ederim. Lakin birkaç sorum olacak.
1- Servisler tablosundaki tarih sütunu yerine, başlangıç ve bitiş tarihi yer alan 2 sütun yapmışsınız. Neden böyle bir yol izlediğinizi merak ettim doğrusu. (Kayıt sayısını azaltıp, şişmeyi engellemek için olabilir mi ki??)
Çünkü günlük rapor ve sorgu çekmem gerekiyor bu tablodan.
2- Aynı güne ve vardiyaya bir kişiyi 2 kere yazmamam gerekiyor ama yaptığınız formatta 2 kez kayıt yapabiliyorum. şöyle ki;
01.10.2018 ile 07.10.2018 seçip kayıt oluşturdum. daha sonra,
02.10.2018 ile 02.10.2018 seçip kayıt oluşturabildim. ayın 2'sine aynı kişiyi vardiyaya iki kez yazabildim.
3- Yemek tablosu tam istediğim gibi olmuş elinize sağlık. Aslında servisler tablosuna da istediğim aynısıydı.
Elinize sağlık örnek çok güzel olmuş Sezgin bey. Ben sadece tablo tasarımında yaptığınız değişikliğin nedenini merak ettim.
Bir de kayıt yaptıkça koltuk sayısının düşmesi şahane olmuş elinize sağlık. Peki ben bu sayı sıfırlandığında uyarı mesajı olayını nereye bağlamam gerekir acaba?
Tekrar yardımın için teşekkür ederim hocam, özellikle ilk soruma cevap yazıp beni aydınlatırsanız minnettar olurum.
Calisma sekilleri, normal(8-17:30), ikili(15:30-01;00, 13:30-23:00) ve bindirmeli(1'inci 07:00-15:00 , 2'inci 15:00-23:00, 3'uncu 23:00-07:00 ve dinlenmevi) olarak degerlendirilir. Isletmenizde ki yontemi bilmiyorum, vardiya kelimesinden yola cikilirsa(bindirmeli) is kanununda 20 haftadan az olmamak kaydi ile planlanmali diye hatirliyorum. Sizin uygulamanizda da calismayi iki tarih arasinda bir ekip listesi ile takip edilmesini dusunursek, tek kayit ile iki tarih arasini kontrol edilsin fikri ile tablo degisikligi yapmisti. Mukerrer kaydi soylediginiz sekilde yapilmasi icin kontrol konabilir.
Koltuk sayisi personel secilirken de kontrol edilmesi yapilabilir. Sorular ve raporlar bu tablo yapisiyla farkli gorunsede, yontemleri ile daha aktif ve hizli sonuclar alinacaktir.
Calisma sekilleri uretime yonelik takip ve maliyet hesaplamalari senaryosuna ek servis, yemek ve bina isi konularida ilave edilebilir. Calisma listelerinde ki personelin is gelisinde ki duraklari, guzergah olarak servis rotasini etkileyebilir fikri de dusunulebilir.
Koltuk sıfırlaması tarih değiştiğinde otomatik sıfırlanıyor. Mesaj: #2 'i mukerrer kaydi onleme yontemi ile guncellendi....
güncellediğiniz örneği inceledim. mükerrer kontrolü ve uyarı vermesi çok hoş olmuş ama doğru çalışmamakta. hangi tarihi seçersem seçeyim o tarihte kayıt var demekte.
aslında ilk örneğimde tablo yapısı daha farklıydı. tek bir tarih sütunu vardı ve 7 günlük kayıt için 7 kayıt oluşturacaktı. sizin yaptığınız örnekte başlangıç ve bitiş tarihi şeklinde, 7 günlük kayıt için tek bir kayıt oluşturmakta. aslında veri şişmesini önlemek adına güzel bir yöntem ama sorgu kullanarak günlük kayıt çekmek istemekteyim. sizin yaptığınız tablo yapısı ile nasıl yapabileceğimi bilemiyorum.
mesela sizin yapınızda, ayşe başl.tarihi- 01.10.2018 btştrh- 07.10.2018 sabah vardiyası olsun.
ben 03.10.2018 tarihinde sabah vardiyasında kimlerin çalıştığını görmek istediğimde, sizin yapınızda sorguyu nasıl hazırlayabilirim?
Aslında benim ilk yaptığım yapıda olsa olmaz mı? Daha kolay bir yapıydı.
Bu arada, dikkat ettiyseniz 2 tabloda güzergah var. ikisinin amacı farklı, buna da açıklık getireyim.
personel tabosundaki güzergah, normalde o personelin hangi serviste olduğunun bilgisini vermekte bize. Mesela ayşe avcılarda oturduğu için, avcılar servisi ile işine gidip gelmekte.
Fakat, avcılar servisi 16 kişilik ve o gün o güzergahta diyelim ki 17 kişi çalışacak ve ben ayşeyi o gün başka servise bindirmem gerekiyor.
bineceği servisi guzergahlar tablosundan seçerek, mesela beylikdüzü servisine bindireceğim. yani personel tablosundaki guzergah sadece bilgi amaçlı, işlemi guzergahlar tablosundan yapacağım.
Bir de belirttiğiniz gibi vardiyadan kastım, gidiş ve dönüş servisini temsil eder.
mesela sabah vardiyasında olan biri, evinden işe gelecek ve akşam evine geri dönecek. yani 3 vardiya olsa, servis aracı 6 tek atmış olacak. maliyet hesabı için bunları da hesaplamam lazım ama bunu ben de yapabilirim sanıyorum.
puantaj tablosundan veriyi istediğim gibi kayıt ettirebilsem, sorguları halledebilirim.
Sizce nasıl bir yol izlenmeli? benim ilk tablo yöntemim gibi tek tarih sütunu altına tek tek mi kayıt edilmeli, yoksa sizinki gibi başlangıç ve bitiş tarihli tek kayıt mı olmalı? ama sizin yönteminizle olduğu zaman sorguları nasıl çekebileceğimi bilemiyorum :/
güncellediğiniz örneği inceledim. mükerrer kontrolü ve uyarı vermesi çok hoş olmuş ama doğru çalışmamakta. hangi tarihi seçersem seçeyim o tarihte kayıt var demekte. VarYok prosedurun kosul bolumunde ((CLng(BsTr))>=" & BasTr & ") And ((CLng(BtTr))<=" & BitTr & "))" BasTr kalmis.
ayşe başl.tarihi- 01.10.2018 btştrh- 07.10.2018 sabah vardiyası olsun. 03.10.2018 tarihinde sabah vardiyasında kimlerin çalıştığını görmek istediğimde, sizin yapınızda sorguyu nasıl hazırlayabilirim?
SQL
SELECT personel.peradsoyad, #10/3/2018# AS Gun, servisler.vardiyano
FROM servisler LEFTJOIN personel ON servisler.personelno = personel.perno
Bu arada, dikkat ettiyseniz 2 tabloda güzergah var. ikisinin amacı farklı, buna da açıklık getireyim.
Vardiya liste kutusu alt forma cevrilirse, servis tablosundan personele ait guzergah degisebilir.
yani 3 vardiya olsa, servis aracı 6 tek atmış olacak. burayi anlamadim.
Sizce nasıl bir yol izlenmeli?
Tarih arasi birden fazla kayitla ugrasmak, goz kontrolu avantajini devredisi birakma gibi dusunulebilir. Yukarida ki SQL'i liste ve maliyet hesaplarinda da kullanabilirsiniz. Diyez icini, kosul olarak nesneye baglayabilirsiniz.
Senaryo ile bir cok onerimle, kafanizi karistirmak istemem. Once ki mesajlarimda calisma sekilleri ile aciklama yapmistim. Uretim, servis, yemek ve ısın(kalorifer) maliyet hesaplama yontemleri ile calisma sekillerine gore uygulanmasi daha farkli kurgu ile yapilabilir.