AccessTr.neT

Tam Versiyon: Stoktan Sevk Koşulunu Oluşturamıyorum
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Merhabalar,
sipariş yoğunluğuna göre stoğa veya siparişe göre üretim yapan bir firmadayım, bundan dolayı siparişleri önce stok adetlerini kontrol ettikten sonra sipariş girişinde sipariş miktarıyla beraber stoktan sevk edilecek miktarı da giriyoruz.
ekteki örnek uygulamada yapmak istediğim: ürünün sevk işlemleri sırasında sevk miktarı girildiğinde halihazırda toplam sevkedilen miktarı da göz önünde bulundurarak müşterisiz stoktan düşülecek miktarı hesaplamak istiyorum.
örneğin; (ekte Excel tablosuyla yapmak istediğimi de gösterdim)
a) Form1'de 1 nolu sipariş id'yi yazıp sipariş miktarı(12),stoktan sevk adedi(4),toplam sevkedilen(6) ve sevk bekleyen(6) otomatik geldikten sonra sevk miktarını 3 girince (sevk bekleyen değerden küçük eşit hangi değeri girersem gireyim) stoktan düşümü hesaplanan değer ilk giren ilk çıkar kuralına göre toplam sevk edilen değer stoktan sevk adedinden küçük olduğu için 0(sıfır)  değeri vermeli.
b) Form1'de 2 nolu sipariş id'yi yazıp sipariş miktarı(10),stoktan sevk adedi(0),toplam sevkedilen(0) ve sevk bekleyen(10) otomatik geldikten sonra sevk miktarını 6 girince (sevk bekleyen değerden küçük eşit hangi değeri girersem gireyim) stoktan sevk adedi 0(sıfır) olduğu için stoktan düşümü hesaplanan 0(sıfır)  değeri vermeli.
c) Form1'de 3 nolu sipariş id'yi yazıp sipariş miktarı(10),stoktan sevk adedi(2),toplam sevkedilen(1) ve sevk bekleyen(9) otomatik geldikten sonra sevk miktarını 7 girince stoktan sevk edilmeyi bekleyen (stoktan sevk adedi(2)-toplam sevkedilen(1)=1) 1 tane kaldığı ve sevk miktarı(7)ndan küçük olduğu için stoktan düşümü hesaplanan 1 değeri vermeli.
d) Form1'de 4 nolu sipariş id'yi yazıp sipariş miktarı(15),stoktan sevk adedi(10),toplam sevkedilen(5) ve sevk bekleyen(10) otomatik geldikten sonra sevk miktarını 4 girince stoktan sevk edilmeyi bekleyen (stoktan sevk adedi(10)-toplam sevkedilen(5)=5) 5 tane kaldığı ve sevk miktarı(4)ndan büyük olduğu için stoktan düşümü hesaplanan 4 değeri vermeli.
bu mantığı programda şu koşullarla yapmaya çalıştım ama bir türlü olmuyor, nerede hata yapıyorum bir türlü bulamadım.

Private Sub Komut22_Click()
If Me.sevk_adet > Me.sevk_bekleyen Then
   MsgBox "Sevk Bekleyenden daha büyük değer giremezsiniz!...", vbInformation, "SEVK İŞLEMLERİ"
   Me.sevk_adet = Me.sevk_bekleyen
Else
   Select Case Me.stoktan_sevk_adet
   Case 0
       Me.hesaplanan = 0
   Case Else
       Select Case Me.toplam_sevkedilen    'ilk giren ilk çıkar mantığına göre eğer toplam sevkedilen siparişin
       Case Is >= Me.stoktan_sevk_adet     'stoktan sevk edilecek miktarından büyükse stoktan rezerve edilenler zaten sevk edilmiştir.
           Me.hesaplanan = 0               'bundan dolayı stoktan sevk edilecek miktar 0'dır
       Case Else
           If (Me.stoktan_sevk_adet - Me.toplam_sevkedilen) <= Me.sevk_adet Then   'eğer siparişin daha stoktan sevkedilecek kalanı sevk miktarından küçük eşit ise
           Me.hesaplanan = (Me.stoktan_sevk_adet - Me.toplam_sevkedilen)           'hesaplanacak değer bu fark kadardır
           Else                                                                    'eğer bu fark büyükse
           Me.hesaplanan = Me.sevk_adet                                            'hesaplanan değer girilen sevk adedi kadardır
           End If
       End Select
   End Select
End If

End Sub
If Me.sevk_adet < Me.sevk_bekleyen Then

   MsgBox "Sevk Bekleyenden daha büyük değer giremezsiniz!...", vbInformation, "SEVK İŞLEMLERİ"
   Me.sevk_adet = Me.sevk_bekleyen

ElseIf Me.stoktan_sevk_adet = 0 Then

   Me.hesaplanan = 0

ElseIf Me.toplam_sevkedilen >= Me.stoktan_sevk_adet Then

   Me.hesaplanan = 0

ElseIf (Val(Me.stoktan_sevk_adet - Me.toplam_sevkedilen) <= Val(Me.sevk_adet)) Then

   Me.hesaplanan = (Me.stoktan_sevk_adet - Me.toplam_sevkedilen)
   
ElseIf (Val(Me.stoktan_sevk_adet - Me.toplam_sevkedilen) > Val(Me.sevk_adet)) Then

   Me.hesaplanan = Me.sevk_adet

Else

   Me.hesaplanan = Me.sevk_adet

End If

kodunu deneyiniz.
Hocam Teşekkür Ederim, Kod genel olarak başarılı ancak koşulların ilk aşaması olan sevk miktarının sevk bekleyenden büyük olmaması gerektiği kuralı işlemiyor, siz benim ilk koddaki darboğazı > işaretini < işaretine dönüştürerek aşmışsınız ancak bu asıl ilk koşul kontrolünü ortadan kaldırıyordu. problemi bu ilk koşul değişkenlerinin başına Val() ekleyerek çözdüm. kodun son hali :
If Val(Me.sevk_adet) > Val(Me.sevk_bekleyen) Then

   MsgBox "Sevk Bekleyenden daha büyük değer giremezsiniz!...", vbInformation, "SEVK İŞLEMLERİ"
   Me.sevk_adet = Me.sevk_bekleyen

ElseIf Val(Me.stoktan_sevk_adet) = 0 Then

   Me.hesaplanan = 0

ElseIf Val(Me.toplam_sevkedilen) >= Val(Me.stoktan_sevk_adet) Then

   Me.hesaplanan = 0

ElseIf ((Val(Me.stoktan_sevk_adet) - Val(Me.toplam_sevkedilen)) <= Val(Me.sevk_adet)) Then

   Me.hesaplanan = (Val(Me.stoktan_sevk_adet) - Val(Me.toplam_sevkedilen))
   
ElseIf (Val(Me.stoktan_sevk_adet) - Val(Me.toplam_sevkedilen)) > Val(Me.sevk_adet) Then

   Me.hesaplanan = Val(Me.sevk_adet)

Else

   Me.hesaplanan = Val(Me.sevk_adet)

End If


Problemim Çözülmüştür.