Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Mit C# Beziehungen in Access-Datenbank erstellen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.08.2004, 09:05 Uhr
~theolmue
Gast


Hallo,
ich muss in C# per Programmcode eine Access-Datenbank erzeugen. Dazu gehören neben Indizee auch Beziehungen zwischen Tabellen. Ich habe folgenden Code geschrieben, allerdings erzeugt die letzte Zeile eine Exception. Wer hat eine Idee?
Ach ja, es reicht nicht, nur eine Relation in einem Dataset zu erzeugen. Ich muss die Informationen in der .MDB haben!


C#:
private void createRelation(String KeyName,
                                      ADOX.Table Tabelle,
                                      String Feld,
                                      String FremdTabelle,
                                      String FremdFeld,
                                      RuleEnum UpdateRule,
                                      RuleEnum DeleteRule)
{
   // Schlüssel anlegen
   ADOX.Key key = new ADOX.KeyClass();
   key.Name = KeyName;
   key.Type = KeyTypeEnum.adKeyForeign;
   // Tabelle, auf die verwiesen wird festlegen
   key.RelatedTable = FremdTabelle;
   // Feld, das auf die andere Tabelle verweisen soll festlegen
   key.Columns.Append(Feld, Tabelle.Columns[Feld].Type,Tabelle.Columns[Feld].DefinedSize);
   // Feld, auf das verwiesen wird festlegen
   key.Columns[Feld].RelatedColumn = FremdFeld;
   System.Windows.Forms.MessageBox.Show(null,key.Columns.Count.ToString(),"");
   // Regeln festlegen
   key.DeleteRule = DeleteRule;
   key.UpdateRule = UpdateRule;
   // Schlüssel schreiben
// TODO: Relations funktionieren nicht        
   Tabelle.Keys.Append(key, 0, null, null, null);
}


PS: Die Tabellen und Felder existieren.

Damit ADOX bekannt ist, muss folgender COM-Verweis eingebunden sein:
Microsoft ADO Ext. 2.7 for DLL and Security

Dieser Post wurde am 13.08.2004 um 23:18 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.08.2004, 08:53 Uhr
~theolmue
Gast


Hallo,
ich habe inzwischen eine Lösung gefunden. Man muss die überall zu lesende Aussage, dass man mit ADO.NET keine Access-Datenbank anlegen kann wörtlich und ganz eng interpretieren. Man kann keine Datenbankdatei anlegen. Wenn man allerdings mit ADOX eine neue Datei angelegt hat, kann man durchaus Tabellen, Indizee und auch Beziehungen anlegen. Dazu benutzt man einfach das OleDBCommand-Objekt und setzt einfach normale SQL-Anweisungen ab. Zu beachten ist lediglich, dass bestimmte Feldnamen unter Access nur erlaubt sind, wenn man sie in eckige Klammern [] gesetzt sind. Ein Beispiel dafür ist der Feldname [Text].
Vielleicht kann diese Info ja noch jemand gebrauchen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.11.2005, 02:46 Uhr
~dekro
Gast


// TODO: Relations funktionieren nicht
Tabelle.Keys.Append(key, 0, null, null, null);


So gehts:
cat.Tables["Tablename"].Keys.Append(key, 0, Type.Missing, null, null);

Detlef Kroll
Kroll Software-Entwicklung
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: