Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con DB (per esperti)

Ciao a tutti,
Ho il seguente problema:
ho creato un DataBase di tipo Access in VB 5.0 con due tabelle:
    - la prima TabellaProdotti contiene i campi +ACI-uno+ACI-, +ACI-due+ACI- e +ACI-tre+ACI-
    - la seconda TabellaConsegne i campi +ACI-uno+ACI-, +ACI-due+ACI-, +ACI-tre+ACI-, +ACI-prova1+ACI- e
+ACI-prova2+ACI-
mi interessa creare una relazione uno-a-molti tra la tabella TabellaProdotti
e la tabella TabellaConsegne.
la tabella TabellaProdotti contiene i campi +ACI-uno+ACI-, +ACI-due+ACI- e +ACI-tre+ACI- che sono
univoci e quindi ho creato una chiave primaria che mi include tutti e tre i
campi.
la tabella TabellaConsegne contiene anche questa i campi +ACI-uno+ACI-, +ACI-due+ACI- e
+ACI-tre+ACI- che pero' non sono univoci (ovvero e possibile avere piu' record con i
valori di +ACI-uno+ACI-, +ACI-due+ACI- e +ACI-tre+ACI- uguali).
Bene... io devo creare una relazione tra la tabella TabellaProdotti e la
tabella TabelleConsegne legando i campi +ACI-uno+ACI-, +ACI-due+ACI- e +ACI-tre+ACI- presenti nelle
due tabelle.
Il problema +AOg- che da VB 5.0 non riesco a creare la relazione che mi
interessa perche' VB mi da un messaggio di errore dicendo che non puo'
creare una relazione tra le due tabelle perche sulla tabella TabellaConsegne
non e stata definita nessuna chiave primaria o nessun indice univoco.
Ma se io devo creare una relazione uno-a-molti che senso ha avere un indice
univoco sulla tabella del lato +ACI-molti+ACI-?
E poi perche' attraverso Access 97 riesco a fare quello che mi serve e
attraverso VB no?
Io mi ritengo un'esperto di VB e DATABASE pero' questa e' piu' grossa di
me+ACEAIQ-
Se qualcuno sa risolvere il mio problema allora vuol dire che e' veramente
un mito e merita il logio di TUTTI.
CIAO e grazie delle eventuali risposte...
Mario Paracchino
mparacchino+AEA-easysoftware.it

Prova con questo, a me funziona
    Dim DB As Database
    Dim MyRelation As Relation
    Dim MyTableConsegne As TableDef
    Dim MyTableProdotti As TableDef
    Dim MyField As Field
    Set DB = OpenDatabase("DATABASE.MDB")
    Set MyTableConsegne = DB.TableDefs("Consegne")
    Set MyTableProdotti = DB.TableDefs("Prodotti")
    Set MyRelation = DB.CreateRelation("ProdottiToConsegne",
MyTableProdotti.Name, MyTableConsegne.Name)
    Call MyRelation.Fields.Append(MyRelation.CreateField("Uno"))
    MyRelation.Fields("Uno").ForeignName = "Uno"
    Call MyRelation.Fields.Append(MyRelation.CreateField("Due"))
    MyRelation.Fields("Due").ForeignName = "Due"
    Call MyRelation.Fields.Append(MyRelation.CreateField("Tre"))
    MyRelation.Fields("Tre").ForeignName = "Tre"
    DB.Relations.Append MyRelation
ha dato anche a me lo stesso errore, probabilmente o hai invertito l'ordine
delle tabelle o non hai creato tutti e tre i campi prima di fare l'append
della relazione (io ho trovato questi errori mentre facevo le prove)
Ciao
Riccardo

Hai pescato un bel Bug! Effetivamente io non sono ancora riuscito a
risolverlo, se non impostando un indice primario...
Però con Access Funziona! Se trovi una scappatoia (che non sia quello di
fare il DB con Access) dimmelo; un'idea sarebbe quella di andare a scrivere
la tabella MSysRelationships direttamente, ma presumo che ci siano dei
blocchi di accesso e non ho tempo di approfondire la questione.
A buon rendere.
Saluti
Longo Daniele