AccessTr.neT
Sorguda Hesaplama Hapmak. - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Sorguda Hesaplama Hapmak. (/konu-sorguda-hesaplama-hapmak.html)

Sayfalar: 1 2 3


RE: Sorguda Hesaplama Hapmak. - berduş - 13/04/2023

rica ederim
iyi çalışmalar)


RE: Sorguda Hesaplama Hapmak. - berduş - 13/04/2023

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)


RE: Sorguda Hesaplama Hapmak. - berduş - 14/04/2023

Yalniz verilerinizin tam sayı olduğu varsayılmıştır


RE: Sorguda Hesaplama Hapmak. - berduş - 14/04/2023

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;



RE: Sorguda Hesaplama Hapmak. - Acemi54 - 14/04/2023

(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.


RE: Sorguda Hesaplama Hapmak. - berduş - 14/04/2023

Rica ederim
İyi çalışmalar )