开发者

Two Dates Parameters in SQL Function

开发者 https://www.devze.com 2023-02-17 15:32 出处:网络
I have a page like this In my SQL, I want calculate开发者_运维百科 some value between these days

I have a page like this

Two Dates Parameters in SQL Function

In my SQL, I want calculate开发者_运维百科 some value between these days

And this is my code;

strQuery = @"SELECT  B.HESAP_NO, A.TEKLIF_NO1 + '/' + A.TEKLIF_NO2 AS 'TEKLIF',
B.MUS_K_ISIM, CONVERT(VARCHAR(10),A.ISL_TAR,103) AS 'TARIH',
SUM(ISNULL(CAST(A.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(A.FAIZ AS FLOAT),0)+
      ISNULL(CAST(A.BSMV AS FLOAT),0)+ISNULL(CAST(A.GECIKME_FAIZ AS FLOAT),0)+
      ISNULL(CAST(A.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 
      (CASE WHEN B.DOVIZ_KOD = 21 THEN 'EUR' WHEN B.DOVIZ_KOD = 2 THEN 'USD' WHEN B.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR',
      D.AVUKAT, 
     (CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN 
     (SELECT ICRA_TAR FROM TAKIP WHERE T_HESAP_NO = D.HESAP)
     ELSE ' ' END) AS 'ICRA TARİHİ', 
     (CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN 
     (SELECT HACIZ_TAR FROM TAKIP WHERE T_HESAP_NO = D.HESAP)
     ELSE '' END) AS 'HACİZ TARİHİ'
FROM YAZ..MARDATA.BIR_TAHSIL A, YAZ..MARDATA.S_TEKLIF B, AVUKAT D
WHERE A.TEKLIF_NO1 = B.TEKLIF_NO1
AND A.TEKLIF_NO2 = B.TEKLIF_NO2
AND B.HESAP_NO = D.HESAP
AND A.HESAP_NO = D.HESAP ";


    if (txtBoxText1 != "")
    {
        strQuery = strQuery + " AND A.ISL_TAR >= @S_TARIH_B";

      dt_stb = DateTime.Parse(txtBoxText1);
      myCommand.Parameters.AddWithValue("@S_TARIH_B", dt_stb);
    }

    if (txtBoxText2 != "")
    {
        strQuery = strQuery + " AND A.ISL_TAR <= @S_TARIH_S";
      dt_sts = DateTime.Parse(txtBoxText2);
      myCommand.Parameters.AddWithValue("@S_TARIH_S", dt_sts);
    }

    strQuery = strQuery + " GROUP BY B.HESAP_NO, A.TEKLIF_NO1 + '/' + A.TEKLIF_NO2,A.ISL_TAR,B.DOVIZ_KOD ,B.MUS_K_ISIM, D.AVUKAT, D.HESAP";

And this is my Function;

ALTER FUNCTION [dbo].[fngcodeme]
(
    @HESAP INT,@BAS DATE, @BIT DATE,@DOV INT
)
RETURNS FLOAT

AS
BEGIN

RETURN( 
    SELECT SUM(TUTAR)
    FROM YAZ..MARDATA.M_GHAREKET
    WHERE TEMEL_HESAP = @HESAP
    AND DOVIZ_KOD = @DOV
    AND REF_KOD = 'GC'
    AND BACAK_GRUP = 'PERT'
    AND ISL_KOD = 1
    AND ISL_TAR >= @BAS 
    AND ISL_TAR <= @BIT
)
END

What I want getting a value in this code with this function.

@BAS is Start Date, @BIT is End Date

How can I associate @BAS with Textbox1 and @BIT with Textbox2 ?


You already did a similar thing with your code.

strQuery = @"SELECT  fngcodeme(@HESAP, @BAS, @BIT, @DOV)";

dt_stb = DateTime.Parse(txtBoxText1);
myCommand.Parameters.AddWithValue("@BAS", dt_stb);
dt_sts = DateTime.Parse(txtBoxText2);
myCommand.Parameters.AddWithValue("@BIT", dt_sts)

// do it for @Hesap and @Dov


Use the language independent form to provide date to the parameter of command because that will work irrespective of the language of the login user.Following is the list of language independent formats for specifying a date parameter.

For DATETIME use: 'YYYYMMDD hh:mm:ss.nnn', 'YYYY-MM-DDThh:mm:ss.nnn' ,'YYYYMMDD' For SMALLDATETIME use: 'YYYYMMDD hh:mm', 'YYYY-MM-DDThh:mm' , 'YYYYMMDD' For DATE use" 'YYYYMMDD', 'YYYY-MM-DD'

DateTime.Parse is dependent of current culture and the current culture may Parse your string in TextBox differently, so using the language independent form will be better.

0

精彩评论

暂无评论...
验证码 换一张
取 消