GRAVANDO DADOS DUPLICADOS NO BANCO

DENISSON 11/02/2013 19:43:41
#419135
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
RACEMAN 11/02/2013 23:45:53
#419143
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...
DENISSON 12/02/2013 15:26:01
#419167
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.
RACEMAN 13/02/2013 02:32:44
#419181
é 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.
FELLIPEASSIS 16/02/2013 15:46:38
#419222
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