Ir para conteúdo


Foto

Como não permitir valores duplicados?


4 respostas neste tópico

#1 Leandro_Pirozzi

Leandro_Pirozzi
  • Membros
  • 243 posts
  • Gender:Male

Postado 26 março 2009 - 15:08

Por exemplo:
Tenho uma tela de cadastro de Usuario e senha, como fazer para exibir uma msg que já existe determinado usuário se o mesmo já existir na tabela?

Private Sub cmdsalvar_Click()
Dim SQLASS As String
Dim icol As Integer

Set cnass = New ADODB.Connection

With cnass
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & App.Path & "\CONTATOS.mdb;"
.Open
End With

Set rsass = New ADODB.Recordset
Set rsass.ActiveConnection = cnass
rsass.CursorLocation = adUseClient

Set rsass = New ADODB.Recordset
SQLASS = "INSERT INTO CONTATOS_SENHA "
SQLASS = SQLASS & "(CODUSUARIO, SENHA )"
SQLASS = SQLASS & "VALUES ( '" & Me.txtnome.Text & "','" & Me.txtsenha.Text & "')"
Set rsass.ActiveConnection = cnass
'rsTarefas.Open SQL
cnass.Execute SQLASS

MsgBox "Cadastro de Assessor efetuado com sucesso"


End Sub


#2 Macêdo

Macêdo
  • Membros
  • 309 posts

Postado 26 março 2009 - 21:28

é só fazer uma busca antes com um select, caso encontre o nome na tabela informa, caso não encontre então insere.

select codusuario, senha from contatos_senha where codusuario = '" & txtnome & "'"

With rs_busca

if (.BOF and .EOF) then 'se não encontrou insere

Set rsass = New ADODB.Recordset
SQLASS = "INSERT INTO CONTATOS_SENHA "
SQLASS = SQLASS & "(CODUSUARIO, SENHA )"
SQLASS = SQLASS & "VALUES ( '" & Me.txtnome.Text & "','" & Me.txtsenha.Text & "')"
Set rsass.ActiveConnection = cnass
'rsTarefas.Open SQL
cnass.Execute SQLASS

MsgBox "Cadastro de Assessor efetuado com sucesso"

else

msgobox "Usuario já existe"


#3 Leandro_Pirozzi

Leandro_Pirozzi
  • Membros
  • 243 posts
  • Gender:Male

Postado 27 março 2009 - 08:02

Hummm...
tentei fzer mas deu alguns erros.

tem como dar mais detalhes?
esse with rs_busca não tem o end with?
ele tb não precisa ser aberto?
.open?

desculpa as perguntas é q não entendi mesmo.

Editado por Leandro_Pirozzi, 27 março 2009 - 08:46 .


#4 Macêdo

Macêdo
  • Membros
  • 309 posts

Postado 28 março 2009 - 20:13

Não pus o codigo todo certinho não, foi só pra você pegar o fio da meada e tentar mesmo. Um With sempre precisa ser fechado com End With.
O que quis dizer é que você tem que fazer um select antes de inserir, preencher um recordset onde o campo que você não quer que duplique seja igual ao que aparece na text, então se o recordset encontrar é porque já existe, então você trata para não inserir ou alterar, e caso o recordset venha vazio, ou seja recordcount = 0, é porque não existe ainda, então você põe o codigo para inserir neste caso, veja este exemplo:

CODE
[b]faz o select para saber se o campo já existe[/b]

    With cmd
    .ActiveConnection = cnn
    .CommandType = adCmdText
    .CommandText = "select cod, nome from socios where cod = " & vCod_socio & ""
    Set rs = .Execute
    End With

    With rs
        If (.BOF And .EOF) Then  [b]'se não existe, insere[/b]
            With cmd
            .ActiveConnection = cnn
            .CommandType = adCmdText
            .CommandText = "insert into socios " & _
            "(cod, matricula, cpf, nome, rg, telefone, celular, nascimento, email, endereco, estado_civil, conjuge, pai, mae, empresa, telefone_empresa) values (" & _
            vCod_socio & ",'" & _
            Text_cod & "', '" & _
            Text_cpf & "','" & _
            Text_nome & "','" & _
            Text_rg & "','" & _
            Text_telefone & "','" & _
            Text_celular & "','" & _
            Text_nascimento & "','" & _
            Text_email & "','" & _
            Text_endereco & "','" & _
            Combo_estado_civil & "','" & _
            Text_conjuge & "','" & _
            Text_pai & "','" & _
            Text_mae & "','" & _
            Text_empresa & "','" & _
            Text_telefone_empresa & "');"
            .Execute
            End With
            vinfo = MsgBox("Cadastro efetuado com sucesso", vbInformation _
            + vbOKOnly, "Cadastro de Sócios")
            Unload Me
            Form_socios.Show

        Else [b] 'se existe altera[/b]

        vinfo = MsgBox("Deseja salvar as alterações feitas" & _
        " ao cadastro de " & rs!nome & " ? ", vbYesNo + vbQuestion _
        , "Cadastro de Sócios")
            If vinfo = vbYes Then
                With cmd
                .ActiveConnection = cnn
                .CommandType = adCmdText
                .CommandText = "update socios set " & _
                "cpf = '" & Text_cpf & "'," & _
                "nome = '" & Text_nome & "', " & _
                "rg = '" & Text_rg & "'," & _
                "telefone = '" & Text_telefone & "'," & _
                "celular= '" & Text_celular & "'," & _
                "nascimento = '" & Text_nascimento & "'," & _
                "email= '" & Text_email & "'," & _
                "estado_civil = '" & Combo_estado_civil & "'," & _
                "conjuge = '" & Text_conjuge & "'," & _
                "pai = '" & Text_pai & "'," & _
                "mae = '" & Text_mae & "'," & _
                "empresa = '" & Text_empresa & "'," & _
                "telefone_empresa = '" & Text_telefone_empresa & "'," & _
                "endereco = '" & Text_endereco & "' where cod = " & vCod_socio & ";"
                .Execute
                End With
                vinfo = MsgBox("Alteração efetuada com sucesso", vbInformation _
                + vbOKOnly, "Cadastro de Sócios")
                Unload Me
                Form_socios.Show
            End If
        End If
    End With


#5 Leandro_Pirozzi

Leandro_Pirozzi
  • Membros
  • 243 posts
  • Gender:Male

Postado 30 março 2009 - 17:48

Opa Macêdo!!
Vlw cara consegui fzer aqui pra não deixar gravar valores duplicados e ainda por cima atualizar!!

Obrigadão!!!



Responder



  


0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos