1

i have a query that select the data when in between value, here is my sql query, this query works well when i run in sql

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALtER PROC [dbo].[iu_get_inventaris] 
    @id_inventaris varchar(15),
    @RTanggalPinjam date,
    @RTanggalKembali date
AS
BEGIN
        SELECT (d.dt_jumlah), d.dt_id_inventaris, d.dt_id_detailpeminjaman FROM iu_trdetail_peminjaman d 
        JOIN iu_msinventaris p on d.dt_id_inventaris = p.in_id_inventaris and p.in_id_inventaris = @id_inventaris
        WHERE 
        d.dt_tgl_pinjam between @RtanggalPinjam and @RtanggalKembali and d.dt_tgl_kembali between @RtanggalPinjam and  @RtanggalKembali or
        d.dt_tgl_pinjam between @RtanggalPinjam and @RtanggalKembali and @RtanggalKembali between d.dt_tgl_pinjam and d.dt_tgl_kembali or
        @RtanggalPinjam between d.dt_tgl_pinjam and @RtanggalKembali and @RtanggalKembali between @RtanggalPinjam and d.dt_tgl_kembali or
        @RtanggalPinjam between d.dt_tgl_pinjam and d.dt_tgl_kembali and d.dt_tgl_kembali between @RtanggalPinjam and @RtanggalKembali or
        d.dt_tgl_pinjam = @RtanggalPinjam and p.in_kondisi_inventaris = 1 and p.in_status =1
END

then this query will be called in my asp.cs code like this

foreach (GridViewRow row in gridDetailPeminjaman.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
String tglPinjam = row.Cells[11].Text;
String tglKembali = row.Cells[10].Text;
DataTable stockValidate = new DataTable();
stockValidate = lib.CallProcedure("iu_get_inventaris", new string[] { id_inven, tglPinjam, tglKembali });
if (stockValidate.Rows.Count > 0)
{
lib.CallProcedure("iu_update_Detailpeminjaman", new string[] { roll, "1", id_inven, "0","3" });
}
else {
string script = "alert('Cannot do this transaction');";
                        ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script, true);
                        lib.CallProcedure("iu_update_Detailpeminjaman", new string[] { roll, "0", id_inven, "1","3" });
                    }}}

and this is the aspx code for the value in string tglPinjam and string tglKembali

<asp:BoundField DataField="dt_tgl_kembali" DataFormatString = "{0:yyyy-MM-dd}" ItemStyle-CssClass="hiddencol" HeaderText="ID" HeaderStyle-CssClass="hiddencol"  NullDisplayText="-" ItemStyle-HorizontalAlign="left"/>
 <asp:BoundField DataField="dt_tgl_pinjam" DataFormatString = "{0:yyyy-MM-dd}" ItemStyle-CssClass="hiddencol" HeaderText="ID" HeaderStyle-CssClass="hiddencol"  NullDisplayText="-" ItemStyle-HorizontalAlign="left"/>
                    

when i debug the code, the sp get the value perfectly, but it get error in the if condition, i tried with the same value in sql but it works, i have no idea why this is happend, i really need your help guys :) enter image description here

enter image description here

newbie3
  • 93
  • 6
  • What happens inside the _lib.CallProcedure_? What if it does return null instead of a DataTable? You are merryly using the return value without any check on its validity – Steve Dec 01 '20 at 16:46

0 Answers0