A.S.C Filtre, Grafik ve Raporlama Eklentisi

[SORGU] Sorguda Döngü Kullanımı
#1
Merhaba Arkadaşlar, 
Takıldığım bir konu var. Araştırdım ancak bulamadım. 

Öğrenci servislerle ilgili yaklaşık maliyet hesabı yapmam gerekiyor. 

TABLO ÖRNEĞİ:

SERVİS ADI        ÖĞRN.ALACAĞI YER         ÖĞRN. BIRKACAĞI YER         UZAKLIĞI             KATSAYISI
Servis-1              A - Mahallesi                    123 Okulu                           15 KM
Servis-2              C - Mahallesi                    123 Okulu                           29 KM
Servis-3              K - Mahallesi                    656 Okulu                           56 KM 


Bu Tablodaki Katsayıyı Hesaplamak İstiyorum. Ancak katsayılar önceden belirlenmiş, 1 KM=0,40 Krş, sonraki her kilometrede 0,01 Krş artması gerekiyor, 51 ve üzeri için de  0,90 Krş sabit olacak. 
Şimdilik Kullandığım Çözüm Şöyle; Katsayıların yazdığı ayrı bir tablo yaptım, UZAKLİK ve KATSAYİ alanları var. 1'den 50'e kadar veri girdim. 1 KM=0,40 KRş, 2 KM=0,41, ... şeklinde gidiyor. Sorguda da IIf() ve DLookUp() fonkisyonu ile uzaklık kaç KM ise ona karşılık gelen katsayıyı buluyorum, 50 KM büyük olan tüm kayıtların katsayısı dad 0,90 Krş olarak görünüyor. 
Döngülere baktım, denemeler yaptım ancak EKSİK İŞLEÇ hatası alıyorum. yardımlarınızı bekliyorum. Örnek Çalışma Ekte.


Eklenti Dosyaları
.rar   Taşımalı Takip.rar (Boyut: 25,75 KB / İndirilme: 6)



  Alıntı
Bu mesajı beğenenler:
#2
50 km=?
55 km=?
99 km=?
122 km=?
kilometreler için katsayılar ne olmalı?
Daha doğrusu toplam ücret?



  Alıntı
Bu mesajı beğenenler:
#3
(26-06-2020, 14:55)askme_16 demiş ki: Bu Tablodaki Katsayıyı Hesaplamak İstiyorum. Ancak katsayılar önceden belirlenmiş, 1 KM=0,40 Krş, sonraki her kilometrede 0,01 Krş artması gerekiyor, 51 ve üzeri için de  0,90 Krş sabit olacak. 

SQL
  1. SELECT tbl_guzergahlar.tasimamerkezi, tbl_guzergahlar.guzergahadi, tbl_guzergahlar.uzaklik, 0.4+((IIf([uzaklik]>50,50,[uzaklik])-1)*0.01)+IIf([uzaklik]>50,(([uzaklik]-50)*0.9),0) AS kmkatsayisi
  2. FROM tbl_guzergahlar;



kmkatsayisi: 0,4+((IIf([uzaklik]>50;50;[uzaklik])-1)*0,01)+IIf([uzaklik]>50;(([uzaklik]-50)*0,9);0)

uzaklik ilk KM yi 0.40 sonraki KM icin uzakliktan 1 cikarip; 0.01 ile carpilmasi sonucu katsayi hesaplanabilir. 50 KM uzeri uzakliktan 50 cikarip, 0.90 ile carpilarak hesaplama yapilabilir. Hesaplama sekli beklenen gibi ise yukarida ki SQL'i kullanabilirsiniz.



  Alıntı
Bu mesajı beğenenler:
#4
(26-06-2020, 17:11)halily demiş ki: 50 km=?
55 km=?
99 km=?
122 km=?
kilometreler için katsayılar ne olmalı?
Daha doğrusu toplam ücret?

Sayın halily, 
Eğer uzaklık 1 KM ise 0,40 Krş. - 2 KM ise 0,41 Krş. - ... sonraki her KM artışında katsayı da 0,01 Krş. artacak. Ancak 51 KM ve üzeri KM'lerde katsayı 0,90 Krş. olacak. 

Çözüm olarak tbl_kmhesaplama isminde bir tablo oluşturdum. Bu tabloya KM'leri ve bunlara karşılık gelen katsayıları yazdım. Sorguda DLookUp() fonksiyonu ile katsayıları çağırıyorum.

50 km = 0,89 Krş denk geliyor.
51-52-53.. ve sonraki her km ise 0,90 Krş. sabit olacak



  Alıntı
Bu mesajı beğenenler:
#5
(29-06-2020, 00:12)dsezgin demiş ki:
(26-06-2020, 14:55)askme_16 demiş ki: Bu Tablodaki Katsayıyı Hesaplamak İstiyorum. Ancak katsayılar önceden belirlenmiş, 1 KM=0,40 Krş, sonraki her kilometrede 0,01 Krş artması gerekiyor, 51 ve üzeri için de  0,90 Krş sabit olacak. 

Visual Basic
  1. SELECT tbl_guzergahlar.tasimamerkezi, tbl_guzergahlar.guzergahadi, tbl_guzergahlar.uzaklik, 0.4+((IIf([uzaklik]>50,50,[uzaklik])-1)*0.01)+IIf([uzaklik]>50,(([uzaklik]-50)*0.9),0) AS kmkatsayisi
  2. FROM tbl_guzergahlar;



kmkatsayisi: 0,4+((IIf([uzaklik]>50;50;[uzaklik])-1)*0,01)+IIf([uzaklik]>50;(([uzaklik]-50)*0,9);0)

uzaklik ilk KM yi 0.40 sonraki KM icin uzakliktan 1 cikarip; 0.01 ile carpilmasi sonucu katsayi hesaplanabilir. 50 KM uzeri uzakliktan 50 cikarip, 0.90 ile carpilarak hesaplama yapilabilir. Hesaplama sekli beklenen gibi ise yukarida ki SQL'i kullanabilirsiniz.

Sayın dsezgin,
Cevap için teşekkürler. Cevabınızda yazmış olduğunuz fonksiyonu kullandığımda 51 ve üstündeki KM'lerde 2,.. küsüratlı sonuçlar çıkıyor. Ancak kullandığınız mantığı anladım ve şu fonksiyonu kullanarak istediğim sonuca ulaştım. Yardımlarınız için teşekkür ederim. 
Kullandığım fonksiyon 

IIf([uzaklik]>50;0,9;0,4+(IIf([uzaklik]>50;50;[uzaklik])-1)*0,01)



  Alıntı
Bu mesajı beğenenler: dsezgin


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
access-sql-9 [FORM] Cari Hesap Karşı Hesap Kullanımı Tippler 3 133 31-05-2020, 16:50
Son Mesaj: dsezgin
  "ın" Kullanımı Satir 4 145 24-04-2020, 17:58
Son Mesaj: Satir
  Access Sorguda Toplama enginceken 7 181 20-04-2020, 07:18
Son Mesaj: dsezgin
  [VBA] Birden Fazla Koşullu Sorgu Metodlu Combobox Kullanımı Lenadro 2 203 27-02-2020, 15:16
Son Mesaj: Lenadro
  Sorguda Concatrelated Sorunu murataltun79 6 167 13-02-2020, 11:50
Son Mesaj: murataltun79
  [SORGU] Sorguda Dsum Işlevi Kullanımı Hk tekinuy 9 289 17-01-2020, 13:49
Son Mesaj: halily
  [SORGU] Dcount Içerisinde Lıke Kullanımı ozgurgun 3 420 09-01-2020, 17:20
Son Mesaj: ozgurgun
  [SORGU] Like Kullanımı husem 7 589 29-12-2019, 23:58
Son Mesaj: husem

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi