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: 16)



  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
  Sql Içinde Değişken Kullanımı Ile "desteklenmeyen Join Ifadesi" Hatası tarkanay 7 79 Dün, 15:42
Son Mesaj: tarkanay
  Dlookup Fonksiyonuna Degisken Kullanimi tarkanay 2 74 13-10-2020, 13:47
Son Mesaj: tarkanay
  [SORGU] Koşullu Sorguda ııf Ile ın() Veya Not ın () Kullanımı Birleşik Giriş Kut. çalıştırma sarsak 8 256 14-08-2020, 15:22
Son Mesaj: sarsak
  [SORGU] Sorgu Da ölçüt Kullanımı fukufat 5 159 07-08-2020, 08:39
Son Mesaj: fukufat
  "ın" Kullanımı Satir 4 221 24-04-2020, 17:58
Son Mesaj: Satir
  Access Sorguda Toplama enginceken 7 319 20-04-2020, 07:18
Son Mesaj: dsezgin
  [VBA] Birden Fazla Koşullu Sorgu Metodlu Combobox Kullanımı Lenadro 2 283 27-02-2020, 15:16
Son Mesaj: Lenadro
  Sorguda Concatrelated Sorunu murataltun79 6 268 13-02-2020, 11:50
Son Mesaj: murataltun79

Foruma Git:


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