C#으로 Access 파일 (.mdb)을 만들려고합니다. 레거시 프로세스 용 SQL에서 데이터를 내보내고 있습니다. 내가 일하고있어, 내가 직면하고있는 유일한 문제는 nullable로 열을 설정합니다. 나는 "Null 허용"속성을 설정하려고 시도 할 때 다음과 같은 오류가 얻을ADOX 테이블 열에 "Nullable"속성이 있습니까?
private void CreateAndExportLegacyFile(DataTable data, string exportFilename)
{
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;";
connectionString += "Data Source=" + exportFilename + ";Jet OLEDB:Engine Type=5";
var catalog = new Catalog();
catalog.Create(connectionString);
var table = new Table { Name = "Main" };
#region Column mapping
table.Columns.Append("ID", DataTypeEnum.adVarWChar, 50);
table.Columns.Append("FIRST", DataTypeEnum.adVarWChar, 50);
table.Columns.Append("LAST", DataTypeEnum.adVarWChar, 50);
#endregion
foreach (Column column in table.Columns)
{
if (column.Name != "ID") column.Properties["Nullable"].Value = true;
}
catalog.Tables.Append(table);
Marshal.FinalReleaseComObject(table);
Marshal.FinalReleaseComObject(catalog.Tables);
Marshal.FinalReleaseComObject(catalog.ActiveConnection);
Marshal.FinalReleaseComObject(catalog);
}
: "항목 요청에 해당하는 컬렉션에서 항목을 찾을 수 없습니다 여기
내가 (간결함을 위해 제거 대부분의 열)이 무엇 이름 또는 서수. "필자는 Required 또는 Nullable 중 어떤 것을 사용할 것인지에 대한 충돌하는 보고서를 발견했지만 두 가지 모두 시도해 본 결과 동일한 결과를 얻었습니다.
nullable 속성을 설정할 수없는 이유는 무엇입니까? 나는 데이터를 가져올 때 빈 공간으로 디폴트 게으름과 null을 가질 수 있지만 가능한 경우이를 피하고 싶습니다.
편집 : 한스 코멘트에서 언급 한 바와 같이, 내가 대신 속성 속성을 사용했다 :
if (column.Name != "ID") column.Attributes = ColumnAttributesEnum.adColNullable;
Attributes 속성을 사용하십시오. 세 번째 글 머리 기호 http://msdn.microsoft.com/en-us/library/windows/desktop/ms676554%28v=vs.85%29.aspx –
@HansPassant - 감사합니다! 답변을 답변으로 추가하려면 동의로 표시하겠습니다. –