[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: 77)



  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
  Dcount Kullanımı. Satir 22 693 15-03-2024, 17:09
Son Mesaj: Satir
  Access Projesi Için Onedrive Kullanımı ccollezium 2 146 14-02-2024, 16:53
Son Mesaj: ccollezium
  [SORGU] ııf Ve ıs Not Null Birlkite Kullanımı Samih KARSLI 11 316 05-12-2023, 12:14
Son Mesaj: halily
  Autoexec Kullanımı ates2014 8 212 12-11-2023, 17:42
Son Mesaj: BeyTor
  [SORGU] Sorguda Iif mart02 7 228 10-09-2023, 14:23
Son Mesaj: halily
  Döngü Ile Veri Alma ates2014 5 171 26-08-2023, 01:38
Son Mesaj: halily
  Sql Satırında Değişken Kullanımı Hakkında Yardım programmer67 3 179 26-04-2023, 12:02
Son Mesaj: halily
  Döngü Ile Koşula Dayalı Klasör Içerisindeki Dosyaları Silme Mr.Midnight 2 212 19-11-2022, 22:46
Son Mesaj: alperalper

Foruma Git:


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