在 Visual Studio 中的 asp.net c#代码中,我开发了一个搜索按钮。当我尝试运行代码时,它在编写代码时没有返回任何内容。我认为问题是stat_leger
是用阿拉伯语写的。
SqlParameter[] para = new SqlParameter[4];
para[0] = new SqlParameter("@stat_leger", ddlACCcode.SelectedValue);
para[1] = new SqlParameter("@branch", DDLBranch.SelectedValue);
para[2] = new SqlParameter("@from", db.getDate(txtFrom.Text));
para[3] = new SqlParameter("@to", db.getDate(txtTo.Text));
DataTable dtreport = db.SelectCmdText("Select * from PostedVoucher join transactions on trans_code = stat_trans_code where stat_leger = @stat_leger and branch=@branch and stat_date between @from and @to ORDER BY stat_date ", para);
GridView1.DataSource = dtreport;
GridView1.DataBind();
float GTotal = 0;
float GTotalcrd = 0;
float GTotaldeb = 0;
当我尝试在sql server中编写相同的select时,它有效。但是对于阿拉伯语,我使用了N
并返回了记录。
Select * from PostedVoucher join transactions on trans_code =
stat_trans_code
where stat_sub_leger = N'الصندوق' and branch= N'الفرع الرئيسي' and stat_date between '2013-12-05 00:00:00.000' AND '2013-12-05 00:00:00.000' ORDER BY stat_date ;
我尝试在select中编写它但仍无法正常工作:
DataTable dtreport = db.SelectCmdText("Select * from PostedVoucher join transactions on trans_code = stat_trans_code where stat_sub_leger = N'@stat_sub_leger' and branch=@branch and stat_date between @from and @to ORDER BY stat_date ", para);
答案 0 :(得分:0)
尝试更改您的查询,样本:
Select * from PostedVoucher join transactions on trans_code = stat_trans_code where stat_leger like '%' + @stat_leger + '%' OR branch like '%' + @branch + '%' AND stat_date between @from and @to ORDER BY stat_date ", para);
答案 1 :(得分:0)
我认为它可能会这样:
para[0] = new SqlParameter("@stat_leger", "N'"+ddlACCcode.SelectedValue+"'")
然后在asp.net中使用您的查询:
DataTable dtreport = db.SelectCmdText(
"Select * from PostedVoucher join transactions on trans_code = stat_trans_code where stat_sub_leger = N'@stat_sub_leger' and branch=@branch and stat_date between @from and @to ORDER BY stat_date ",
para);
然后总是建议打印最后的SQL命令以查看它是否与正确的SQL命令形式匹配