Hej
Jeg har et problem, når jeg i VB rette en access database, som skal
indeholder tabeller med en "1-til-Manger-relation"
Jeg har en brugerdatabase (DB2) som skal ændres til samme struktur som en
skabelondatabase (DB)
Koden for relationer-oprettelse er her:
'Først slettes alle relationer og indexer i DB2
'Genoprette alle indexer i DB2
For X = 0 To DB.TableDefs.Count - 1
If Left(DB.TableDefs(X).Name, 4) <> "MSys" Then
Set TD = DB2.TableDefs(DB.TableDefs(X).Name)
For Y = DB.TableDefs(X).Indexes.Count - 1 To 0 Step -1
Set Idx = TD.CreateIndex(DB.TableDefs(X).Indexes(Y).Name)
With Idx
.Fields = DB.TableDefs(X).Indexes(Y).Fields
.Unique = DB.TableDefs(X).Indexes(Y).Unique
.Primary = DB.TableDefs(X).Indexes(Y).Primary
.IgnoreNulls = DB.TableDefs(X).Indexes(Y).IgnoreNulls
End With
TD.Indexes.Append Idx
Next Y
End If
Next X
'Genoprette alle Relationer i DB2
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, 0)
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)
For Y = 0 To TD.Indexes.Count - 1
If TD.Indexes(Y).Primary Then Temp = Mid(TD.Indexes(Y).Fields, 2,
100)
Next Y
Rl.Fields.Append Rl.CreateField(Temp)
Rl.Fields(Temp).ForeignName = Temp
DB2.Relations.Append Rl
Next X
Hvis man kigger i MsysRelationships i Access (Funktioner/Indstillinger..,
Vis systemobjekter) på en "1-til-Manger-relation", så har den værdien 0 i
grbit, det vil sige den 4. værdi i CreateRelation-funktion skal være 0, men
den melder fejl, hvis værdien er 0.
Fejlen er: 3284. Index findes akkerede.
Men hvis jeg ikke laver afsnittet 'Genoprette alle indexer i DB2', så melder
den:
3609. Der blev ikke fundet et unik indeks for det felt, der refereres til, i
den primære tabel.
Hvis jeg i stedet sætter et 2 i CreateRelation-funktion, og derved opretter
en almindelig relation, er der ingen problemmer.
HVAD SKAL MAN GØRE FOR AT OPRETTE EN "1-TIL-MANGER-RELATION" I EN
ACCESS-DATABASE VIA VB.
Tak på forhånd for hjælpen
|