Newsgroup: it.comp.appl.access
Titolo: creare relazione  con aggiornamento ed eliminazione a catena da vba con ADO

Dovrei creare la relazione fra il campo id della tabella insegnanti
contatore
e il campo idinsegnante della tabella insegnantirimborsokm integer
l'iustruzione cn.execute non la esegue, secondo voi cosa sbaglio?
'creo la relazione referenziale con aggiornamento ed eliminazione a catena
    Set cn = New ADODB.Connection
    cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
("C:\dati.mdb") & ";pwd=1234"
    cn.Execute "ALTER TABLE insegnantirimborsokm " & "ADD CONSTRAINT C1 " &
"FOREIGN KEY (Idinsegnante) REFERENCES insegnanti(Id) " & "ON UPDATE CASCADE
" & "ON DELETE CASCADE"
    cn.Close
    Set cn = Nothing

 ha scritto nel messaggio 
news:4672970a$0$10624$4faf...@reader2.news.tin.it...

Ciao Nicolas
dovresti dire anche l'errore che ricevi.
Dal tuo codice vedo che usi una stringa di connessione ODBC per un oggetto 
OLEDB e non mi sembra cosa buona :-)
Poi manca uno spazio prima di ON DELETE CASCADE.
Prova così
----
    Dim Cn As Connection
    Set Cn = New ADODB.Connection
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
             "Data Source=D:\Dati\Dati.mdb;" & _
             "Jet OLEDB:Database Password=1234;"
    Cn.Execute "ALTER TABLE insegnantirimborsokm " & _
               "ADD CONSTRAINT C1 FOREIGN KEY (Idinsegnante) " & _
               "REFERENCES insegnanti (Id) " & _
               "ON UPDATE CASCADE ON DELETE CASCADE"
----
Ciao
-- 
Giorgio Rancati
[Office Access MVP] 

 [Office Access MVP]
usando il tuo codice mi resistuisce l'errore
Errore di compilazione
Impossibile trovare il metodo o il membro dei dati
sulla riga ---> cn.open
se uso il mio codice esegue correttamente l'open ma sia con la tua execute 
sia con la mia
restituisce
l'errore seguente:
[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nella
proposizione CONSTRAINT.
????? che ne pensi?

 ????? che ne pensi?
Che mi sembra giusto, il driver odbc, come DAO, non può creare la relazione 
specificando l'eliminazione e la modifica a catena.


 [Office Access MVP]
bo proverò a liticarci ancora un pò

 bo proverò a liticarci ancora un pò
:-)


 ma credo che non cambi molto da quello ad access, però dimmi tu
aspetta, visto che usi sia dao che ado probabilmente dao è posto nei 
riferimenti prima di ado, quindi bisogna specificare l' oggetto Connection
riprova così
----
    Dim Cn As ADODB.Connection
    Set Cn = New ADODB.Connection
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
             "Data Source=C:\Dati.mdb;" & _
             "Jet OLEDB:Database Password=1234;"
    Cn.Execute "ALTER TABLE insegnantirimborsokm " & _
               "ADD CONSTRAINT C1 FOREIGN KEY (Idinsegnante) " & _
               "REFERENCES insegnanti (Id) " & _
               "ON UPDATE CASCADE ON DELETE CASCADE"
----
Ciao


 ha scritto nel 
messaggio news:4673160b$0$21193$5fc...@news.tiscali.it...

Ok, grazie ci provo e ti faccio sapere. 

 [Office Access MVP]
Fantastico!!!!! funziona perfettamente,
grazie infinite. 

 [Office Access MVP]
Un ultima domanda, mi consigli di usare addirittura per tutte le modifiche 
ADO?
visto che mi collego con DAO faccio qualche create table o alter table e poi 
chiudo per riaprire con ADO
Attendo un tuo parere, grazie. 

 chiudo per riaprire con ADO
Se usi DAO solo per fare qualche Create table o Alter table sě, toglilo dai
riferimenti e usa solo ADO.
Il discorso sarebbe diverso se tu avessi usato DAO per leggere/modificare i
records delle tabelle.
Ciao
-- 
