Newsgroup: it.comp.appl.access
Titolo: Impostare o disattivare relazione tramite VBA

Salve,
ho una tabelladocumenti in relazione 1 a molti (con integrità referenziale e 
tutto il resto) alla tabelladettaglidocumenti.
Ho costruito una maschera con sottomaschera per inserire i dati.
Ora il problema è che quando inserisco un nuovo documento provo a copiare i 
dettagli di un documento precedente (attraverso delle query di accodamento) 
ma mi dice che è impossibile perchè è necessario nella tabdocumenti un 
record correlato.
Ho pensato... (sentite la pensata da newbie) se potessi disattivare la 
relazione per attivarla in un secondo momento attraverso VBA?
Che voi sappiate è possibile?
Se poi avete una soluzione migliore... son ben contento
(del tipo ce l'ho davanti agli occhi ma non la vedo...)
Spero di essere stato chiaro.
Luca
HTH 

 Che voi sappiate è possibile?
Certo che è possibile.
Non ti riesce di inserire un dato perché incompatible
con la relazione?  Bene, togli la relazione e inserisci il dato.
Quando poi vai a reinserire la relazione questa è incompatibile
col dato e non ci va.
"Gli enigmi sono tre, la morte una" diceva Turandot:
1 - inserisci il dato senza relazione
2 - inserisci la relazione senza il dato
3 - inserisci altro dato compatibile con la relazione.
Quartum non datur!
Bruno 

L'errore che ti segnala è corretto, l'uso di relazioni con integrità
referenziale
ti vincola in questo, e quanto stai chiedendo è decisamente fuori
dalla buona
regola dell'uso di DB relazionali.
Il problema non è la relazione in se, ma il modo in cui tu vorresti
fare lavorare la
cosa che è inammissibile, come è inconcepibile la tua richiesta.
Prima devi creare il Documento, poi copiare quelli del documento
precedente
questo è il percorso operativo da seguire e questo va seguito...!!!!!
Se vuoi vedere i dati sfrutta il DefaultValue del controllo, in questo
modo il record
non verrà salvato finchè non avrai definito il Documento ed avendo
impostato
il DefaultValue non verrà generato l'evento Current(NewRecord)...!
Non si devono trovare strade complesse per fare quello che normalmente
si
deve riuscire a fare senza fatica....!
Saluti.
@Alex

Avete perfettamente ragione,
comunque ho risolto impostando una tabella di appoggio come origine record 
del subform . all'apertura del nuovo documento presento nei dettagli le 
righe riprese dai dettagli del documento salvato precedentemente.
Alla chiusura del form salvo il documento e scarico la tabella di appoggio 
travasando i dati nella tabella dettagli.
Era più semplice del previsto.
Comunque sono curioso di sapere come impostare le relazione tramite VBA.
Vi ringrazio per l'aiuto.
Luca 

Function CreateRelation([Name], [Table], [ForeignTable], [Attributes])
As Relation
    Membro di DAO.Database
Ciao
@Alex

 Comunque sono curioso di sapere come impostare le relazione tramite VBA.
===============================================
Private Sub Command2_Click()
Dim NewRel As Relation
Dim MainTable As String         ' la tabella principale, lato 1
Dim MainTableField_1 As String  ' 1° campo-relazione della tab. principale
Dim MainTableField_2 As String  ' 2° campo-relazione della tab. principale
Dim RelatedTable As String      ' tabella relazionata, lato molti
Dim RelatedTableField_1         ' 1° campo-relazione della tab. relazionata
Dim RelatedTableField_2         ' 2° campo-relazione della tab. relazionata
Dim RelationName                ' nome da assegnare alla relazione
RelationName = "AAA"
MainTable = "TT1"
MainTableField_1 = "ID_AAA"
MainTableField_2 = "ID_BBB"
RelatedTable = "TT2"
RelatedTableField_1 = "ID_KK"
RelatedTableField_2 = "ID_WW"
Set NewRel = CurrentDb.CreateRelation(RelationName, MainTable, RelatedTable)
NewRel.Attributes = dbRelationUpdateCascade + dbRelationDeleteCascade
NewRel.Fields.Append NewRel.CreateField(MainTableField_1)
NewRel.Fields.Append NewRel.CreateField(MainTableField_2)
NewRel.Fields(MainTableField_1).ForeignName = RelatedTableField_1
NewRel.Fields(MainTableField_2).ForeignName = RelatedTableField_2
CurrentDb.Relations.Append NewRel
End Sub
==================================================
Bruno