GRAVANDO DADOS DUPLICADOS NO BANCO
Pessoal tenho uma tela no vbnet, que quando clico no botão para gravar os dados no banco ele grava duplicado.
Minha classe
Public Function GravaUsuario(ByVal sqlGrava As String)
[ô]Dim sqlGrava As New System.Text.StringBuilder
Dim dol = New AcessoBD
sqlGrava = ([Ô]INSERT INTO CADASTRO_SERVICOS (ASSUNTO, USUARIO) VALUES ([ô][Ô] & Usuarioo & [Ô][ô],[ô][Ô] & Assunto & [Ô][ô])[Ô])
Return dol.GetDataSet(sqlGrava)
End Function
Mue Form
Private Sub Cmdgravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmdgravar.Click
Dim grava As New ClienteBLL
Dim cn As New SqlConnection
grava.Usuarioo = TxtAluno.Text
grava.Assunto = RichAssunto.Text
grava.GravaUsuario(sqlGrava:=[Ô]sqlGrava[Ô])
End Sub
Minha classe
Public Function GravaUsuario(ByVal sqlGrava As String)
[ô]Dim sqlGrava As New System.Text.StringBuilder
Dim dol = New AcessoBD
sqlGrava = ([Ô]INSERT INTO CADASTRO_SERVICOS (ASSUNTO, USUARIO) VALUES ([ô][Ô] & Usuarioo & [Ô][ô],[ô][Ô] & Assunto & [Ô][ô])[Ô])
Return dol.GetDataSet(sqlGrava)
End Function
Mue Form
Private Sub Cmdgravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmdgravar.Click
Dim grava As New ClienteBLL
Dim cn As New SqlConnection
grava.Usuarioo = TxtAluno.Text
grava.Assunto = RichAssunto.Text
grava.GravaUsuario(sqlGrava:=[Ô]sqlGrava[Ô])
End Sub
Antes de inserir, você tem que testar para ver se ja existe. Existem várias formas, a mais simples é dar um select antes, a melhor é insert + select juntos.
Só isso...
Exemplo: Select usuario from cadastro_servicos WHERE usuario = [Ô]USUARIO QUE ESTA TENTANDO[Ô]
Se o recordcount retornar > 0, vc nao da insert. Basicamente é isso. Criando chaves primárias evita esse teste...
Seria melhor vc separar tudo por um cod e tals...
Só isso...
Exemplo: Select usuario from cadastro_servicos WHERE usuario = [Ô]USUARIO QUE ESTA TENTANDO[Ô]
Se o recordcount retornar > 0, vc nao da insert. Basicamente é isso. Criando chaves primárias evita esse teste...
Seria melhor vc separar tudo por um cod e tals...
ENTÃO MEU BANCO ESTA DECLARADO COM CHAVE PRIMARIA E IDENTIT, ELE QUANDO GRAVA CRIA DUAS CHAVS DISTINTAS, OS CAMPOS QUE QUERO GRAVAR PODE SER REPETIDOS.
é só vc antes de gravar, [Ô]dar[Ô] um SELECT, checando se já não existe aquilo que você não quer repita.
Se você nao que que o usuario mande várias mensagens com o mesmo assunto, da um select porcurando pelo o assunto.
Se ja existir o assunto, mostra uma mensagem dizendo que já existe,se não, grava a nova mensagem.
Se você nao que que o usuario mande várias mensagens com o mesmo assunto, da um select porcurando pelo o assunto.
Se ja existir o assunto, mostra uma mensagem dizendo que já existe,se não, grava a nova mensagem.
se vc esta usando sql server va na tabela com o botao direito do mause e click em design, depois vai na coluna cpf, rg ou algo que só uma pessoa possui click c/ botao direito do mouse e na propriedade indexes keys e escolha como unique ou chave unica e renomeia a chave EX: UN_cpf e pronto é só salvar se ñ der certo é pq tem dados duplicados na sua coluna a é só excluir e fazer td de novo .Pq assim é muito melhor doque dá um select e depois te retornar o valor e tbm ñ causa lentidão na aplicaçao
Faça seu login para responder