Relation in Jet-DB löschen, wie?

23/10/2008 - 16:05 von Wilfried Dietrich | Report spam
Hallo Leute,

ich möchte gern in einer Jet-DB (mdb) herausfinden ob eine
Beziehung (Relation) zwischen zwei Tabellen besteht und wenn,
ja, dann diese entfernen / löschen.
Das ganze über ADOX oder Jet-SQL.
Nur wie ist die Syntax?

Dake im Voraus.
Wilfried
 

Lesen sie die antworten

#1 Wilfried Dietrich
24/10/2008 - 15:56 | Warnen spam
Ich habe eine, für mich noch nicht ganz befriedigende,
Lösung mit bzw. über die ADO-OHL gefunden.

Prinzip:

Den Namen der gesuchten Relation (Beziehung) habe ich
aus der MDB-Tabelle 'MSysRelationsships'.
Cnn ist eine bestehende ADODB.Connection.

Dim b as Boolean
Dim Relationsname As String
Dim RS As ADODB.Recordset

Set RS = New ADODB.Recordset
Relationsname = "MeineRelation" 'Name der Relation

Set RS = Cnn.OpenSchema(adSchemaReferentialConstrains)
' adSchemaReferentialConstrains, weil mir bekannt ist, _
dass die Relation mit referenzieller Integritàt angelegt wurde.
If RS.State = adStateOpen Then
If Not (RS.BOF And RS.EOF) Then
Do Until RS.EOF
If RS.Fields("CONSTRAINT_NAME").Value = Relationsname Then
b = True
Exit Do
End If
RS.MoveNext
Loop

If b Then
' löschen der Relation (Beziehung)
Cnn.Execute "ALTER TABLE Tablename DROP CONSTRAIN " & Relationsname
End If
End If
End If
Set RS = Nothing

Gibt es noch eine bessere Möglichkeit, auf das Vorhandensein
einer bestimmten Relation zu prüfen?
Einfacher und schöner wàre es, wenn die Tabelle MSysRelationsships
in ein Recordset eingelesen werden könnte. Das gelingt mir leider nicht.

Hat noch Jemand einen Lösungsvorschlag?


Gruß
Wilfried

Ähnliche fragen