AccessTr.neT

Tam Versiyon: Sorguda Hesaplama Hapmak.
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3
rica ederim
iyi çalışmalar)
farklı 1 yöntemle Kullanıcı Tanımlı Fonksiyon Kullanarak yaptım çok daha hızlı ve tüm alanları alıyor
öncelikle çalışmanıza bir modül ekleyip aşağıdaki kodları ekleyin
Dim xKalan As Long

Function VeriBol(xTERMIN As Long, xSiparis As Long, xSec As Byte) As Long
If xSec > 0 Then xSiparis = xKalan
If xSec < 2 Then
    xSonuc = IIf(xSiparis >= xTERMIN, xTERMIN, xSiparis)
    xKalan = xSiparis - xSonuc
Else
    xSonuc = xKalan 'IIf(xSiparis >= xKalan, xSiparis - xKalan, 0)
End If
VeriBol = xSonuc
End Function
sonra da sorgunuzun kodunu aşağıdaki kodla değiştirin
SELECT T_Veriler.STOK, T_Veriler.PLANLANAN, T_Veriler.SİPARİŞİ
, T_Veriler.TERMİN1, VeriBol(TERMİN1,SİPARİŞİ,0) AS GELEN1, VeriBol(TERMİN1,SİPARİŞİ,2) AS KALANSP1
, T_Veriler.TERMİN2, VeriBol(TERMİN2,SİPARİŞİ,1) AS GELEN2, VeriBol(TERMİN2,SİPARİŞİ,2) AS KALANSP2
, T_Veriler.TERMİN3, VeriBol(TERMİN3,SİPARİŞİ,1) AS GELEN3, VeriBol(TERMİN3,SİPARİŞİ,2) AS KALANSP3
, T_Veriler.TERMİN4, VeriBol(TERMİN4,SİPARİŞİ,1) AS GELEN4, VeriBol(TERMİN4,SİPARİŞİ,2) AS KALANSP4
, T_Veriler.TERMİN5, VeriBol(TERMİN5,SİPARİŞİ,1) AS GELEN5, VeriBol(TERMİN5,SİPARİŞİ,2) AS KALANSP5
, T_Veriler.TERMİN6, VeriBol(TERMİN6,SİPARİŞİ,1) AS GELEN6, VeriBol(TERMİN6,SİPARİŞİ,2) AS KALANSP6
, T_Veriler.TERMİN7, VeriBol(TERMİN7,SİPARİŞİ,1) AS GELEN7, VeriBol(TERMİN7,SİPARİŞİ,2) AS KALANSP7
, T_Veriler.TERMİN8, VeriBol(TERMİN8,SİPARİŞİ,1) AS GELEN8, VeriBol(TERMİN8,SİPARİŞİ,2) AS KALANSP8
, T_Veriler.TERMİN9, VeriBol(TERMİN9,SİPARİŞİ,1) AS GELEN9, VeriBol(TERMİN9,SİPARİŞİ,2) AS KALANSP9
, T_Veriler.TERMİN10, VeriBol(TERMİN10,SİPARİŞİ,1) AS GELEN10, VeriBol(TERMİN10,SİPARİŞİ,2) AS KALANSP10
, T_Veriler.TERMİN11, VeriBol(TERMİN11,SİPARİŞİ,1) AS GELEN11, VeriBol(TERMİN11,SİPARİŞİ,2) AS KALANSP11
, T_Veriler.TERMİN12, VeriBol(TERMİN12,SİPARİŞİ,1) AS GELEN12, VeriBol(TERMİN12,SİPARİŞİ,2) AS KALANSP12
FROM T_Veriler
ORDER BY T_Veriler.STOK;
dilerim işinize yarar)
Yalniz verilerinizin tam sayı olduğu varsayılmıştır
yada
fonksiyon kodu
Function VeriBol2(Optional xSec As Byte, Optional xTERMIN As Long, Optional xSiparis As Long) As Long
If IsNull(xSec) Then VeriBol2 = xKalan: Exit Function
If xSec = 1 Then xSiparis = xKalan
xSonuc = IIf(xSiparis >= xTERMIN, xTERMIN, xSiparis)
xKalan = xSiparis - xSonuc
VeriBol2 = xSonuc
End Function
sorgu kodu
SELECT T_Veriler.STOK, T_Veriler.PLANLANAN, T_Veriler.SİPARİŞİ
, T_Veriler.TERMİN1, VeriBol2(0,TERMİN1,SİPARİŞİ) AS GELEN1, VeriBol2() AS KALANSP1
, T_Veriler.TERMİN2, VeriBol2(1,TERMİN2) AS GELEN2, VeriBol2() AS KALANSP2
, T_Veriler.TERMİN3, VeriBol2(1,TERMİN3) AS GELEN3, VeriBol2() AS KALANSP3
, T_Veriler.TERMİN4, VeriBol2(1,TERMİN4) AS GELEN4, VeriBol2() AS KALANSP4
, T_Veriler.TERMİN5, VeriBol2(1,TERMİN5) AS GELEN5, VeriBol2() AS KALANSP5
, T_Veriler.TERMİN6, VeriBol2(1,TERMİN6) AS GELEN6, VeriBol2() AS KALANSP6
, T_Veriler.TERMİN7, VeriBol2(1,TERMİN7) AS GELEN7, VeriBol2() AS KALANSP7
, T_Veriler.TERMİN8, VeriBol2(1,TERMİN8) AS GELEN8, VeriBol2() AS KALANSP8
, T_Veriler.TERMİN9, VeriBol2(1,TERMİN9) AS GELEN9, VeriBol2() AS KALANSP9
, T_Veriler.TERMİN10, VeriBol2(1,TERMİN10) AS GELEN10, VeriBol2() AS KALANSP10
, T_Veriler.TERMİN11, VeriBol2(1,TERMİN11) AS GELEN11, VeriBol2() AS KALANSP11
, T_Veriler.TERMİN12, VeriBol2(1,TERMİN12) AS GELEN12, VeriBol2() AS KALANSP12
FROM T_Veriler
ORDER BY T_Veriler.STOK;
(14/04/2023, 03:50)berduş yazdı: [ -> ]yada
fonksiyon kodu
Function VeriBol2(Optional xSec As Byte, Optional xTERMIN As Long, Optional xSiparis As Long) As Long
If IsNull(xSec) Then VeriBol2 = xKalan: Exit Function
If xSec = 1 Then xSiparis = xKalan
    xSonuc = IIf(xSiparis >= xTERMIN, xTERMIN, xSiparis)
    xKalan = xSiparis - xSonuc
