DUPLICACAO NAO AUTORIZADA
Oi pessoal to tentano ta ligado , meu registro ten dois campos Codigo Proprietario e Codigo do Imovel , o Codigo do Proprietario Naun pode se repetir , e fiz um tratamento de erro que quando o usuario por deslexo colocar o mesmo codigo do Proprietario mais de uma vez aparecesse uma mensagem box , mas ai , o tipo de tratameto de erro , parece num dar , naun gostaria que o codigo do proprietario se repetisse , ja que naun ÂÂÂ'é autonumeracao ,
porque tipo o codigo do proprietaroi seria o nome dele
eo codigo do imovel seria a quantidade de imoveis que ele tem , entaun os codigos do proprietario naun poderia se repetir, entenderam obrigado
falow
porque tipo o codigo do proprietaroi seria o nome dele
eo codigo do imovel seria a quantidade de imoveis que ele tem , entaun os codigos do proprietario naun poderia se repetir, entenderam obrigado
falow
Post o código que VC faz isso, assim fica mais fácil estar te ajudando...
eu tinha copiado o erro q dava quando iso acontecia de duplicar mas esse jeito naun foi satisfatorio
'Inclui o registro
On Error GoTo erro
rsApartamentos.Update
CmdExcluir.Enabled = True
cmdAltCli.Enabled = True
CmdPesquisar.Enabled = True
erro:
'If err.Number = -2147467259 Then
'FrmMsgBoxIncluir.Show vbModal
'MsgBox (" Verifique se Este Codigo de Proprietário Consta No Formulario Proprietários"), vbInformation
'End If
'Inclui o registro
On Error GoTo erro
rsApartamentos.Update
CmdExcluir.Enabled = True
cmdAltCli.Enabled = True
CmdPesquisar.Enabled = True
erro:
'If err.Number = -2147467259 Then
'FrmMsgBoxIncluir.Show vbModal
'MsgBox (" Verifique se Este Codigo de Proprietário Consta No Formulario Proprietários"), vbInformation
'End If
Guto, o NEGÓ“CIO é o seguinte, se o NÃÅ¡MERO não puder ser repetido, e o mesmo vai ser utilizado em PESQUISAS, e como VOCÃÅ disse não é autonumeração, você pode implementar um pesquisa na base de dados antes de gravar o arquivo!!!
Ex:
Você pode fazer a mesma coisa com o METODO find, se não quiser ter muito acesso ao BANCO DE DADOS.... foi só um exemplo.. pra vc ADAPTAR..
Ex:
Private sub Gravar_Click()
Dim criterio as Integer
criterio = Text.Codigo
sql = "select * from imoveis where CODIGO=" & criterio
adodc1.recordsource = sql
adodc1.refresh
if adodc1.Recordset.EOF And Adodc1.Recordset.Bof Then
Adodc1.Addnew
Adodc1.Recordset![CODIGO] = txtCodigo
'......
ELSE
Msgbox "Erro: este CÓ“DIGO já existe!"
End if
Adodc1.Recordset= "select * from imoveis"
Adodc1.Refresh
End Sub
Você pode fazer a mesma coisa com o METODO find, se não quiser ter muito acesso ao BANCO DE DADOS.... foi só um exemplo.. pra vc ADAPTAR..
eu colocaria isso no botao incluir?
Sim, mas como falei... dependendo... da situação..você poderia usar o FIND.... pois do jeito que coloquei acima... accessa muito o bd.... mas foi só uma Logica.. PRA VC...
Sacou?
Sacou?
Guto, poderia explicar melhor o funcionamento da coisa?
é que, parece, você estar a gravar numa determinada tabela o nome de uma determinada pessoa, o que é perfeitamente aconselhável, pois gravar o nome ocupa muito mais espaço que você gravar um código, que seria, com certeza, muito mais pequeno.
Se fosse eu, criaria uma tabela com os nomes (e outros dados que você achasse de interesse) e um código numérico para cada cliente(esse código seria o que ficaria gravado em todas as tabelas onde o cliente interviesse.
Para que o mesmo cliente se não devesse repetir, se não tivesse qualquer outro dado de referência, colocaria que o nome não se pudesse repetir, mas atenção pois os nomes para chave são sempre muito perigosos pois basta que o mesmo nome seja escrito de forma diferente para que um só cliente possa aparecer duas ou mais vezes.
O número fiscal ou algo do género é o ideal para que a mesma pessoa não possa aparecer como cliente mais do que uma vez.
Depois construia uma lista de valores para o utilizador escolher, onde apenas interviriam clientes já cadastrados, onde embora mostrasse o nome, o que ficaria gravado seria o respectivo código.
Para que o nome figurasse acoplado ao código sempre que necessário apenas seria necessário ir buscá-lo à  tabela de clientes.
Não sei se me fiz entender, mas o que pretendia, era não só ajudar na resolução do problema mas, ao mesmo tempo fazer com que a sua informação ficasse organizada de uma forma mais correcta.
De qualquer forma os elementos que forneceu são ainda insuficientes para dar qualquer ajuda.
é que, parece, você estar a gravar numa determinada tabela o nome de uma determinada pessoa, o que é perfeitamente aconselhável, pois gravar o nome ocupa muito mais espaço que você gravar um código, que seria, com certeza, muito mais pequeno.
Se fosse eu, criaria uma tabela com os nomes (e outros dados que você achasse de interesse) e um código numérico para cada cliente(esse código seria o que ficaria gravado em todas as tabelas onde o cliente interviesse.
Para que o mesmo cliente se não devesse repetir, se não tivesse qualquer outro dado de referência, colocaria que o nome não se pudesse repetir, mas atenção pois os nomes para chave são sempre muito perigosos pois basta que o mesmo nome seja escrito de forma diferente para que um só cliente possa aparecer duas ou mais vezes.
O número fiscal ou algo do género é o ideal para que a mesma pessoa não possa aparecer como cliente mais do que uma vez.
Depois construia uma lista de valores para o utilizador escolher, onde apenas interviriam clientes já cadastrados, onde embora mostrasse o nome, o que ficaria gravado seria o respectivo código.
Para que o nome figurasse acoplado ao código sempre que necessário apenas seria necessário ir buscá-lo à  tabela de clientes.
Não sei se me fiz entender, mas o que pretendia, era não só ajudar na resolução do problema mas, ao mesmo tempo fazer com que a sua informação ficasse organizada de uma forma mais correcta.
De qualquer forma os elementos que forneceu são ainda insuficientes para dar qualquer ajuda.
o negocio é o seguinte o Programa é cadastro de Imoveis , oq significa no sitema de trabalho de uma imobiliaria que os interessados em imoveis naun podem ter acesso aos registros dos proprietarios dos imoveis que else se interressem , pq veja bem imagina q eu quero um aaprtamento e no sistema de cadastro de imoveis aaprece o nome desse proprietario desse apartamento eos dados deles como telefone etc , pra q q eu vou tratar com o carretaor e ter q dar comissao pra ele , eu vou tratar diretamente com o dono , entaun a pessoa interessada em COMPRAR naun pode ver os dados do proprietario que esta VENDENDO akilo que esta no Form por isso criei no Form Apartamento o campo chamado Codigo do proprietario , que seria numerico e seria o modo de identifica-lo no Form Proprietarios , mas convenhamos que esse proprietario pode ter mais de um Apartamento pra VENDER eu teria que cadastrar os dois , pq eles tem caracteristoicas diferentes , o proprietario é o mesmo mas o codigo do imovel muda , nesse caso o codigo do proprietario continuaria 1 , mas o codigo do imovel seria ja 2, naun gostaria q por deslexo , oq pode acontecer o usuario cadastrar o codigo do proiprietario 1 e codigo do imovel 2 , mais de uma vez , entaun naun gostaira que pudesse duplicar e avisasse o usuario q ele esta fazendo "cagada" vcamos dizer assim, saco?
Bom, parece que agora já percebi o funcionamento da coisa.
O que você precisa é algo do género, é so mesmo adaptar:
Public Function ConfirmarRegisto(ByVal strIdentificativo As String, ByVal strCodigo As Long) As Boolean
Set rstMovimentos = New ADODB.Recordset
strSql = "SELECT id_movimento, Codigo FROM tMovimentos"
strSql = strSql & " WHERE tMOVIMENTOS.id_movimento ='" & strIdentificativo & "'"
strSql = strSql & " and tMOVIMENTOS.Codigo = " & strCodigo & ""
rstMovimentos.CursorLocation = adUseClient
rstMovimentos.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
If Not rstMovimentos.EOF Then
ConfirmarRegisto = True
Else
ConfirmarRegisto = False
End If
rstMovimentos.Close
Set rstMovimentos = Nothing
End Function
O que você precisa é algo do género, é so mesmo adaptar:
Public Function ConfirmarRegisto(ByVal strIdentificativo As String, ByVal strCodigo As Long) As Boolean
Set rstMovimentos = New ADODB.Recordset
strSql = "SELECT id_movimento, Codigo FROM tMovimentos"
strSql = strSql & " WHERE tMOVIMENTOS.id_movimento ='" & strIdentificativo & "'"
strSql = strSql & " and tMOVIMENTOS.Codigo = " & strCodigo & ""
rstMovimentos.CursorLocation = adUseClient
rstMovimentos.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
If Not rstMovimentos.EOF Then
ConfirmarRegisto = True
Else
ConfirmarRegisto = False
End If
rstMovimentos.Close
Set rstMovimentos = Nothing
End Function
Ok eu acabei de mudar pra isso e naun deu certo, valews
Public Function ConfirmarRegisto(ByVal strIdentificativo As String, ByVal strCodigo As Long) As Boolean
Set rsarea = New ADODB.Recordset
strSQL = "SELECT Codigo, CodigoImo FROM Tbl_Areas"
strSQL = strSQL & " WHERE Tbl_Areas.CodigoImo ='" & strIdentificativo & "'"
strSQL = strSQL & " and Tbl_Areas.Codigo = " & strCodigo & ""
rsarea.CursorLocation = adUseClient
rsarea.Open strSQL, cnBd, adOpenKeyset, adLockReadOnly, adCmdText
If Not rsarea.EOF Then
ConfirmarRegisto = True
Else
ConfirmarRegisto = False
End If
rsarea.Close
Set rsarea = Nothing
End Function
Public Function ConfirmarRegisto(ByVal strIdentificativo As String, ByVal strCodigo As Long) As Boolean
Set rsarea = New ADODB.Recordset
strSQL = "SELECT Codigo, CodigoImo FROM Tbl_Areas"
strSQL = strSQL & " WHERE Tbl_Areas.CodigoImo ='" & strIdentificativo & "'"
strSQL = strSQL & " and Tbl_Areas.Codigo = " & strCodigo & ""
rsarea.CursorLocation = adUseClient
rsarea.Open strSQL, cnBd, adOpenKeyset, adLockReadOnly, adCmdText
If Not rsarea.EOF Then
ConfirmarRegisto = True
Else
ConfirmarRegisto = False
End If
rsarea.Close
Set rsarea = Nothing
End Function
alguem
Tópico encerrado , respostas não são mais permitidas