Laden...

[erledigt ]Access, Absturz beim Erzeugen von Beziehungen

Erstellt von lukasS vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.679 Views
lukasS Themenstarter:in
65 Beiträge seit 2009
vor 6 Jahren
[erledigt ]Access, Absturz beim Erzeugen von Beziehungen

Hallo,

ich habe mit C# eine Access-DB erzeugt und möchte nun Beziehungen zu den einzelnen Tabellen herstellen. Leider kriege ich einen Absturz in der Zeile "rel.Fields.Append(fld);" mit der Meldung "Das Objekt ist ungültig, oder es ist nicht mehr festgelegt". Meine Internetsuche ergab leider keinen Erfolg.
Ist vielleicht die Datenbank (CurrentDB) nicht richtig da/verbunden?

Das ist übrigends der selbe Code, wie ich den auch in VBA habe, dort läuft es, mit C# aber nicht.


            MOIA.ApplicationClass oAccess = new MOIA.ApplicationClass();
            oAccess.OpenCurrentDatabase(_sOutputFilePath, true);
            Database db =  oAccess.CurrentDb();
            for(int i = 0; i <  db.TableDefs.Count; i++)
            {
               TableDef tblDef = db.TableDefs[i];
               string sTableName = tblDef.Name;

               string sPrimaryTableName = "eObj_Object";
               string sForeignTable_Field = "eObj_Object_ID";
               string sPrimaryTable_Field = "ID";


               Relation rel = db.CreateRelation(sPrimaryTableName + sTableName, sPrimaryTableName, sTableName, RelationAttributeEnum.dbRelationDeleteCascade);
               Field fld = new FieldClass();
               fld.Name = sPrimaryTable_Field;
               fld.ForeignName = sForeignTable_Field;
               rel.Fields.Append(fld); //------------> Exception!!! <-------------------

               db.Relations.Append(rel);

               fld = null;
               rel = null;

            }
            db.Close();
            db = null;

Hat vielleicht jemand eine Idee, woran es liegen könnte?

Danke und Gruß

Lukas

lukasS Themenstarter:in
65 Beiträge seit 2009
vor 6 Jahren

Habe die Antwort selber gefunden:

Field fld = rel.CreateField(sPrimaryTable_Field);

anstatt

fld.Name = sPrimaryTable_Field;