在应使用条件的上下文(在 'dt_Receiv' 附近)中指定了非布尔类型的表达式
2012-03-11 21:56
591 查看
//查询按钮
private void btnSearch_Click(object sender, EventArgs e)
{
this.dgvDateReport.DataSource = null; //清空日报
try
{
//string strRow = "vc_EmployeeName";
//string strRowTitle = "姓名";
string strRowCondtion = " where " + GetSearchStringRow(); //获得查询条件 " where vc_EmployeeName='小李'";
string strColCondtion = " where " + GetSearchStringCol(); //获得查询条件 " where vc_EmployeeName='小李'";
//执行存储过程建立日报表
DBOperater.ExecuteSPCreatDayReaport(strRowCondtion, strColCondtion);
dgvDateReport.DataSource = null; //清空数据
string strSQL = "select * from temp";
DataSet dt = SQLHelper.ExecuteDataSet(strSQL);
if (dt != null)
{
dgvDateReport.DataSource = dt.Tables[0].DefaultView; //查询已处理的短信列表SMS_DateReport
}
kryptonHeaderGroup2.ValuesSecondary.Heading = "当前记录: " + dgvDateReport.Rows.Count.ToString() + " 条";
}
catch (Exception ex)
{
DBOperater.LogWriter("SMS.Views.LoadBill error:" + ex.Message);
}
}
//获取列查询字符串
private string GetSearchStringCol()
{
string strTemp = "";
if (chkStart.Checked)
{
strTemp += "dt_ReceiveTime >='" + dtpStart.Value.Date + "' and ";
}
if (chkEnd.Checked)
{
strTemp += "dt_ReceiveTime <='" + dtpEnd.Value.Date + "' and ";
}
strTemp += "1=1";
return strTemp;
}
public static bool ExecuteSPCreatDayReaport(string strRowCondtion, string strColCondtion) //SqlParameter
{
SqlParameter[] strSqlParameter = {
new SqlParameter("@strTabName",SqlDbType.VarChar,50),
new SqlParameter("@strTemTabName",SqlDbType.VarChar,50),
new SqlParameter("@strCol",SqlDbType.VarChar,50),
new SqlParameter("@strRow",SqlDbType.VarChar,50),
new SqlParameter("@strRowTitle",SqlDbType.VarChar,50),
new SqlParameter("@strRowCondtion",SqlDbType.VarChar,50),
//new SqlParameter("@strColCondtion",SqlDbType.VarChar,50) //原因在此处,定义的字符串太小,导致字符串被截断
new SqlParameter("@strColCondtion",SqlDbType.VarChar,500) //定义大一点,成功
};
strSqlParameter[0].Value = "SMS_DateReport";
strSqlParameter[1].Value = "temp";
strSqlParameter[2].Value = "left(convert(varchar(20),dt_ReceiveTime,120),10)";
strSqlParameter[3].Value = "vc_EmployeeName";
strSqlParameter[4].Value = "姓名"; //strRowTitle; //"姓名";
strSqlParameter[5].Value = strRowCondtion; // " where vc_EmployeeName='小李'";
strSqlParameter[5].Value = strColCondtion; // " where left(convert(varchar(20),dt_ReceiveTime,120),10)<=''2012-02-28''';
if (SQLHelper.ExecuteSQLStoredProcedure(strSqlParameter, "CreatDayReaport") > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 直接执行一条简单的sql语句
/// </summary>
/// <param name="strSql">sql语句</param>
/// <returns></returns>
public static int ExecuteSQLStoredProcedure(SqlParameter[] prams,string spName)
{
//if (DBConnectionCheck() == "连接成功!")
//{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
try
{
if (conn.State != ConnectionState.Open)
conn.Open();
SqlCommand cmd = new SqlCommand(spName, conn);
cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter Prams in prams)
{
cmd.Parameters.Add(Prams);
}
int val = cmd.ExecuteNonQuery(); //此处出错“在应使用条件的上下文(在 'dt_Receiv' 附近)中指定了非布尔类型的表达式”
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return val;
}
catch (Exception ex)
{
DBOperater.LogWriter("SQLHelper.ExecuteSQLStoredProcedure error:" + ex.Message);
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return -1;
}
}
}
出现此错误的原因
private void btnSearch_Click(object sender, EventArgs e)
{
this.dgvDateReport.DataSource = null; //清空日报
try
{
//string strRow = "vc_EmployeeName";
//string strRowTitle = "姓名";
string strRowCondtion = " where " + GetSearchStringRow(); //获得查询条件 " where vc_EmployeeName='小李'";
string strColCondtion = " where " + GetSearchStringCol(); //获得查询条件 " where vc_EmployeeName='小李'";
//执行存储过程建立日报表
DBOperater.ExecuteSPCreatDayReaport(strRowCondtion, strColCondtion);
dgvDateReport.DataSource = null; //清空数据
string strSQL = "select * from temp";
DataSet dt = SQLHelper.ExecuteDataSet(strSQL);
if (dt != null)
{
dgvDateReport.DataSource = dt.Tables[0].DefaultView; //查询已处理的短信列表SMS_DateReport
}
kryptonHeaderGroup2.ValuesSecondary.Heading = "当前记录: " + dgvDateReport.Rows.Count.ToString() + " 条";
}
catch (Exception ex)
{
DBOperater.LogWriter("SMS.Views.LoadBill error:" + ex.Message);
}
}
//获取列查询字符串
private string GetSearchStringCol()
{
string strTemp = "";
if (chkStart.Checked)
{
strTemp += "dt_ReceiveTime >='" + dtpStart.Value.Date + "' and ";
}
if (chkEnd.Checked)
{
strTemp += "dt_ReceiveTime <='" + dtpEnd.Value.Date + "' and ";
}
strTemp += "1=1";
return strTemp;
}
public static bool ExecuteSPCreatDayReaport(string strRowCondtion, string strColCondtion) //SqlParameter
{
SqlParameter[] strSqlParameter = {
new SqlParameter("@strTabName",SqlDbType.VarChar,50),
new SqlParameter("@strTemTabName",SqlDbType.VarChar,50),
new SqlParameter("@strCol",SqlDbType.VarChar,50),
new SqlParameter("@strRow",SqlDbType.VarChar,50),
new SqlParameter("@strRowTitle",SqlDbType.VarChar,50),
new SqlParameter("@strRowCondtion",SqlDbType.VarChar,50),
//new SqlParameter("@strColCondtion",SqlDbType.VarChar,50) //原因在此处,定义的字符串太小,导致字符串被截断
new SqlParameter("@strColCondtion",SqlDbType.VarChar,500) //定义大一点,成功
};
strSqlParameter[0].Value = "SMS_DateReport";
strSqlParameter[1].Value = "temp";
strSqlParameter[2].Value = "left(convert(varchar(20),dt_ReceiveTime,120),10)";
strSqlParameter[3].Value = "vc_EmployeeName";
strSqlParameter[4].Value = "姓名"; //strRowTitle; //"姓名";
strSqlParameter[5].Value = strRowCondtion; // " where vc_EmployeeName='小李'";
strSqlParameter[5].Value = strColCondtion; // " where left(convert(varchar(20),dt_ReceiveTime,120),10)<=''2012-02-28''';
if (SQLHelper.ExecuteSQLStoredProcedure(strSqlParameter, "CreatDayReaport") > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 直接执行一条简单的sql语句
/// </summary>
/// <param name="strSql">sql语句</param>
/// <returns></returns>
public static int ExecuteSQLStoredProcedure(SqlParameter[] prams,string spName)
{
//if (DBConnectionCheck() == "连接成功!")
//{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
try
{
if (conn.State != ConnectionState.Open)
conn.Open();
SqlCommand cmd = new SqlCommand(spName, conn);
cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter Prams in prams)
{
cmd.Parameters.Add(Prams);
}
int val = cmd.ExecuteNonQuery(); //此处出错“在应使用条件的上下文(在 'dt_Receiv' 附近)中指定了非布尔类型的表达式”
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return val;
}
catch (Exception ex)
{
DBOperater.LogWriter("SQLHelper.ExecuteSQLStoredProcedure error:" + ex.Message);
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return -1;
}
}
}
出现此错误的原因
相关文章推荐
- 未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。
- 在应使用条件的上下文(在 'xxx' 附近)中指定了非布尔类型的表达式.
- 未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。
- 未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。
- 在应使用条件的上下文(在 'between@P1' 附近)中指定了非布尔类型的表达式。 ; unc
- 存储过程报错(在应使用条件的上下文中指定了非布尔类型的表达式!)
- SQLSERVER出错提示:此上下文中不允许使用''。此处只允许使用常量、表达式或变量。不允许使用列名。
- 查询条件为日期时报’无效的列类型'错误方法解决
- 使用PowerBuilder 9编绎DLL类型,有点问题.处理过程记录如下."Error opening file 'c:\windows\system32\cgen\en32t.h'"
- 在 React 条件渲染中使用三元表达式和 “&&”
- 在此上下文中不允许使用名称 ""。有效表达式包括常量、常量表达式和变量(
- 仅当使用了列的列表,并且IDENTITY_INSERT为ON时,才能在表'goldlog'中为标识列指定显式值
- [SqlException (0x80131904): 在此上下文中不允许使用名称 "XXX"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。]
- 关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类
- 错误类型:Microsoft JET Database Engine (0x80004005) 不能使用 '';文件已在使用中。
- 消息 8101,级别 16,状态 1,第 1 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'MyShop'中的标识列指定显式值。
- 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'stulnfo'中的标识列指定显式值。
- 错误提示: 在此上下文中不允许使用名称 "XXX"。有效表达式包括常量、 常量表达式和变量(在某些上下文中)。不允许使用列名。
- ASP.NET和ASP中使用OLEDB产生的错误:'0x80004005' 未指定的错误
- 无法确定条件表达式的类型,因为“<null>”和“int”之间没有隐式转换