Mica Posted May 13, 2012 at 10:49 PM Report #455270 Posted May 13, 2012 at 10:49 PM Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\CV.accdb") Dim OLDB As String = "INSERT INTO Filmes ([NomeFilme],[TituloOriginal],[CodigoFornecedor],[Genero],[Realizador],[Actores],[Pais],[Ano],[ClasseEtaria]) VALUES (@NomeFilme,@TituloOriginal,@CodigoFornecedor,@Genero,@Realizador,@Actores,@Pais,@Ano,@ClasseEtaria)" ' Inicia uma ligação à bse de dados ' Using connection As New OleDbConnection(connString) ' Define o comando e os parâmetros Dim command1 As New OleDbCommand(OLDB, ConnectionString) 'command1.Parameters.Add("@CodigoFilme", OleDbType.VarChar).Value = TextBox1.Text command1.Parameters.Add("@NomeFilme", OleDbType.VarChar).Value = TextBox2.Text command1.Parameters.Add("@TituloOriginal", OleDbType.VarChar).Value = TextBox3.Text command1.Parameters.Add("@CodigoFornecedor", OleDbType.Integer).Value = TextBox4.Text command1.Parameters.Add("@Genero", OleDbType.VarChar).Value = TextBox5.Text command1.Parameters.Add("@Realizador", OleDbType.VarChar).Value = TextBox6.Text command1.Parameters.Add("@Actores", OleDbType.VarChar).Value = TextBox7.Text command1.Parameters.Add("@Pais", OleDbType.VarChar).Value = TextBox9.Text command1.Parameters.Add("@Ano", OleDbType.Integer).Value = TextBox10.Text command1.Parameters.Add("@ClasseEtaria", OleDbType.VarChar).Value = TextBox11.Text ' Abre a ligação e insere o registo ConnectionString.Open() Dim xx As Integer = command1.ExecuteNonQuery() If xx < 1 Then MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error) Else MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information) End If Este erro da me aqui no Dim xx as integer = command1.ExecuteNonQuery() quando eu tento inserir sem ter qualquer campo preenchido o correto seria ele dar o "Erro ao Inserir" Creio que o erro provém do parametro Add mas já confirmei na bd e alem do id que esta auto incremento apenas dois estao definidos como numero...
petvetbr Posted May 14, 2012 at 12:13 AM Report #455297 Posted May 14, 2012 at 12:13 AM Muito estranho, pois o valor de retorno do ExecuteNonQuery pela documentacao do MSDN deveria ser Int32. Nas outras condiçoes está funcionando ok? Fernando Lage Bastos - MCP/MCTS/MCPD
jpaulino Posted May 14, 2012 at 06:26 AM Report #455304 Posted May 14, 2012 at 06:26 AM O método ExecuteNonQuery() devolve o número de registos afectados, ou seja, se inserir um registo, devolve 1. Não devolve erros, nem status, apenas um valor.
Mica Posted May 14, 2012 at 10:52 AM Author Report #455352 Posted May 14, 2012 at 10:52 AM Se calhar não fui claro... Se eu preencher todos os campos e guardar ele executa tudo bem... O problema é quando eu não preencho nada ou seja tento guardar vazio ele apresenta me esse erro .. Alguma solução para tentar contornar essa situação?
bsccara Posted May 15, 2012 at 02:09 AM Report #455637 Posted May 15, 2012 at 02:09 AM Experimenta meter aspas antes e depois de cada parâmetro : command1.Parameters.Add("@NomeFilme", OleDbType.VarChar).Value = """ & TextBox2.Text & """ Se mesmo assim não der altera a query na string OLDB de modo a alterar apenas os campos efectivamente preenchidos.
jpaulino Posted May 15, 2012 at 07:35 AM Report #455644 Posted May 15, 2012 at 07:35 AM Se calhar não fui claro... Se eu preencher todos os campos e guardar ele executa tudo bem... O problema é quando eu não preencho nada ou seja tento guardar vazio ele apresenta me esse erro .. Alguma solução para tentar contornar essa situação? Tens de validar todos os campos antes de tentar inserir
Tuntankamon Posted May 15, 2012 at 08:35 AM Report #455651 Posted May 15, 2012 at 08:35 AM Solução passa por meteres o código num try catch, e verificas qual é a mensagem de erro... O problema é que o executenonquery nunca chega a ser executado correctamente, pelo menos assim me parece. Cumpts
Mica Posted May 15, 2012 at 02:59 PM Author Report #455744 Posted May 15, 2012 at 02:59 PM Tens de validar todos os campos antes de tentar inserir Sim eu sei... Se eu preencher todos os campos ele funciona direitinho, a questão é: Se o botão esta disponível logo eu posso clicar sem ter nada preenchido... ou seja estou á procura de eventuais erros no meu programa e este é um deles :b
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