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.
精彩评论