VeriBol2 = xSonuc
End Function
sorgu kodu
SELECT T_Veriler.STOK, T_Veriler.PLANLANAN, T_Veriler.SİPARİŞİ
, T_Veriler.TERMİN1, VeriBol2(0,TERMİN1,SİPARİŞİ) AS GELEN1, VeriBol2() AS KALANSP1
, T_Veriler.TERMİN2, VeriBol2(1,TERMİN2) AS GELEN2, VeriBol2() AS KALANSP2
, T_Veriler.TERMİN3, VeriBol2(1,TERMİN3) AS GELEN3, VeriBol2() AS KALANSP3
, T_Veriler.TERMİN4, VeriBol2(1,TERMİN4) AS GELEN4, VeriBol2() AS KALANSP4
, T_Veriler.TERMİN5, VeriBol2(1,TERMİN5) AS GELEN5, VeriBol2() AS KALANSP5
, T_Veriler.TERMİN6, VeriBol2(1,TERMİN6) AS GELEN6, VeriBol2() AS KALANSP6
, T_Veriler.TERMİN7, VeriBol2(1,TERMİN7) AS GELEN7, VeriBol2() AS KALANSP7
, T_Veriler.TERMİN8, VeriBol2(1,TERMİN8) AS GELEN8, VeriBol2() AS KALANSP8
, T_Veriler.TERMİN9, VeriBol2(1,TERMİN9) AS GELEN9, VeriBol2() AS KALANSP9
, T_Veriler.TERMİN10, VeriBol2(1,TERMİN10) AS GELEN10, VeriBol2() AS KALANSP10
, T_Veriler.TERMİN11, VeriBol2(1,TERMİN11) AS GELEN11, VeriBol2() AS KALANSP11
, T_Veriler.TERMİN12, VeriBol2(1,TERMİN12) AS GELEN12, VeriBol2() AS KALANSP12
FROM T_Veriler
ORDER BY T_Veriler.STOK;

Teşekkür ederim hocam sen ne iyi insansın sağolasın.
Rica ederim
İyi çalışmalar )
Sayfalar: 1 2 3