1

既存の Access データベース ファイル (template.mdb) を新しいファイルのテンプレートとして使用しようとしています。一部のテーブルの行を削除したい (ただし、他のテーブルは保持する)。Visual Studio 2010 によって生成された TableAdapters を介してテーブルに「アクセス」します (項目の追加 -> データ -> DataSet を介して)。

既存のテーブルの内容の一部を削除して自動インクリメント カウンターをリセットしようとしているときに、2 番目のタスクを実行できません。私はこれをやろうとしています

var adapter = new MyTableTableAdapter();
var targetTable = adapter.GetData();
// mark each row for deletion
foreach (DataRow row in targetTable.Rows)
  row.Delete();

//ここで次のシーケンスを見つけました。

targetTable.IDProductColumn.AutoIncrement = true;
targetTable.IDProductColumn.AutoIncrementSeed = 0;
targetTable.IDProductColumn.AutoIncrementStep = -1;
targetTable.IDProductColumn.AutoIncrementSeed = -1;

// apply the changes
adapter.Update(targetTable);

これは確かに既存の行を削除しますが、自動インクリメントはリセットしません。

これはどのように達成できますか?


編集:今すぐワークフローを完了してください

  1. 寺院の mdb ファイルをコピーします。
  2. コピーしたファイルへの接続を確立する
  3. 一部のテーブルのすべての行を削除しようとしますが、すべてではありません
  4. 次のような参照を含む外部 xml ファイルから新しいデータを読み取ります。

    <tableARow><id>1</id></tableARow>// この行が id の場合 <> 1 ...

    <tableBRow><idRefTableARow>1</idRefTableARow></tableBRow>// ... この行は正しくインポートされません

  5. このデータを「新しい」データベースに追加します
4

2 に答える 2

0

古いテーブルを読み込んですべての項目を削除するのではなく、コードで新しいデータ テーブルを作成し、必要な列を追加するだけで済みます。

var Table = new DataTable();


var columnA = new DataColumn();
columnA.ColumnName = "Your Column Name";
var columnB = new DataColumn();
columnB.ColumnName = "Your Column Name";
var columnC = new DataColumn();
columnC.ColumnName = "Your Column Name";



Table.Columns.Add(columnA);
Table.Columns.Add(columnB);
Table.Columns.Add(columnC);

これが役に立てば幸いです。

于 2012-09-10T13:52:59.420 に答える