2013-02-21 45 views
0

错误文本:Incorrect syntax near '='.在SQL选择查询中'='错误附近的语言不对称语法

我的代码中的错误是什么? 如何选择正确 此代码来确定这是否找到或没有

其所有我的代码PLZ检查它

它来检查我的价值和更新一些它 或插入

ssssssssssssssssssssssssssssssssssssssssssssssssssssssss

//Test For Insert Duplicate Row 
         int tst = 0; 

         SqlCommand cmd = new SqlCommand("Select Count(*) From Product Where [email protected] And ProdName= @NameVar And [email protected]",conn); 
         cmd.Parameters.Add("@CodeVar", SqlDbType.Int).Value = Convert.ToDouble(dataGridView1.Rows[x].Cells[1].Value); 
         cmd.Parameters.Add("@NameVar", SqlDbType.NVarChar).Value = dataGridView1.Rows[x].Cells[2].Value; 
         cmd.Parameters.Add("@PriceVar", SqlDbType.Money).Value = Convert.ToDouble(dataGridView1.Rows[x].Cells[4].Value); 
         cmd.CommandType = CommandType.Text; 
         conn.Open(); 
         SqlDataReader reader= cmd.ExecuteReader(); 
         if(reader.Read()) 
         { 

          if (Convert.ToInt16(reader[0]) > 0) 
          { 
           tst = 1; 
          } 
         } 
         reader.Close(); 
         conn.Close(); 
         // Test For Same Row But Anthor Code 
         cmd.CommandText = "Select Count(*) From Product Where [email protected] And [email protected] And Not ProdCode = @Pcode And ProdCode BETWEEN @SCode And @SCode+2000"; 
         cmd.CommandType = CommandType.Text; 
         cmd.Parameters.Add("@PName",SqlDbType.NVarChar).Value = dataGridView1.Rows[x].Cells[2].Value ; 
         cmd.Parameters.Add("@BPrice", SqlDbType.Money).Value = Convert.ToDouble(dataGridView1.Rows[x].Cells[5].Value); 
         cmd.Parameters.Add("@Pcode",SqlDbType.Int).Value = Convert.ToInt32(dataGridView1.Rows[x].Cells[1].Value); 
         cmd.Parameters.Add("@SCode", SqlDbType.Decimal).Value = Convert.ToDecimal(label10.Text); 
         cmd.CommandType = CommandType.Text; 
         conn.Open(); 
         reader = cmd.ExecuteReader(); 
         if(reader.Read()) 
         { 
          if(Convert.ToInt16(reader[0])>0) 
          { 
           tst = 2; 
          } 

         } 
         reader.Close(); 
         conn.Close(); 
         cmd.CommandText = "Select Count(*) From Product Where ProdCode = @CodeVar1 "; 
         cmd.Parameters.Add("@CodeVar1", SqlDbType.Int).Value = Convert.ToInt32(dataGridView1.Rows[x].Cells[1].Value); 
         cmd.CommandType = CommandType.Text; 
         conn.Open(); 
         reader= cmd.ExecuteReader(); 
         if (reader.Read()) 
         { 

          if (Convert.ToInt16(reader[0]) > 0 && tst == 0) 
          { 
           MessageBox.Show("الأكواد باللون الأحمر خاصة احد الأصناف ..!"); 
           dataGridView1.Rows[x].Cells[1].Style = redcell; 
           return; 
          } 
         } 
         reader.Close(); 
         conn.Close(); 

回答

3

你应该尝试ProdCode != @Pcode或更换ProdCode Not = @Pcode 0或Not ProdCode = @Pcode

所有应在TSQL中有效。

+1

更换您的SQL命令的ProdCode Not = @Pcode或者只是坚持了不在状态的面前! – 2013-02-21 11:15:40

+1

@JonEgerton - 增加了这种可能性以及我的答案。谢谢。 – 2013-02-21 11:16:54

+0

@ØyvindKnobloch-Bråthen它的确定但是,这个错误显示编辑后如你所说 无效的尝试调用阅读器关闭时读取。 – 2013-02-21 11:22:14

2

变化

and ProdCode Not = @Pcode 

and not ProdCode = @Pcode 
+0

它确定但这个错误显示后编辑正如你所说在阅读器关闭时尝试调用Read。 – 2013-02-21 11:23:03

+0

那是一个完全不同的故事。 – 2013-02-21 11:25:35

+0

在调用'cmd'构造函数之前尝试执行'con.Open()'**。 – 2013-02-21 11:29:34

1

您需要ProdCode <> @Pcode