| Er der en som kender en metode, hvorpå man kan oprette en 1-mange relation i
 en access-database via VB
 
 Jeg har lavet et program som på grundlag af en databasestruktur, går ind og
 retter en anden database til at have samme databasestruktur.
 Når jeg så komme til relationerne har jeg et problem ved de relationer som
 er sat til "Gennemtving referentiel integritet" i  Access, dvs en relation
 som er 1 til mange.
 
 Først fjerne jeg alle relationerne, derefter alle index'er, derefter
 opretter jeg alle index'er og til sidst opretter jeg alle relationerne.
 
 Koden hertil er:
 
 Dim TD as TableDef, Rl as Relation, DB as Database DB2 as Database
 Dim Temp as String, X as Integer, Y as Integer
 
 'Genoprette alle Relationer
 For X = DB.Relations.Count - 1 To 0 Step -1
 If DB.Relations(X).Attributes = 0 Then
 Set Rl = DB2.CreateRelation(DB.Relations(X).Name, _
 DB.Relations(X).Table, _
 DB.Relations(X).ForeignTable, _
 2)      'HER ER PROBLEMMET. DEN VIL IKKE
 ACCEPTERE EN 0-VÆRDI
 Else
 Set Rl = DB2.CreateRelation(DB.Relations(X).Name, _
 DB.Relations(X).Table, _
 DB.Relations(X).ForeignTable, _
 DB.Relations(X).Attributes)
 End If
 Temp = ""
 Set TD = DB.TableDefs(DB.Relations(X).Table)
 'Her findes den primanøgle som brugers
 For Y = 0 To TD.Indexes.Count - 1
 If TD.Indexes(Y).Primary Then Temp = Mid(TD.Indexes(Y).Fields, 2,
 100)
 Next Y
 Debug.Print DB.Relations(X).Table & " + " &
 DB.Relations(X).ForeignTable & " = " & Temp
 DoEvents
 Rl.Fields.Append Rl.CreateField(Temp)
 Rl.Fields(Temp).ForeignName = Temp
 DoEvents
 DB2.Relations.Append Rl
 Next X
 
 Hvis man kigger i Access-databasen i systemfilen MSysRelationships er
 værdien i en 1-mange relation = 0 (grbit)
 
 Steen Alcor
 
 
 
 
 |