D3POD Posted October 12, 2016 at 09:26 AM Report #599563 Posted October 12, 2016 at 09:26 AM Boas, estou com um erro num programa que estou a criar e precisava da vossa ajuda. con = new OleDbConnection(conn); con.Open(); string cb = "insert into Config(ProductName,Features,Price,Picture, Margin, CostPrice, Tax, Price1) VALUES ('" + cmbProductName.Text + "','" + txtFeatures.Text + "'," + txtPrice.Text + ",@d1, @margem, @preco_custo, @tax, @preco_stax"; cmd = new OleDbCommand(cb); cmd.Connection = con; MemoryStream ms = new MemoryStream(); Bitmap bmpImage = new Bitmap(pictureBox1.Image); bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] data = ms.GetBuffer(); OleDbParameter p = new OleDbParameter("@d1", OleDbType.VarBinary); cmd.Parameters.AddWithValue("@margem", Convert.ToInt32(txt_margem.Text)); cmd.Parameters.AddWithValue("@preco_custo", Convert.ToInt32(txt_pricecoust.Text)); cmd.Parameters.AddWithValue("@tax", Convert.ToInt32(txt_tax.Text)); cmd.Parameters.AddWithValue("@preco_stax", Convert.ToInt32(txt_pricewithouttax.Text)); p.Value = data; cmd.Parameters.Add(p); cmd.ExecuteNonQuery(); con.Close(); Sempre que clico no botão para guardar ele dá me erro no INSERT INTO... já fiz várias experiencias, como colocar as textboxs diretamente na query, mas mesmo assim nada. O problema é que se eu retirar os @margem, @preco_custo, @tax e @preco_stax o programa funciona bem... portanto leva-me a crer que seja alguma coisa aqui. Cumprimentos
apocsantos Posted October 12, 2016 at 09:53 AM Report #599567 Posted October 12, 2016 at 09:53 AM Bom dia, Creio que o problema possa estar na conversão de tipos de dados. Experimenta usar o Int32.TryParse() em vez do Convert.ToInt32 e usa breakpoints para verificares se os tipos de dados estão correctos, ou também podes verificar isso no código, algo tipo: bool res = int.TryParse(txt_pricecoust.Text, out num1); if (res == false) { MessageBox.Show("não é um numero", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) } Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
N3lson Posted October 12, 2016 at 12:36 PM Report #599572 Posted October 12, 2016 at 12:36 PM Falta-te um ) no final da Query 1 Report You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
D3POD Posted October 12, 2016 at 02:19 PM Author Report #599573 Posted October 12, 2016 at 02:19 PM Realmente quando abri o tópico ainda não tinha reparado, mas já corrigi... Entretanto fiz algumas alterações... mudei os campos da base de dados para texto de forma a evitar conversões e perceber onde está o problema, mas sem sucesso. Segue o erro: Citação An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll Additional information: Data type mismatch in criteria expression. Código atual: con = new OleDbConnection(conn); con.Open(); string cb = "insert into Config(ProductName,Features,Price,Picture, Margin, CostPrice, Tax, Price1) VALUES ('" + cmbProductName.Text + "','" + txtFeatures.Text + "'," + txtPrice.Text + ",@d1, @margem, @preco_custo, @tax, @preco_stax)"; cmd = new OleDbCommand(cb); cmd.Connection = con; MemoryStream ms = new MemoryStream(); Bitmap bmpImage = new Bitmap(pictureBox1.Image); bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] data = ms.GetBuffer(); OleDbParameter p = new OleDbParameter("@d1", OleDbType.VarBinary); cmd.Parameters.Add("@margem", OleDbType.VarChar).Value = txt_margem.Text; cmd.Parameters.Add("@preco_custo", OleDbType.VarChar).Value = txt_pricecoust.Text; cmd.Parameters.Add("@tax", OleDbType.VarChar).Value = txt_tax.Text; cmd.Parameters.Add("@preco_stax", OleDbType.VarChar).Value = txt_pricewithouttax.Text; p.Value = data; cmd.Parameters.Add(p); cmd.ExecuteNonQuery(); con.Close();
apocsantos Posted October 12, 2016 at 03:26 PM Report #599574 Posted October 12, 2016 at 03:26 PM Boa tarde, Experimenta assim a query: string cb = "insert into Config(ProductName,Features,Price,Picture, Margin, CostPrice, Tax, Price1) VALUES ("'" + cmbProductName.Text + "', '" + txtFeatures.Text + "', '" + txtPrice.Text + "', " + @d1, @margem, @preco_custo, @tax, @preco_stax );" Fiquei com a ideia que possa ser uma questão de aspas e plicas, que não estavam correctas. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
Solution D3POD Posted October 12, 2016 at 07:37 PM Author Solution Report #599577 Posted October 12, 2016 at 07:37 PM Boas, já descobri o que estava mal e não tinha nada a ver com o código. O problema estava na base de dados que estava como Texto Breve. Quero agradecer a todos pela ajuda, serviu de qualquer das maneira para compreender melhor como funcionam as query e as várias formas que posso criar. Cumprimentos
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now