.NET Framework Developer Center >
Fóruns do .NET Development
>
.NET Development - Geral
>
evitar duplicidade (DICA)
evitar duplicidade (DICA)
- entao, fiz um comando para salvar um novo registro que inclui,queria um dica de como evitar que a pessoa clique no botão salvar e salve outro registro igualpor exemplo, uma condicional checando se ja existe o codigo ou algo assimDim conn As New OleDbConnection()conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb"conn.Open()Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO Dobradicas(Codigo, Nome, A, B, C, D, E, F, Descricao)" + ("VALUES (@Codigo, @Nome, @A, @B, @C, @D, @E, @F, @Descrição)"), conn)cmd.Parameters.AddWithValue("Codigo", TextBox1.Text)cmd.Parameters.AddWithValue("Nome", TextBox2.Text)cmd.Parameters.AddWithValue("A", TextBox3.Text)cmd.Parameters.AddWithValue("B", TextBox4.Text)cmd.Parameters.AddWithValue("C", TextBox5.Text)cmd.Parameters.AddWithValue("D", TextBox6.Text)cmd.Parameters.AddWithValue("E", TextBox7.Text)cmd.Parameters.AddWithValue("F", TextBox8.Text)cmd.Parameters.AddWithValue("Descricao", TextBox9.Text)cmd.ExecuteNonQuery()conn.Close()
Respostas
- Bruno,
existe botão Incluir e alterar ou apenas salvar?
Se for um botão incluir e um alterar: No incluir, ao clicar desabilita o botão incluir e joga no banco depois de desabilitar. No alterar, usa o código que já existe.
Se existe apenas o botão salvar, na regra de negócio faça uma verificação.
If Exists(CódigoX) then
Update
Else
Insert
onde a função Exists vai no banco e valida se o código X existe ou não.
É assim que utilizo hoje.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)- Sugerido como RespostaLeandrodeMelloFagundes sexta-feira, 30 de outubro de 2009 11:18
- Marcado como RespostaBruno Gaiola terça-feira, 10 de novembro de 2009 14:23
Todas as Respostas
- Bruno,
existe botão Incluir e alterar ou apenas salvar?
Se for um botão incluir e um alterar: No incluir, ao clicar desabilita o botão incluir e joga no banco depois de desabilitar. No alterar, usa o código que já existe.
Se existe apenas o botão salvar, na regra de negócio faça uma verificação.
If Exists(CódigoX) then
Update
Else
Insert
onde a função Exists vai no banco e valida se o código X existe ou não.
É assim que utilizo hoje.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)- Sugerido como RespostaLeandrodeMelloFagundes sexta-feira, 30 de outubro de 2009 11:18
- Marcado como RespostaBruno Gaiola terça-feira, 10 de novembro de 2009 14:23
- cara, tem um botão salvar e o incluiro incluir gera um novo mas nao salvamas esse salvar que eu fiz so salva se for um novopois eu faço um INSER INTOdai se eu altero um que ja existe e salvo da erro
como faze esse Existe no codigo acimatem como escreve-lo pra mim saber?obrigado - Esse exist foi só um exemplo Bruno.
A idéia é executar um comando no banco de dados para validar se o código que você quer inserir, já existe. Não faz sentido inserir um código que já existe, certo?
Dim cmd As OleDbCommand = New OleDbCommand("Select Codigo From Dobradicas Where Codigo = @Codigo"), conn)
Se ele retornar uma linha nesta consulta, quer dizer que já existe este código. Ai você apresenta um erro ou qualquer outra coisa que desejar.
A idéia é mais ou menos isso... Deu pra entender?
att
Leandro
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)- Sugerido como RespostaLeandrodeMelloFagundes sexta-feira, 30 de outubro de 2009 11:18
- Entendi sim cara, ve o que tem de errado :Dim Codigo As StringDim conn As New OleDbConnection()conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb"conn.Open()Dim cmd As OleDbCommand = New OleDbCommand("Select Codigo From Dobradicas Where Codigo = @Codigo", conn)Dim reader As OleDbDataReader = cmd.ExecuteReader()If reader.HasRows Thenreader.Read()Codigo = reader("Codigo").ToString()End IfIf codigo = "" thensalvanovo()Elsealtera()ps. a função salvanovo executa o codigo q eu te mostei no post acimae a altera vai alterar o registroaonde esta o erro nesse codigo ?
- você não adicionou o parâmetro @Codigo??
Que tipo de erro deu?
A princípio, a sequencia está correta.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)- Sugerido como RespostaLeandrodeMelloFagundes sexta-feira, 30 de outubro de 2009 11:18
- Crie uma stored procedure onde nela você valida se sera feito o insert ou ( update ou nada )
create procedure usp_InsDobradica
@codigo numeric(5)
@descricao varchar(50)
as
if exists(select codigo from dobradicas where codigo = @codigo)
Begin
--- siginifica que já existe, você poderia verificar pela descricao ou qualquer campo
-- Decida se vou fazer o update..
update dobradica set descricao = @descricao where codigo = @codigo
End
Else
Begin
--- os dados nao foram encontrados
Insert dobradica values ( @codigo, @descricao )
End
Rafael Lima - Rafael,
Bem lega a sua dica, eu apenas queria fazer uma ressalva: Eu não gosto muito de deixar essa verificação no banco, pq sua aplicação dispara o comando (1 processo) , aguarda a resposta (2 processos) o banco recebe, verifica o registro (3 processos), executa ação (4 processo) e responde a aplicação (5 processos).
Eu prefiro mesmo as opções acima: verifico a condição(1 processo), se estiver dentro disparo o processo para o banco senao eu nao faço nada..
Saca ?
Abs,
Nelson Borges - http://nelsonborgesjr.spaces.live.com/blog/ "Ao infinito e além.. "


