使用 ADOX for AccessDB 将 ForeignKey 添加到 table 时出现 COMException
COMException when adding ForeignKey to the table using ADOX for AccessDB
我收到此异常:索引或关系定义中的无效字段定义 'NalogID'。
当我将下面代码中的 table 附加到目录
时会触发异常
我不知道第三个参数是什么(这是 Visual Studio 显示 Object column = Type.missing)代码行:
tableNalogRelacija.Keys.Append("ForeignKey", ADOX.KeyTypeEnum.adKeyForeign, "NalogID", "Nalog", "NalogID");
我遵循了这个例子:
这是完整的代码示例:
// generira tabelu Relacije
ADOX.Table tableNalogRelacija = new ADOX.Table();
ADOX.Key tableKey4 = new Key();
ADOX.Column idColumn4 = new Column();
// Define column with AutoIncrement features
idColumn4.Name = "ID";
idColumn4.Type = ADOX.DataTypeEnum.adInteger;
// Set ID as primary key
tableKey4.Name = "Primary Key";
tableKey4.Columns.Append("ID");
tableKey4.Type = KeyTypeEnum.adKeyPrimary;
//Create the table and it's fields.
tableNalogRelacija.Name = "NalogRelacija";
tableNalogRelacija.Columns.Append(idColumn4);
tableNalogRelacija.Columns.Append("MjestoPolaska", ADOX.DataTypeEnum.adVarWChar, 50);
tableNalogRelacija.Columns.Append("MjestoDolaska", ADOX.DataTypeEnum.adVarWChar, 30);
tableNalogRelacija.Columns.Append("Udaljenost", ADOX.DataTypeEnum.adInteger);
// Dodavanjeg stranog ključa NalogID
tableNalogRelacija.Columns.Append("NalogID", ADOX.DataTypeEnum.adInteger);
tableNalogRelacija.Keys.Append("ForeignKey", ADOX.KeyTypeEnum.adKeyForeign, "NalogID", "Nalog", "NalogID");
~陈迟
原来我没有得到主键所以它抛出了非唯一索引字段异常然后我把它们变成了这样:
// CREATE TABLE RELACIJA
ADOX.Table tableNalogRelacija = new ADOX.Table();
tableNalogRelacija.Name = "NalogRelacija";
// APPEND PRIMARY KEY
tableNalogRelacija.Columns.Append("IDRelacija", ADOX.DataTypeEnum.adInteger);
tableNalogRelacija.Keys.Append("PrimaryKey", KeyTypeEnum.adKeyPrimary, "IDRelacija");
// APPEND COLUMNS
tableNalogRelacija.Columns.Append("MjestoPolaska", ADOX.DataTypeEnum.adVarWChar, 50);
tableNalogRelacija.Columns.Append("MjestoDolaska", ADOX.DataTypeEnum.adVarWChar, 30);
tableNalogRelacija.Columns.Append("Udaljenost", ADOX.DataTypeEnum.adInteger);
// ADD FOREIGN KEY NalogID
tableNalogRelacija.Columns.Append("NalogID", ADOX.DataTypeEnum.adInteger);
tableNalogRelacija.Keys.Append("ForeignKey_NalogRelacija", ADOX.KeyTypeEnum.adKeyForeign, "NalogID", "Nalog", "IDNalog");
现在一切正常
我收到此异常:索引或关系定义中的无效字段定义 'NalogID'。 当我将下面代码中的 table 附加到目录
时会触发异常我不知道第三个参数是什么(这是 Visual Studio 显示 Object column = Type.missing)代码行:
tableNalogRelacija.Keys.Append("ForeignKey", ADOX.KeyTypeEnum.adKeyForeign, "NalogID", "Nalog", "NalogID");
我遵循了这个例子:
这是完整的代码示例:
// generira tabelu Relacije
ADOX.Table tableNalogRelacija = new ADOX.Table();
ADOX.Key tableKey4 = new Key();
ADOX.Column idColumn4 = new Column();
// Define column with AutoIncrement features
idColumn4.Name = "ID";
idColumn4.Type = ADOX.DataTypeEnum.adInteger;
// Set ID as primary key
tableKey4.Name = "Primary Key";
tableKey4.Columns.Append("ID");
tableKey4.Type = KeyTypeEnum.adKeyPrimary;
//Create the table and it's fields.
tableNalogRelacija.Name = "NalogRelacija";
tableNalogRelacija.Columns.Append(idColumn4);
tableNalogRelacija.Columns.Append("MjestoPolaska", ADOX.DataTypeEnum.adVarWChar, 50);
tableNalogRelacija.Columns.Append("MjestoDolaska", ADOX.DataTypeEnum.adVarWChar, 30);
tableNalogRelacija.Columns.Append("Udaljenost", ADOX.DataTypeEnum.adInteger);
// Dodavanjeg stranog ključa NalogID
tableNalogRelacija.Columns.Append("NalogID", ADOX.DataTypeEnum.adInteger);
tableNalogRelacija.Keys.Append("ForeignKey", ADOX.KeyTypeEnum.adKeyForeign, "NalogID", "Nalog", "NalogID");
~陈迟
原来我没有得到主键所以它抛出了非唯一索引字段异常然后我把它们变成了这样:
// CREATE TABLE RELACIJA
ADOX.Table tableNalogRelacija = new ADOX.Table();
tableNalogRelacija.Name = "NalogRelacija";
// APPEND PRIMARY KEY
tableNalogRelacija.Columns.Append("IDRelacija", ADOX.DataTypeEnum.adInteger);
tableNalogRelacija.Keys.Append("PrimaryKey", KeyTypeEnum.adKeyPrimary, "IDRelacija");
// APPEND COLUMNS
tableNalogRelacija.Columns.Append("MjestoPolaska", ADOX.DataTypeEnum.adVarWChar, 50);
tableNalogRelacija.Columns.Append("MjestoDolaska", ADOX.DataTypeEnum.adVarWChar, 30);
tableNalogRelacija.Columns.Append("Udaljenost", ADOX.DataTypeEnum.adInteger);
// ADD FOREIGN KEY NalogID
tableNalogRelacija.Columns.Append("NalogID", ADOX.DataTypeEnum.adInteger);
tableNalogRelacija.Keys.Append("ForeignKey_NalogRelacija", ADOX.KeyTypeEnum.adKeyForeign, "NalogID", "Nalog", "IDNalog");
现在一切正常