Hi,
I keep getting the error:
System.Data.SqlClient.SqlException: Conversion failed when converting the varchar value '@.qty' to data type int.
When I initiate the insert and update.
I tried adding a: Convert.ToInt32(TextBox1.Text), but it didn't work..
Could someone help?
My code:
private bool ExecuteUpdate(int quantity)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\ASPNETDB.MDF;Integrated Security=True;User Instance=True";
con.Open();
SqlCommand command = new SqlCommand();
command.Connection = con;
TextBox TextBox1 = (TextBox)FormView1.FindControl("TextBox1");
Label labname = (Label)FormView1.FindControl("Label3");
Label labid = (Label)FormView1.FindControl("Label13");
command.CommandText = "UPDATE Items SET Quantityavailable = Quantityavailable - '@.qty' WHERE productID=@.productID";
command.Parameters.Add("@.qty", TextBox1.Text);
command.Parameters.Add("@.productID", labid.Text);
command.ExecuteNonQuery();
con.Close();
return true;
}
private bool ExecuteInsert(String quantity)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\ASPNETDB.MDF;Integrated Security=True;User Instance=True";
con.Open();
SqlCommand command = new SqlCommand();
command.Connection = con;
TextBox TextBox1 = (TextBox)FormView1.FindControl("TextBox1");
Label labname = (Label)FormView1.FindControl("Label3");
Label labid = (Label)FormView1.FindControl("Label13");
command.CommandText = "INSERT INTO Transactions (Usersname,Itemid,itemname,Date,Qty) VALUES (@.User,@.productID,@.Itemsname,@.date,@.qty)";
command.Parameters.Add("@.User", System.Web.HttpContext.Current.User.Identity.Name);
command.Parameters.Add("@.Itemsname", labname.Text);
command.Parameters.Add("@.productID", labid.Text);
command.Parameters.Add("@.qty", Convert.ToInt32(TextBox1.Text));
command.Parameters.Add("@.date", DateTime.Now.ToString());
command.ExecuteNonQuery();
con.Close();
return true;
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox TextBox1 = FormView1.FindControl("TextBox1") as TextBox;
ExecuteUpdate(Int32.Parse(TextBox1.Text) );
}
protected void Button2_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Update")
{
TextBox TextBox1 = FormView1.FindControl("TextBox1") as TextBox;
ExecuteInsert(TextBox1.Text);
}
}
Thanks so much if someone can!
Jon
Hi,
I think the problem lies in your Command Text. Try this:
command.CommandText = "UPDATE Items SET Quantityavailable = Quantityavailable - " + @.qty +" WHERE productID=@.productID";
Hope this helps.
|||
Hi,
I tried it but it gave me a different error message saying qty doesnt exist.
But actually the update seems to work - I think the problem lies with the insert commands..
Thanks,
Jon
|||
In your original post, you need to remove the single quotes around @.qty.
|||
sswanner1:
In your original post, you need to remove the single quotes around @.qty.
Hi,
I put them in when I got a syntax error 'near WHERE'..
If I take them away the error comes back..
|||
command.Parameters.Add("@.qty", TextBox1.Text); //need to convert into integer like Convert.ToInt32(TextBox1.Text)
TextBox.Text is string rather than integer. You need to valify and convert it to integer.
|||
Hi,
You mean just change the update parameter to the same as the insert parameter (@.qty)?
If so, I have done that but it still gives the same error...
Thanks,
Jon
|||
int qty = 0;
TextBox TextBox1 = (TextBox)FormView1.FindControl("TextBox1");
if(TextBox1 != null)
{
qty = int.parse(TextBox1.Text);
}
catch{}
command.CommandText = "UPDATE Items SET Quantityavailable = Quantityavailable -@.qty WHERE productID=@.productID";
command.Parameters.Add("@.qty",qty);
command.Parameters.Add("@.productID", labid.Text);
command.ExecuteNonQuery();
Following my code, and do it for both methods. And, you need to do same for @.productId.|||
Hi,
che3358:
if(TextBox1 != null)
{
qty = int.parse(TextBox1.Text);
}
catch{}
Gives me a squiggly before catch{}, saying 'try' is expected? then when I type try it gives more syntax errors?
Thanks,
Jon
|||
You will have to convert TextBox1.text to int . Try using ,
int qty = int.parse(TextBox1.text);
command.Parameters.Add("@.qty",SqlDbType.Int);
command..Parameters["@.qty"].Value = qty ;
|||
My fault. It should be
if(TextBox1 != null) {
try
{
qty = int.parse(TextBox1.Text);
}
catch{}
}
|||
Hi again,
Now it gives the error:
CS0117: 'int' does not contain a definition for 'parse'
Line 40: qty = int.parse(TextBox1.Text);
??
Thanks again!
Jon
|||
int.Parse. Sorry.
|||
Hi,
New error:
CS0103: The name 'int32' does not exist in the current context
Line 40: qty = int32.parse(TextBox1.Text);
Cheers
Jon
|||
it needs to be exactly as :
qty = int.Parse(TextBox1.Text);
Tim