Я пишу программу обновления для перемещения файлов Access 2.0 .mdb в Access 2003 .mdb.Мы придерживаемся файловой структуры mdb по нескольким причинам, поскольку этот код находится в нескольких местах расположения клиентов, а mdb позволяет нам использовать существующий код.
Основная проблема:
Я иду через JET, чтобы прочитать таблицы из файла .mdb и прочитать каждую таблицу в виде данных на C #.Затем я делаю несколько проверок и дублирую таблицу в базе данных mdb 2003 года.Я использую функцию DataTable.PrimaryKey
для сбора столбцов, которые являются столбцами первичного ключа, но я не получаю надежных результатов.
Access 2.0 показывает PrimaryKey в нескольких таблицах (один столбец), где DataTable нет, но не всегда.
Я подтвердил, что я получаю PrimaryKey (s) в некоторых таблицах, простоне все.
DataColumn[] dcPrimaryKeyCols = OrgTbl.PrimaryKey;
//Read the Ordinal so we can order the columns correctly
for (int m = 0; m < NumCols; m++)
{
ColumnOrder[m] = OrgTbl.Columns[m].Ordinal;
if (ColumnOrder[m] != m)
MessageBox.Show("In table " + nm+ "out of order ordinal on column: " + OrgTbl.Columns[m].ColumnName);
}
lblStatus.Text = "Creating Table";
pbTableProgress.Value = 0;
pbTableProgress.Maximum = NumCols;
for (int col = 0; col < NumCols;col++ )
{
pbTableProgress.Value = col;
Application.DoEvents();
sColNm=OrgTbl.Columns[col].ColumnName.Trim();
bPrimaryKey = false;
//determine if this column is part of a primary key group
for (int k = 0; k < dcPrimaryKeyCols.Length;k++ )
{
if (dcPrimaryKeyCols[k].ColumnName.Trim().Equals(sColNm))
{
bPrimaryKey = true;
break;
}
}
Я установил точку останова в строке bPrimaryKey = true
, и она иногда достигается, но не во всех таблицах, где определен первичный ключ.
Одна вещьЯ отметил, что в Access Ver 2.0 информация о столбцах для некоторых первичных ключей показывает: required = no
, unique = no
.Я не знаю, приводит ли это к тому, что JET или таблица данных C # могут пометить столбец primarykey или другие вещи работают здесь.Но в результате я не могу правильно определить ВСЕ столбцы первичного ключа.