为什么变量在 select 查询中不起作用?
Why variable isn’t working in select query?
为什么当我使用绝对值时这有效,但当我尝试使用变量作为查询参数时查询 returns 没有数据?
private void SetBomNumber()
{
try
{
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) = '210002')) ", Cn);
da2.Fill(dt2);
if (dt2.Rows.Count > 0)
{
int BomNumber= Convert.ToInt32(dt2.Rows[0]["NewBomSerial"].ToString());
txtBomNum.Text = BomNumber.ToString();
MessageBox.Show("The Next Serial Is :" + BomNumber);
}
else
{
MessageBox.Show("The Query Doesn’t Work");
}
}
catch (Exception Err)
{
MessageBox.Show("This Error Occured :" + Err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
对于变量,这会显示错误消息“查询不起作用”?
private void SetBomNumber()
{
try
{
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) = @prcode)) ", Cn);
da2.SelectCommand.Parameters.AddWithValue("@prcode", "%" + txtprcode.Text + "%");
da2.Fill(dt2);
if (dt2.Rows.Count > 0)
{
int BomNumber= Convert.ToInt32(dt2.Rows[0]["NewBomSerial"].ToString());
txtBomNum.Text = BomNumber.ToString();
MessageBox.Show("The Next Serial Is :" + BomNumber);
}
else
{
MessageBox.Show("The Query Doesn’t Work");
}
}
catch (Exception Err)
{
MessageBox.Show("This Error Occured :" + Err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
此代码以其他形式运行没有问题,在此先感谢。
基于@DRapp 的评论,多亏了他,这对我有用:
如果您需要条件是变量的确切值,请使用:
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) = @prcode)) ", Cn);
da2.SelectCommand.Parameters.AddWithValue("@prcode", txtprcode.Text );
如果你需要条件像你可以使用的变量:
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) LIKE @prcode)) ", Cn);
da2.SelectCommand.Parameters.AddWithValue("@prcode", "%" +txtprcode.Text+ "%");
谢谢
为什么当我使用绝对值时这有效,但当我尝试使用变量作为查询参数时查询 returns 没有数据?
private void SetBomNumber()
{
try
{
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) = '210002')) ", Cn);
da2.Fill(dt2);
if (dt2.Rows.Count > 0)
{
int BomNumber= Convert.ToInt32(dt2.Rows[0]["NewBomSerial"].ToString());
txtBomNum.Text = BomNumber.ToString();
MessageBox.Show("The Next Serial Is :" + BomNumber);
}
else
{
MessageBox.Show("The Query Doesn’t Work");
}
}
catch (Exception Err)
{
MessageBox.Show("This Error Occured :" + Err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
对于变量,这会显示错误消息“查询不起作用”?
private void SetBomNumber()
{
try
{
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) = @prcode)) ", Cn);
da2.SelectCommand.Parameters.AddWithValue("@prcode", "%" + txtprcode.Text + "%");
da2.Fill(dt2);
if (dt2.Rows.Count > 0)
{
int BomNumber= Convert.ToInt32(dt2.Rows[0]["NewBomSerial"].ToString());
txtBomNum.Text = BomNumber.ToString();
MessageBox.Show("The Next Serial Is :" + BomNumber);
}
else
{
MessageBox.Show("The Query Doesn’t Work");
}
}
catch (Exception Err)
{
MessageBox.Show("This Error Occured :" + Err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
此代码以其他形式运行没有问题,在此先感谢。
基于@DRapp 的评论,多亏了他,这对我有用: 如果您需要条件是变量的确切值,请使用:
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) = @prcode)) ", Cn);
da2.SelectCommand.Parameters.AddWithValue("@prcode", txtprcode.Text );
如果你需要条件像你可以使用的变量:
da2 = new SqlDataAdapter("SELECT Products.[ProductCode], Max(ISNULL([BomNumber], 0) + 1) AS NewBomSerial FROM Products LEFT JOIN Bom ON Products.ProductCode = Bom.ProductCode GROUP BY Products.[ProductCode] HAVING(((Products.[ProductCode]) LIKE @prcode)) ", Cn);
da2.SelectCommand.Parameters.AddWithValue("@prcode", "%" +txtprcode.Text+ "%");
谢谢