bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Criar relacionamentos entre as tabelas, usando o CONSTRAINT
Criar relacionamentos entre as tabelas, usando o CONSTRAINT

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

No exemplo abaixo foi criado o relacionamento de Um para Muitos.  O lado Um tem a tabela exemplo tblClientes e o lado Muitos tem a tabela exemplo tblClienteContatos.  Observe que estou usando a conexão ADO para que funcionem as declarações ON UPDATE e ON DELETE.

Faça o login aqui para ter acesso ao código.

O nome rel (pode ser qualquer nome) serve para identificar o relacionamento e foi utilizado no código abaixo para excluir o relacionamento.  A declaração ON UPDATE CASCADE marca a opção "Propagar atualizações dos campos relacionados" e ON DELETE CASCADE marca a opção "Propagar exclusão dos registros relacionados".  Veja na imagem abaixo:

Usando Access - ADD CONSTRAINT

Para excluir o relacionamento, utilize o DROP CONSTRAINT:

currentdb.Execute "ALTER TABLE tblClienteContatos DROP CONSTRAINT rel"

Também é possível utilizar o CreateRelation do DAO para criar os relacionamentos.  Observe o código abaixo:

Faça o login aqui para ter acesso ao código.

Segue abaixo, a tabela dos atributos que podemos configurar no CreateRelation:

Nome Atributo Valor Descrição
dbRelationDeleteCascade 4096 Exclusão em cascata
dbRelationDontEnforce 2 Relação não imposta (sem integridade referencial)
dbRelationInherited 4 Existe relação no banco de dados que contém as duas tabelas vinculadas
dbRelationLeft 16777216 Exibir LEFT JOIN como tipo de associação padrão
dbRelationRight 33554432 Exibir RIGHT JOIN como tipo de associação padrão
dbRelationUnique 1 Relação um para um
dbRelationUpdateCascade 256 Atualização em cascata

 

Bom estudo!


 

 


7 comentário(s)

Fabio Matos   26/11/2018 12:49:13

Funcionou perfeitamente!!

Obrigado mais uma vez.

Avelino Sampaio   26/11/2018 09:39:37

Fabio,

teste sem a exclamação antes do parênteses:

relNew.Fields(VarCF).ForeignName = VarFN

No aguardo

Fabio Matos   26/11/2018 08:17:07

Mestre, segue conforme solicitado:

---------------------------------------
Public Sub fncCriarRelac()

Dim bd As DAO.Database
Dim relNew As DAO.Relation
Dim NomeRelac As String
Dim VarTbl As String
Dim VarTblEstrangeira As String
Dim Comando1 As Integer
Dim VarCF As String
Dim VarFN As String

NomeRelac = "teste" 'DLookup("[nomerelac]", "cs_versaobe_criarRelac", "[Seq]=" & 1)
VarTbl = "tbl_movestoque_lanccaixa" 'DLookup("[tblprimaria]", "cs_versaobe_criarRelac", "[Seq]=" & 1)
VarTblEstrangeira = "tbl_rot_lanccaixa" 'DLookup("[tblEstrangeira]", "cs_versaobe_criarRelac", "[Seq]=" & 1)
Comando1 = 2 'DLookup("[comando1]", "cs_versaobe_criarRelac", "[Seq]=" & 1)
VarCF = "cod_lancCaixa_movestoqueLancCaixa" 'DLookup("[PK]", "cs_versaobe_criarRelac", "[Seq]=" & 1)
VarFN = "cod_lancCaixa" 'DLookup("[FK]", "cs_versaobe_criarRelac", "[Seq]=" & 1)

Set bd = DBEngine.OpenDatabase(DLookup("Path_0", "tblCaminhoBe"), False, False, ";PWD=xpto")

Set relNew = bd.CreateRelation(NomeRelac, VarTbl, VarTblEstrangeira, _
Comando1)

relNew.Fields.Append relNew.CreateField(VarCF)
relNew.Fields!(VarCF).ForeignName = VarFN

bd.Relations.Append relNew

MsgBox "Banco de Dados do Sistema, Atualizado com Sucesso.", vbInformation, "Eleve Sys - FLM SISTEMAS"
Set bd = Nothing
Set relNew = Nothing

End Sub
------------------------------------
Deixei o DlookUp como comentário para ficar mais claro os dados que ele está buscando.
Na parte "relNew.Fields!(VarCF).ForeignName", se eu colocar o valor real da variável, que é "cod_lancCaixa_movestoqueLancCaixa", aí funciona normalmente.

Avelino Sampaio   26/11/2018 07:32:29

Fabio,

cole aqui seu código completo da função CreateRelation()

No aguardo

Fabio Matos   26/11/2018 07:13:31

Mestre, ocorreu o erro:

"Erro de Compilação:
Caractere de declaração de tipo não correspondente ao tipo de dados declarado"

Li o artigo, mas vi que nenhum dos exemplos tem um controle como neste ex: (VarCampo).ForeignName
Estou tentando da seguinte forma:
relNew.Fields!(VarCampo).ForeignName

Avelino Sampaio   26/11/2018 02:02:08

Fabio,

utilize o parênteses conforme dica deste meu artigo:

http://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-relatorios-propriedades.asp?id=1#inicio

Sucesso!

Fabio Matos   25/11/2018 18:47:22

Mestre Avelino, boa noite.
Consegui fazer o CreateRelation no BackEnd normalmente, porém, quero automatizar o processo de cada atualização do meu front, mas para isso, substituí os comandos por variáveis que buscam os dados via Dlookup...

Ex:
CreateRelation(VarNomeRelac, VarTabela, VarTabelaFK, _
VarTipoRelac)

Até aqui funcionou perfeitamente. Só estou com um problema muito "simples", mas que não consegui resolver.

Na parte "relNew.Fields!IdCliente.ForeignName" eu não consigo substituir este campo 'Idcliente' por uma variável (ex: relNew.Fields!VarCampo.ForeignName), pois informa o seguinte erro:
"Item não encontrado nesta seleção"

Existe uma forma de fazer isso?


Envie seu comentário: