verwendetes Datenbanksystem: <Access>
Wie kann man die kardinalitäten in access auslesen
Ist es möglich, die Tabellen und Spalten auszugeben die einer Tabelle in beziehung stehen?
Hallo,
schaue dir die Tabelle MSysRelationships mal an.
Grüße
**:::
Das klingt nach einem guten ansatz, aber ich habe keine ahnung wo ich in der tabele nachgucken soll.
währe nett wenn mir da jemand helfen könnte.
(Auf die tabelle ist kein zugriff per sql möglich)
Hallo,
du musst den Zugriff auf die Systemtabelle gewähren. Das kannst du mit MS Access erledigen.
Grüße
**:::
Ich habs nach langem suchen gelöst bekommen hier meine lösung
// Con ist die OleDbConnection
// Tabellenauflistung ist eine Combobox
DataTable dataTable = Con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { });
Tabellenauflistung.Items.Clear();
for (int i = 0; i < dataTable.Rows.Count; i++)
{
if (dataTable.Rows_["TABLE_TYPE"].ToString() == "TABLE")
Tabellenauflistung.Items.Add(dataTable.Rows_["TABLE_NAME"].ToString());
}
dataTable = Con.GetOleDbSchemaTable(OleDbSchemaGuid.Constraint_Column_Usage, new object[] { });
for (int i = 0; i < dataTable.Rows.Count; i++)
{
foreach (var item in Tabellenauflistung.Items)
{
if (dataTable.Rows_["TABLE_NAME"].ToString() == item.ToString() &&
dataTable.Rows_["CONSTRAINT_NAME"].ToString() != "PrimaryKey")
{
// in h steht der verweisende schlüssel "COLUMN_NAME"
object n = dataTable.Rows_["COLUMN_NAME"];
// in c steht der name der constraint "CONSTRAINT_NAME"
object c = dataTable.Rows_["CONSTRAINT_NAME"];
}
}
}