Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 7 của 7
  1. #1
    Trong ChiPhi_Search đây
    Mã:
    public DataTable ChiPhi_Search(int idCP, string strStartDate,string strToDate)
            {
                SqlParameter[] arrParam = {
                    new SqlParameter("@idCP", SqlDbType.NVarChar),
                    new SqlParameter("@StartDate", SqlDbType.NVarChar),
                    new SqlParameter("@ToDate", SqlDbType.NVarChar)
                    };
                arrParam[0].Value = idCP;
                arrParam[1].Value = strStartDate;
                arrParam[2].Value = strToDate;
                return ThucThiStoreTraVeBang("spTB_ChiPhi_Search", arrParam);
            }
    Còn Procedure của SQL
    Mã:
    ALTER PROCEDURE [dbo].[spTB_ChiPhi_Search]
    @idCP INT,
    @StartDate NVARCHAR(20),
    @ToDate NVARCHAR(20)
    AS
    BEGIN
    	
    	DECLARE @SQL NVARCHAR(4000),@SQLDK NVARCHAR(1000)
    	SET @SQL='
    		SELECT     tcpp.idCP, tcpp.idPB, tpb.TenPB, 
    				tcpp.SoTien, tcpp.NoiDung, 
                          tcpp.NgayNhap
    		FROM         TB_ChiPhiPhong tcpp INNER JOIN
                          TB_PhongBan tpb ON tcpp.idPB = tpb.idPB 
            WHERE ''1''=''1'''
    	--Tìm theo mã chi phí
    	IF @idCP<>'0'
    		SET @SQLDK= ' And tcpp.idCP='+cast(@idCP As varchar(20))
    	-- Tìm theo ngày
    	IF (@StartDate<>'' OR @ToDate<>0)
    		SET @SQLDK= ' and tcpp.NgayNhap between dbo.ChuyenTextSangDateTime('''+ @StartDate+''') and dbo.ChuyenTextSangDateTime('''+@ToDate+''' )'
    		EXEC (@SQL+@SQLDK)
    		--PRINT @SQL+@SQLDK
    END

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hay nhỉ?
    bạn chạy Procedure đúng chứ?
    mình thường add luôn biến Datetime vào SQLCommand, chắc là khó đây....

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    OK rồi bạn ạ. do bị lỗi lúc gọi hàm
    Mã:
    LoadData(int.Parse(txtMaCP.Text + ""), txtStartDate.Text.ToString(), txtToDate.Text.ToString());
    thì thằng int.Parse(txtMaCP.Text + "" có giá trị bằng 0 nên nó không convert được, chứ không phải do datetime. Cảm ơn các bạn đã trả lời

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lỗi gọi ngày tháng không đúng định dạng

    Mình có hàm và biến như sau:

    Mã:
    private void LoadData(int idCP, string StartDate,string ToDate)
    nhưng lúc gọi thì nó báo không đúng định dạng
    Mã:
     LoadData(int.Parse(txtMaCP.Text + ""), txtStartDate.Text.ToString(), txtToDate.Text.ToString());
    mặc dù lúc load mình đã định dạng thế này rồi
    Mã:
    txtStartDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
                txtToDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
    ai biết cách khắc phục chỉ giúp. Cảm ơn!

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi haocaocu
    Mình có hàm và biến như sau:

    Mã:
    private void LoadData(int idCP, string StartDate,string ToDate)
    nhưng lúc gọi thì nó báo không đúng định dạng
    Mã:
     LoadData(int.Parse(txtMaCP.Text + ""), txtStartDate.Text.ToString(), txtToDate.Text.ToString());
    mặc dù lúc load mình đã định dạng thế này rồi
    Mã:
    txtStartDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
                txtToDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
    ai biết cách khắc phục chỉ giúp. Cảm ơn!
    Bạn cho mọi người xem phương thức LoadData, nhưng mình thấy dùng Parameter thì hay hơn và khó bị SQL Inject hơn
    bạn nên dùng Parameter

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters%28v=vs .110%29.aspx

  6. #6
    Hàm LoadData đây bạn
    Mã:
    private void LoadData(int idCP, string StartDate,string ToDate)
        {
            hmweb.Services.cChuyenMuc mChiPhi = new hmweb.Services.cChuyenMuc();
            DataTable dtb = new DataTable();
            dtb = mChiPhi.ChiPhi_Search(idCP, StartDate, ToDate);
            if (dtb.Rows.Count > 0)
            {
                pnlDanhSach.GroupingText = "Tìm thấy " + dtb.Rows.Count.ToString() + " mã chi phí";
                grvDanhSach.DataSource = dtb;
                grvDanhSach.DataBind();
            }
            else
            {
                pnlDanhSach.GroupingText = "Tìm thấy 0 mã chi phí";
            }
            mChiPhi = null;
        }
    hàm này load ngon lành, nó load dữ liệu lên gỉdview ok.mình cũng dùng Parameter để add dữ liệu được thực hiện bởi procedure trong sql (trong sql 2 biến ngày tháng mình đổi string sang datetime rồi)

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hic, ChiPhi_Search lại còn cái này nữa [IMG]images/smilies/wings_no.gif[/IMG]

    trong method ChiPhi_Search chắc là bạn dùng ghép chuỗi? mình không nghĩ cách này tốt, bạn thử dùng chính DateTime đưa thẳng vào command dùng Parameter xem?

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •