MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Definir associação no relacionamento (VBA/SQL)

    avatar
    Jr.Wano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 29/01/2010

    [Resolvido]Definir associação no relacionamento (VBA/SQL) Empty Definir associação no relacionamento (VBA/SQL)

    Mensagem  Jr.Wano 7/2/2012, 19:15

    Ao criar uma tabela, estou com dificuldade em definir no relacionamento os tipos de associações: Propagar exclusão e propagar atualização

    strBancoExterno.DoCmd.RunSQL _
    "CREATE TABLE tb4RfB ( cdRfB AUTOINCREMENT PRIMARY KEY, " & _
    "CodigoRF Text (20) REFERENCES tb4RfA )"

    Até aqui: Cria a tabela, relaciona (muitos para um), impõe integridade referencial.

    Mas como definir as associações no SQL: Propagar exclusão e propagar atualização (ON DELETE e ON UPDATE) ?????

    Desde já agradeço qualquer ajuda.


    avatar
    Convidad
    Convidado


    [Resolvido]Definir associação no relacionamento (VBA/SQL) Empty Re: [Resolvido]Definir associação no relacionamento (VBA/SQL)

    Mensagem  Convidad 7/2/2012, 22:12


    Veja se ajuda:

    Autor: Ivan Coelho

    Código para criar e excluir relacionamento (Adaptado do Help Access).
    Coloque este código num Módulo.


    Public Function CriaRelacionamento(strTblUm As String, strTblMuitos As String, strCampoUm As String, strCampoMuitos As String)
    Dim dbs As Database
    Dim fld As Field, rel As Relation

    ' Retorna referência ao banco de dados atual.
    Set dbs = CurrentDb
    ' Cria novo relacionamento e define suas propriedades.
    Set rel = dbs.CreateRelation(strTblUm & strTblMuitos, strTblUm, strTblMuitos)
    ' Define atributos do objeto Relation para impor integridade referencial.
    rel.Attributes = dbRelationUpdateCascade
    ' Cria campo na coleção Fields do objeto Relation.
    Set fld = rel.CreateField(strCampoUm)
    ' Fornece nome do campo de chave estrangeira.
    fld.ForeignName = strCampoMuitos
    ' Acrescenta campo ao objeto Relation e o objeto Relation ao banco de dados.
    rel.Fields.Append fld
    dbs.Relations.Append rel
    MsgBox "Relação '" & rel.Name & "' criada."
    Set dbs = Nothing
    End Function


    Public Function ExcluiRelacionamento(strTblUm As String, strTblMuitos As String)
    Dim dbs As Database
    Dim rel As Relation

    ' Retorna referência ao banco de dados atual.
    Set dbs = CurrentDb
    ' Localiza a relação existente.
    For Each rel In dbs.Relations

    If rel.Table = strTblUm And rel.ForeignTable = strTblMuitos Then
    ' Avisa ao usuário antes de excluir a relação.
    If MsgBox(rel.Name & " já existe. " & vbCrLf _
    & "Essa relação será excluída.", vbOK) = vbOK Then
    dbs.Relations.Delete rel.Name
    ' Se o usuário escolheu Cancelar, sai do procedimento.
    Else
    Exit Function
    End If
    End If
    Next rel
    Set dbs = Nothing

    End Function


    Para chamar a funcão faça o seguinte:

    ' Cria Relacionamento
    Call CriaRelacionamento("Tabela1", "Tabela2", "CampoTabela1", "CampoTabela2")

    'Exclui Relacionamentos
    Call ExcluiRelacionamento("Tabela1", "Tabela2")


    Note que para criar os relacionamentos você precisa saber quais tabelas são de Relacionamento "Um para Muitos".

    Tabela1=Relacionamento de "Um"
    Tabela2=Relacionamento "Para Muitos"
    avatar
    Jr.Wano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 29/01/2010

    [Resolvido]Definir associação no relacionamento (VBA/SQL) Empty Re: [Resolvido]Definir associação no relacionamento (VBA/SQL)

    Mensagem  Jr.Wano 7/2/2012, 23:00

    Norberto,

    Agradeço pelo exemplo, mas tenho que definir as associações pelo SQL.

    Pelo que pesquisei, seria a inserção de ON DELETE CASCADE e ON UPDATE CASCADE,
    Mas dá erro: "Erro de sintaxe na cláusula CONSTRAINT."
    avatar
    Convidad
    Convidado


    [Resolvido]Definir associação no relacionamento (VBA/SQL) Empty Re: [Resolvido]Definir associação no relacionamento (VBA/SQL)

    Mensagem  Convidad 18/3/2012, 03:15


    Tópico marcado como resolvido.
    Se necessário, reabra.


    Grupo de Moderadores

    Conteúdo patrocinado


    [Resolvido]Definir associação no relacionamento (VBA/SQL) Empty Re: [Resolvido]Definir associação no relacionamento (VBA/SQL)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 05:25