IMPEDIR DUPLICIDADE

ADRIANOM 16/02/2014 01:02:10
#434857
Bom meu amigo, eu faco o seguinte.... passarei a lógica que eu uso
[ô][ô]acrescentará um novo endereço no caso de não existir um registro com o mesmo
[ô]varrerá todo o registro, primeiramente, na busca pelo endereço digitado
[ô]verifica se nada foi digitado para evitar de ficar inserindo campos vazios
If cboEndereco.Text = [Ô][Ô] Then

Exit Sub

Else

Set CNN = New ADODB.Connection
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient
Set RSEnderecos = New ADODB.Recordset
RSEnderecos.Open [Ô]SELECT * FROM ENDERECO WHERE ENDERECO =[ô][Ô] & cboEndereco.Text & [Ô][ô][Ô], CNN, adOpenDynamic, adLockOptimistic
If RSEnderecos.RecordCount = 0 Then
[ô]Adicionar novo endereço
SQLEndereco = [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô]INSERT INTO ENDERECO([Ô]
SQLEndereco = SQLEndereco & [Ô] ENDERECO)[Ô]
SQLEndereco = SQLEndereco & [Ô] VALUES([Ô]
SQLEndereco = SQLEndereco & [Ô][ô][Ô] & cboEndereco.Text & [Ô][ô])[Ô]
CNN.BeginTrans
CNN.Execute SQLEndereco
CNN.CommitTrans
RSEnderecos.Close
End If
End If
NILSONTRES 16/02/2014 10:38:26
#434861
ADRIANOM,
Citação:

RSEnderecos.Open [Ô]SELECT * FROM ENDERECO WHERE ENDERECO =[ô][Ô] & cboEndereco.Text & [Ô][ô][Ô], CNN, adOpenDynamic, adLockOptimistic


Quando vc seleciona *From vc esta selecionanado todos os campos da tabela desnecessariamente.

Correto seria:
RSEnderecos.Open [Ô]SELECT ENDERECO from ENDERECO WHERE ENDERECO =[ô][Ô] & cboEndereco.Text & [Ô][ô][Ô], CNN, adOpenDynamic, adLockOptimistic

Outra coisa,
Citação:

CNN.BeginTrans
CNN.Execute SQLEndereco
CNN.CommitTrans



é preciso tratamento de erro aqui, caso aconteça um erro ali e vc não der o rollback ?
OMAR2011 16/02/2014 11:35:21
#434863
Vou dar o meu pitaco.
Vale ressaltar que duplicidade ou até mais de cidade vai
acontecer.Isto devido ao Brasil de existir cidades com
o mesmo nome.A cidade de BOM JESUS existe em cinco
estados.Então para registra um cidade de modo que
não repita vai ter que usar UF.
Na conulta sql fica mais ou mesmo assim;
Sql= [Ô]Select Cidade,UF From SuaTabela Where Cidade =[ô][Ô] & [Ô]NOMEDACIDADE[Ô] & [Ô][ô] And UF = [ô][Ô] & [Ô]SUA UF[Ô] & [Ô][ô][Ô]
Caso não entendeu o que o Professor quiz dizer vai ter
que ler e ler até compreender.
MARIOANDRADE 16/02/2014 11:45:13
#434864
Citação:

:
Bom meu amigo, eu faco o seguinte.... passarei a lógica que eu uso
[ô][ô]acrescentará um novo endereço no caso de não existir um registro com o mesmo
[ô]varrerá todo o registro, primeiramente, na busca pelo endereço digitado
[ô]verifica se nada foi digitado para evitar de ficar inserindo campos vazios
If cboEndereco.Text = [Ô][Ô] Then

Exit Sub

Else

Set CNN = New ADODB.Connection
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient
Set RSEnderecos = New ADODB.Recordset
RSEnderecos.Open [Ô]SELECT * FROM ENDERECO WHERE ENDERECO =[ô][Ô] & cboEndereco.Text & [Ô][ô][Ô], CNN, adOpenDynamic, adLockOptimistic
If RSEnderecos.RecordCount = 0 Then
[ô]Adicionar novo endereço
SQLEndereco = [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô]INSERT INTO ENDERECO([Ô]
SQLEndereco = SQLEndereco & [Ô] ENDERECO)[Ô]
SQLEndereco = SQLEndereco & [Ô] VALUES([Ô]
SQLEndereco = SQLEndereco & [Ô][ô][Ô] & cboEndereco.Text & [Ô][ô])[Ô]
CNN.BeginTrans
CNN.Execute SQLEndereco
CNN.CommitTrans
RSEnderecos.Close
End If
End If




Adriano, este seu código deu um nó na minha cabeça ( eu não entendo muito de conexão com banco de dados)
O meu código pra conectar é esse:

Public db As New ADODB.Connection
Public rs As New ADODB.Recordset
Public path As String
__________________________________________________________________________________
Public Sub ConnectDB()
path = App.path & [Ô]\BDA.mdb[Ô]
db.Open [Ô]Provider=microsoft.jet.oledb.4.0;data source=[Ô] & path
End Sub


Depois eu uso esse outro pra fazer o procedimento:

Private Sub cmdCadProf_Click()

ConnectDB
rs.Open [Ô]tblProf[Ô], db, 3, 3
rs.AddNew
rs(1) = [Ô][Ô] & txtIncProf.Text
rs.Update
Set rs = Nothing
db.Close: Set db = Nothing
End Sub


Como posso adaptar seu código para meu tipo de conexão?


MARIOANDRADE 16/02/2014 11:49:35
#434866
Citação:

:
Vou dar o meu pitaco.



Omar, valeu o pitaco, eu acho que entendi o que o Professor disse, tanto é que já tinha tentado deixar essa função nas mãos do banco de dados, mas o danado bem que podia apenas exibir uma mensagem de erro e não fechar o programa de modo a perder todas as informações que ainda não foram salvas, sem falar que um usuário comum vai achar que o programa está com defeito.

NILSONTRES 16/02/2014 13:30:16
#434867
MAR10 O N'mero de erro de duplicidade é esse -2147467259
então:
if err.number=-2147467259 then

Agora vc utilizado ADO, então não use addnew, utilize
Insert/Update/delete

Exemplo assim:
ConnectDB.execute [Ô]Insert Into Tabela (Campo1,Campo2) Values ([ô]valor1sefortexto[ô],valor2sefornumerico)[Ô]

Procure por manuais e exemplos sobre as instruções Sql.
Agora, pra falar a verdade agente acaba não falando por desconfiar que a pessoa vai ficar aborrecida, mas vejo que vc é um cara nota 10, ent]ao vou te dar é um conselho.

Já que vc esta começando, pare tudo e entre no visual studio, me parece que vc já tem o 2008 não é ?
Esqueça o vb6 e o access entre na plataforma .net e ado.net e Mysql como dica.
Vc esta fazendo uma coisa que tera que refazer tudo logo, logo.

Desculpe a sinceridade.
MARIOANDRADE 16/02/2014 13:51:01
#434868
Citação:

:
]Desculpe a sinceridade.



Não tem porque se desculpar Nilson, agradeço mesmo sua ajuda, eu queria mesmo ir para o VS2008 mas todo mundo ficou dizendo que era melhor o 2010 ou 2012, então tentei baixar o 2012 levou 2 horas fazendo o download e instalando, depois deu um erro, o 2008 eu ja tenho instalado e até ja esbocei algumas coisas nele.

Com relação ao banco de dados, se usar o Mysql por exemplo, sempre que instalar um programa tem que instala-lo também? Gosto do Access porque o Office todo mundo tem e não tem com que se preocupar.

Tenho um amigo que programa em Delphi e os programas dele dá um [Ô]trabalhão[Ô] pra instalar (se for uma pessoa leiga nem consegue por causa dos programas adicionais, firebird, mysql etc).

NILSONTRES 16/02/2014 14:57:46
#434870
Citação:

Com relação ao banco de dados, se usar o Mysql por exemplo, sempre que instalar um programa tem que instala-lo também? Gosto do Access porque o Office todo mundo tem e não tem com que se preocupar.


O Access não é um banco de dados, é um repositório(creditos ao KERPELUNKE), o Mysql sim, vc instala o servidor Mysql só na maquina servidor, e depois instala os odbc[ô]s em todas as maquinas, nada é facil de aprender nessa area, mas o retrono que vc vai ter não tem preço. São tantas vantagens em trapalhar como banco de dados de verdade que não da para te contar tudo.
Quando ao visual 2008 pode ir utilizando sem problemas, depois vc abre seus projetos no 2012 sem problemas, as mudanças não tem quase diferença.
MARIOANDRADE 16/02/2014 15:56:36
#434872
Citação:

:
Com relação ao banco de dados, se usar o Mysql por exemplo, sempre que instalar um programa tem que instala-lo também? Gosto do Access porque o Office todo mundo tem e não tem com que se preocupar.
O Access não é um banco de dados, é um repositório(creditos ao KERPELUNKE), o Mysql sim, vc instala o servidor Mysql só na maquina servidor, e depois instala os odbc[ô]s em todas as maquinas, nada é facil de aprender nessa area, mas o retrono que vc vai ter não tem preço. São tantas vantagens em trapalhar como banco de dados de verdade que não da para te contar tudo.
Quando ao visual 2008 pode ir utilizando sem problemas, depois vc abre seus projetos no 2012 sem problemas, as mudanças não tem quase diferença.



Valeu Nilson
Página 2 de 2 [19 registro(s)]
Tópico encerrado , respostas não são mais permitidas