21. Juni 200520 j Hi Leute, hab da mal ne fraaaage: Ich greife über eine ADO Verbindung auf eine Datenbank zu. Wie kann ich nun eine Abfrage machen oder eine Interne Funktion verwenden mit der ich rausfinden kann ob ein bestimmtes Feld in einer Bestimmten Tabelle ein teil des Primärschlüssels ist?
21. Juni 200520 j Jedes Feld hat Attribute (eine Collection von > 90 Werten), musst dir die wohl mal durchgucken (Überwachung). Sollte dabei sein, bin aber nicht 100% sicher, hab auch grad kein VS hier.
21. Juni 200520 j die methode OpenSchema des Connection-objekts liefert dir eine vielzahl von infos, darunter auch adSchemaKeyColumnUsage und adSchemaPrimaryKeys - in dieser ergebnisliste sollten die definierten schlüsselspalten zu fidnen sein. s'Amstel
21. Juni 200520 j weeil ich hier algemeine infos zu der db bekomme und nicht zu einer spezifischen tabelle
21. Juni 200520 j Set Rs = Cn.OpenSchema(adSchemaKeyColumnUsage) For i = 0 To Rs.RecordCount - 1 For j = 0 To Rs.Fields.Count Me.List2.AddItem Rs.Fields("TABLE_NAME") Debug.Print Rs.Fields(j) Rs.MoveNext Next j Next i in Rs.Fields(2).value steht PRIMARY, das ist in meiner zugrundeliegenden tabelle (hier testhalber mysql) eine primärschlüsselspalte. auf welche datenbank greifst du denn mit ADO zu? s'Amstel
21. Juni 200520 j könntest du dich ein wenig präzisieren - 7.0, 2000, 2005? weil ab 2000 gibts die schema views in information_schema das kannte sql server 7.0 noch nicht, darum wird auch adSchemaKeyColumnUsage nichts ausspucken
21. Juni 200520 j sooo jetzt hat sich alles geändert, ich soll das nun in access machen :-((( da geht jetzt garnix mehr :-((( son ******
22. Juni 200520 j die meines wissens einzige möglichkeit, die dir mit access bleibt, ist die TableDef und deren Indexes zu durchforsten. andere möglichkeiten gibts nicht, weder mit ADO noch mit MSysObjects. For Each tbl In db.TableDefs sIndex$ = "" For Each idx In tbl.Indexes If idx.Primary Then For Each fld In idx.Fields sIndex$ = sIndex$ & " & ' & ' & [" & fld.Name & "]" Next fld End If Next idx Next tbl HTH, s'Amstel
28. Juni 200520 j hast du in der zwischenzeit eine lösung gefunden? 'n bisschen feedback wär hilfreich. s'Amstel
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.