PROBLEMA COM EXECUTE NONQUERY
Olá galera, estou tendo dificuldades numa rotina de inclusão de clientes. Ocorre que, quando peço para salvar tenho a seguinte mensagem: ExecuteNonQuery: Propriedade Connection não foi inicializada. O que posso ter feito de errado? ou o que deixei de fazer?
Estou há mais de 5 meses com um projetinho parado por conta de problemas com conexão... arrumei algumas coisas mas outros erros como esse persistem.
segue meu modulo com a conexão e string declarada
Module mdlProjeto
Public cnnSql As New SqlClient.SqlConnection
Public strSql As String
Public Function AbrirCnnSQL(Optional ByRef Mensagem As String = [Ô][Ô]) As _
SqlClient.SqlConnection
[ô]-- Permitir cnnSQL com banco de dados --[ô]
Dim cnn As New SqlClient.SqlConnection
cnn.ConnectionString = [Ô]Server=Fabricio-PC\SQLEXPRESS;[Ô] & _
[Ô]User Id=Fabricio-PC\Fabricio; Password=; Database=db_PROJETO; Connection TimeOut=60;[Ô]
Try
cnn.Open()
Return (cnn)
Catch ex As Exception
Mensagem = Err.Description.ToString
Return Nothing
End Try
End Function
End Module
e abaixo, toda a rotina do botão Gravar depois da consistencia de dados.
If blnInserir = True Then
strSql = [Ô]Execute PR_INC_CLIENTE @Cod_Cli, @Nome_Cli, @Endereco, @Telefone[Ô]
cmdCliente.Parameters.AddWithValue([Ô]@Cod_Cli[Ô], mskcod.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Nome_Cli[Ô], txtNome.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Endereco[Ô], txtEndere.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Telefone[Ô], mskTel.Text)
Else
strSql = [Ô]Execute PR_ALT_CLIENTE @Cod_Cli, @Nome_Cli, @Endereco, @Telefone[Ô]
cmdCliente.Parameters.AddWithValue([Ô]@Cod_Cli[Ô], mskcod.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Nome_Cli[Ô], txtNome.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Endereco[Ô], txtEndere.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Telefone[Ô], mskTel.Text)
End If
cnnSql = AbrirCnnSQL()
cmdCliente.CommandText = strSql
cmdCliente.Connection = cnnSql
Try
cmdCliente.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & vbNewLine & Err.Description.ToString, _
[Ô]Erro ao Gravar[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
cmdCliente.Parameters.Clear()
Exit Sub
End Try
If blnInserir = True Then
MessageBox.Show([Ô]Cliente Cadastrado com sucesso[Ô], [Ô]Confirmação[Ô], MessageBoxButtons.OK)
Else
MessageBox.Show([Ô]Cliente Alterado com sucesso[Ô], [Ô]Confirmação[Ô], MessageBoxButtons.OK)
End If
cmdCliente.Parameters.Clear()
btnLimpar_Click(sender, e)
Atualizar_datagrid()
Cadastro_Cliente_Load(sender, e)
Grato, desde já.
Estou há mais de 5 meses com um projetinho parado por conta de problemas com conexão... arrumei algumas coisas mas outros erros como esse persistem.
segue meu modulo com a conexão e string declarada
Module mdlProjeto
Public cnnSql As New SqlClient.SqlConnection
Public strSql As String
Public Function AbrirCnnSQL(Optional ByRef Mensagem As String = [Ô][Ô]) As _
SqlClient.SqlConnection
[ô]-- Permitir cnnSQL com banco de dados --[ô]
Dim cnn As New SqlClient.SqlConnection
cnn.ConnectionString = [Ô]Server=Fabricio-PC\SQLEXPRESS;[Ô] & _
[Ô]User Id=Fabricio-PC\Fabricio; Password=; Database=db_PROJETO; Connection TimeOut=60;[Ô]
Try
cnn.Open()
Return (cnn)
Catch ex As Exception
Mensagem = Err.Description.ToString
Return Nothing
End Try
End Function
End Module
e abaixo, toda a rotina do botão Gravar depois da consistencia de dados.
If blnInserir = True Then
strSql = [Ô]Execute PR_INC_CLIENTE @Cod_Cli, @Nome_Cli, @Endereco, @Telefone[Ô]
cmdCliente.Parameters.AddWithValue([Ô]@Cod_Cli[Ô], mskcod.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Nome_Cli[Ô], txtNome.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Endereco[Ô], txtEndere.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Telefone[Ô], mskTel.Text)
Else
strSql = [Ô]Execute PR_ALT_CLIENTE @Cod_Cli, @Nome_Cli, @Endereco, @Telefone[Ô]
cmdCliente.Parameters.AddWithValue([Ô]@Cod_Cli[Ô], mskcod.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Nome_Cli[Ô], txtNome.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Endereco[Ô], txtEndere.Text)
cmdCliente.Parameters.AddWithValue([Ô]@Telefone[Ô], mskTel.Text)
End If
cnnSql = AbrirCnnSQL()
cmdCliente.CommandText = strSql
cmdCliente.Connection = cnnSql
Try
cmdCliente.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & vbNewLine & Err.Description.ToString, _
[Ô]Erro ao Gravar[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
cmdCliente.Parameters.Clear()
Exit Sub
End Try
If blnInserir = True Then
MessageBox.Show([Ô]Cliente Cadastrado com sucesso[Ô], [Ô]Confirmação[Ô], MessageBoxButtons.OK)
Else
MessageBox.Show([Ô]Cliente Alterado com sucesso[Ô], [Ô]Confirmação[Ô], MessageBoxButtons.OK)
End If
cmdCliente.Parameters.Clear()
btnLimpar_Click(sender, e)
Atualizar_datagrid()
Cadastro_Cliente_Load(sender, e)
Grato, desde já.
Só de curioso: tu já tentou eliminar a variável cnnSql e setar direto a propriedade?
cmdCliente.Connection = AbrirCnnSQL()
Como assim cara? Desculpe, sou NUUB mesmo!
Se eu eliminar a cnnSql não vai ter onde eu atribuir o resultado da conexão... pelo menos não da forma que está em meu código.
Se eu eliminar a cnnSql não vai ter onde eu atribuir o resultado da conexão... pelo menos não da forma que está em meu código.
aq tem um exemplo
Somente lembrando a todos que aqui não é um fórum somente para constituir ponto para mostrar que sabe alguma coisa!
A intensão é ajudar ao próximo tirando suas duvidas e não passando uma instrução pronta para que a pessoa copie e cole!
Vamos propor o conhecimento e não simplesmente entregar pronto, pois a sua maneira de identificar um problema e corrigi-lo no sistema é diferente da do outro!
Primeiro
Erro que todos cometem ao migrar de uma linguagem vb6 para vb.net é usar expressões de vb6 no vb.net! quere programar e plataforma .net esquece as outras!
Err.Description.ToString não é utilizado
Try e Catch portanto se queres mostrar a mensagem de erro quando cair no Catch faça o seguinte
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & vbNewLine & [txt-color=#e80000]ex.Message[/txt-color], _
[Ô]Erro ao Gravar[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Segundo
Para trabalhar com procedure não utiliza-se dessa maneira veja o site abaixo e tenha uma base de como fazer
http://www.macoratti.net/vbn_bsql.htm
Não quero que ninguém leve a mal minha palavras, mas entregar pronto não vai ajudar a pessoa desenvolver as habilidades de programador/analista.
Espero ter ajudado
A intensão é ajudar ao próximo tirando suas duvidas e não passando uma instrução pronta para que a pessoa copie e cole!
Vamos propor o conhecimento e não simplesmente entregar pronto, pois a sua maneira de identificar um problema e corrigi-lo no sistema é diferente da do outro!
Primeiro
Erro que todos cometem ao migrar de uma linguagem vb6 para vb.net é usar expressões de vb6 no vb.net! quere programar e plataforma .net esquece as outras!
Err.Description.ToString não é utilizado
Try e Catch portanto se queres mostrar a mensagem de erro quando cair no Catch faça o seguinte
MessageBox.Show([Ô]Ocorreu um erro: [Ô] & vbNewLine & [txt-color=#e80000]ex.Message[/txt-color], _
[Ô]Erro ao Gravar[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Segundo
Para trabalhar com procedure não utiliza-se dessa maneira veja o site abaixo e tenha uma base de como fazer
http://www.macoratti.net/vbn_bsql.htm
Não quero que ninguém leve a mal minha palavras, mas entregar pronto não vai ajudar a pessoa desenvolver as habilidades de programador/analista.
Espero ter ajudado
Tópico encerrado , respostas não são mais permitidas