relazioni tabelle da vba

Anonimo
2014-05-11T13:02:50+00:00

buonasera, ho creato un db access con be e fe, ho creato una maschera che mi permette di esportare e aggiornare le relazioni tra le tabelle tramite vba

il problema sorge quando voglio rendere dinamica la cosa, cioe' quando voglio utilizzare delle variabili che contengono le tabelle da relazionare, l'id della relazione

il codice che utilizzo e' questo

VTabellaPrimaria = RRelazioni.Fields("TabellaPrimaria")

VTabellaSecondaria = RRelazioni.Fields("TabellaSecondaria")

VIDRelazione = RRelazioni.Fields("IDRelazione")

VRelazione = "Rel" & Mid(VTabellaPrimaria, 2) & Mid(VTabellaSecondaria, 2)

With VDbArchivio

' creare la relazione con update e delete cascade

   Set VRel = .CreateRelation(VRelazione, VTabellaPrimaria, VTabellaSecondaria, _

   VDbArchivioRelationUpdateCascade + VDbArchivioRelationDeleteCascade)

' creare i campi nella relazione

   VRel.Fields.Append VRel.CreateField(VIDRelazione)

VRel.Fields![VIDRelazione].ForeignName = VIDRelazione

   .Relations.Append VRel

End With

Set VRel = Nothing

il punto in cui va in errore e' quello evidenziato in grassetto, non lo riconosce

come posso fare?

spero di essere stata chiara

grazie

saluti

Gio'

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-05-12T11:04:47+00:00

risolto, mi ero mangiata questa riga

.Relations.Append VRel

grazie, ora va alla grande

ti chiedo solo un'ultima cosa, giusto per perfezionare il tutto, c'e' un modo per aggiornare in automatico il layout delle relazioni?

giusto per vederle

grazie

saluti

Gio'

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-05-12T08:29:16+00:00

Ciao Gio',

prova così sostituendo questo codice all'istruzione in grassetto e a quella immediatamente precedente

Dim relatingField as DAO.Field

Set relatingField = VRel.CreateField(VIDRelazione)

relatingField.ForeignName = VIDRelazione

vRel.Fields.Append relatingField

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2014-05-12T10:58:06+00:00

    ho provato, non da piu' l'errore ma non mi crea la relazione, ti posto il codice che ho utilizzato

    Do While Not RRelazioni.EOF

       VTabellaPrimaria = RRelazioni.Fields("TabellaPrimaria")

       VTabellaSecondaria = RRelazioni.Fields("TabellaSecondaria")

       VIDRelazione = RRelazioni.Fields("IDRelazione")

       VRelazione = "Rel" & Mid(VTabellaPrimaria, 2) & Mid(VTabellaSecondaria, 2)

       With VDbArchivio

    ' creare la relazione con update e delete cascade

          Set VRel = .CreateRelation(VRelazione, VTabellaPrimaria, VTabellaSecondaria, _

          dbRelationUpdateCascade + dbRelationDeleteCascade)

    ' creare i campi nella relazione

    '      VRel.Fields.Append VRel.CreateField(VIDRelazione)

    '      VRel.Fields![VIDRelazione].ForeignName = VIDRelazione

    '      .Relations.Append VRel

           Set VRelatingField = VRel.CreateField(VIDRelazione)

           VRelatingField.ForeignName = VIDRelazione

           VRel.Fields.Append VRelatingField

       End With

       Set VRel = Nothing

       RRelazioni.MoveNext

    Loop

    ho sostituito i punti che mi hai detto tu, non va in errore, ma quando apro il db esterno e seleziono le due tabelle nel layout delle relazioni, non sono relazionate

    dove sbaglio?

    grazie

    saluti

    Gio'

    La risposta è stata utile?

    0 commenti Nessun commento