Usuário com melhor resposta
Função Gravar edição não esta funcionando

Pergunta
-
O sistema está gravando novos usuários e apagando-os normalmente, mas há um problema na parte de edição dos registros. A sua tarefa é arrumar a funcionalidade de edição, pois quando há alguma alteração e clicamos no botão GRAVAR, as alterações não estão sendo salvas. Precisamos que as alterações sejam efetivadas na base.
Public Function Gravar() As Boolean
Dim objConexao As New OleDbConnection
Dim cmdCommand As New OleDbCommand
Dim strSQL As New StringBuilder
Dim bolRetorno As Boolean
Dim listParametros As New List(Of SqlParameter)
Dim bolInclusao As Boolean
Try
Verifica(Propriedades.Nome, strNome)
Verifica(Propriedades.Login, strLogin)
Verifica(Propriedades.Senha, strSenha)
Verifica(Propriedades.Departamento, strDepartamento)
Verifica(Propriedades.Matricula, strMatricula)
Verifica(Propriedades.Detalhes, strDetalhes)
If Geral.Conectar(objConexao) = True Then
cmdCommand.Connection = objConexao
If lngUsuarioID = 0 Then
strSQL.Append("INSERT INTO Usuarios (")
strSQL.Append("Nome, ")
strSQL.Append("Administrador, ")
strSQL.Append("[Login], ")
strSQL.Append("Senha, ")
strSQL.Append("TrocaSenha, ")
strSQL.Append("TodosProjetos, ")
strSQL.Append("Departamento, ")
strSQL.Append("Matricula, ")
strSQL.Append("Detalhes, ")
strSQL.Append("SSO, ")
strSQL.Append("Inativo) ")
strSQL.Append("VALUES (")
strSQL.Append("@Nome, ")
strSQL.Append("@Administrador, ")
strSQL.Append("@Login, ")
strSQL.Append("@Senha, ")
strSQL.Append("@TrocaSenha, ")
strSQL.Append("@TodosProjetos, ")
strSQL.Append("@Departamento, ")
strSQL.Append("@Matricula, ")
strSQL.Append("@Detalhes, ")
strSQL.Append("@SSO, ")
strSQL.Append("@Inativo)")
bolInclusao = True
Else
strSQL.Append("UPDATE [Usuarios] SET ")
strSQL.Append(" [Nome] = @Nome, ")
strSQL.Append(" [Administrador] = @Administrador,")
strSQL.Append(" [Login] = @Login,")
strSQL.Append(" [Senha] = @Senha,")
strSQL.Append(" [TrocaSenha] = @TrocaSenha,")
strSQL.Append(" [TodosProjetos] = @TodosProjetos,")
strSQL.Append(" [Departamento] = @Departamento,")
strSQL.Append(" [Matricula] = @Matricula,")
strSQL.Append(" [Detalhes] = @Detalhes,")
strSQL.Append(" [SSO] = @SSO,")
strSQL.Append(" [Inativo] = @Inativo ")
strSQL.Append(" WHERE [UsuarioID] = @UsuarioID")
cmdCommand.Parameters.AddWithValue("@UsuarioID", lngUsuarioID)
End If
cmdCommand.Parameters.AddWithValue("@Nome", strNome)
cmdCommand.Parameters.AddWithValue("@Administrador", IIf(bolAdministrador = True, 1, 0))
cmdCommand.Parameters.AddWithValue("@Login", strLogin)
cmdCommand.Parameters.AddWithValue("@Senha", strSenha)
cmdCommand.Parameters.AddWithValue("@TrocaSenha", IIf(bolTrocaSenha = True, 1, 0))
cmdCommand.Parameters.AddWithValue("@TodosProjetos", IIf(bolTodosProjetos = True, 1, 0))
cmdCommand.Parameters.AddWithValue("@Departamento", strDepartamento)
cmdCommand.Parameters.AddWithValue("@Matricula", strMatricula)
cmdCommand.Parameters.AddWithValue("@Detalhes", strDetalhes)
cmdCommand.Parameters.AddWithValue("@SSO", IIf(bolSSO = True, 1, 0))
cmdCommand.Parameters.AddWithValue("@Inativo", IIf(bolInativo = True, 1, 0))
cmdCommand.CommandText = strSQL.ToString
cmdCommand.ExecuteNonQuery()
objConexao.Close()
bolRetorno = True
End If
Catch ex As Exception
objConexao.Close()
bolRetorno = False
Throw ex
Finally
objConexao = Nothing
strSQL = Nothing
End Try
Return bolRetorno
End Function
Respostas
-
Paulo, então vamos passo a passo para debugar isso:
1. Coloque um breakpoint dentro do ELSE onde ocorre o UPDATE. Vá dando step até chegar ao final script e pegue o conteúdo de strSQL.ToString.
Outro breakpoint também deve ficar nessa linha:
cmdCommand.CommandText = strSQL.ToString
Teste no banco e veja o que acontece.
- Nesse caso pode ocorrer:
a) Não vai entrar no bloco do ELSE e não vai parar no breakpoint.
b) Vai entrar no bloco ELSE, porém a query que você pegou na variavel strSQL está inválida na execução direta no banco.
Se encontrar algo, nos conte aqui ;)
Abraços !
Diego Murakami
- MCP, MS, MCSD
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.
- Editado Diego Murakami quarta-feira, 4 de junho de 2014 16:08
- Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 17:50
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 5 de junho de 2014 19:36
Todas as Respostas
-
Bom dia Paulo,
Da uma olha nesse exemplo do Botão Salvar, é isso que você precisa?
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesbtnSalvar.Click
Dim salvarComo As SaveFileDialog = New SaveFileDialog()
Dim caminho As DialogResult
Dim fluxoTexto As IO.StreamWriter
Dim Arquivo As String
salvarComo.CheckFileExists = False
salvarComo.Title = "Arquivos Textos |*.txt |"
caminho = salvarComo.ShowDialog
Arquivo = salvarComo.FileName
If Arquivo = Nothing Then
MessageBox.Show("Arquivo Invalido", "Salvar Como", MessageBoxButtons.OK)
Else
fluxoTexto = New IO.StreamWriter(Arquivo)
fluxoTexto.Write(txtLinhas.Text)
fluxoTexto.Close()
End If
End Sub
http://www.macoratti.net/vbn_txt.htm
Fico na aguardo de uma resposta.
Att,
- Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 11:37
- Não Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 17:50
-
Paulo, boa tarde.
Gostaria de saber qual a mensagem de erro que está ocorrendo. Dessa forma podemos ajudar melhor.
Abraços !
Diego Murakami
- MCP, MS, MCSD
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.- Sugerido como Resposta Ricardo Barbosa Cortes terça-feira, 3 de junho de 2014 18:04
- Não Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 11:23
- Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 11:37
- Não Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 17:50
-
-
Paulo, então vamos passo a passo para debugar isso:
1. Coloque um breakpoint dentro do ELSE onde ocorre o UPDATE. Vá dando step até chegar ao final script e pegue o conteúdo de strSQL.ToString.
Outro breakpoint também deve ficar nessa linha:
cmdCommand.CommandText = strSQL.ToString
Teste no banco e veja o que acontece.
- Nesse caso pode ocorrer:
a) Não vai entrar no bloco do ELSE e não vai parar no breakpoint.
b) Vai entrar no bloco ELSE, porém a query que você pegou na variavel strSQL está inválida na execução direta no banco.
Se encontrar algo, nos conte aqui ;)
Abraços !
Diego Murakami
- MCP, MS, MCSD
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.
- Editado Diego Murakami quarta-feira, 4 de junho de 2014 16:08
- Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 4 de junho de 2014 17:50
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 5 de junho de 2014 19:36