Two Dates Parameters in SQL Function
I have a page like this

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.
加载中,请稍侯......
精彩评论