2011-11-08 11 views
0

MS Accessデータベースファイルの重複する行を簡単に削除する方法が必要です。C#のMS Accessデータベースファイルの重複行を削除します

例:

 
[realtimedata] 
SecName | SecSym | Number 
---------+--------+-------- 
Mike | 123 | 245 
Mike | 123 | 245 
+0

これは重く、あなたが「重複」と考えるものに依存するであろう - あなたは、重複するデータ項目の一例を示すことができますか? – bobbymcr

+0

それは行をdublicateですか?または他の何か ' –

+0

テーブル/データが現在どのように表示されているかの例を示し、削除する行を表示できますか? –

答えて

0

1)テーブルの一意の識別子列(複数可)に加えて、あなたが重複する行を識別するために使用している列を選択し、そのデータテーブルまたはレコードセットを開きます。 select文には重複している列のorder by句ソートが含まれていなければなりません。あなたの例で:ORDER BY SecName, SecSym, Number

2)レコードをループして、重複行を識別する列の値を読み取ります。

3)重複する行がある場合、それらの列によって結果がソートされているため、それらは互いに隣接します。したがって、前の行と同じ値を持つ行があれば、重複していて削除する必要があります。

擬似コードスニペット:

string prevSecName = null; 
int prevSecSym = 0; 
int prevNumber = 0; 

const int idIndex = 0; 
const int nameIndex = 1; 
const int symIndex = 2; 
const int numberIndex = 3; 

var idsToDelete = new List<SomeType>(); 

foreach (var row in rows) 
{ 
    if (prevSecName != null && prevSecName = row[nameIndex] && prevSecSym = row[symIndex] && prevNumber = row[numberIndex]) 
     idsToDelete.Add(row[idIndex]); 
    prevSecName = row[nameIndex]; 
    prevSecSym = row[symIndex]; 
    prevNumber = row[numberIndex]; 
} 
関連する問題