CSVDocument
1
重複データを削除したい
1
Biz/Browserには重複データを削除するといった機能はございませんが、プログラムでそのような処理を実装することは可能です。
一例として、CSVDocumentクラスを利用し、比較を行って重複したデータを削除するという方法があります。
下記のサンプルでは、CSVDocumentクラスのFindメソッドで指定条件に一致するデータを検索し、重複しているデータが見つかった場合はDeleteRowメソッドで削除します。
ボタン押下後、EditBox1の重複データを削除した結果がEditBox2に表示されます。
[ サンプルコード ]
Form Form1 { Width = 445; Height = 563; /* CSVデータ */ CSVDocument csvdata; csvdata << CSV { 田中太郎 山田花子 鈴木一郎 佐藤次郎 山田花代 田中太郎 中田太郎 佐藤次郎 鈴木一朗 山田花子 山田花江}; /* 削除前のCSVデータを表示 */ EditBox EditBox1 { X = 9; Y = 24; Width = 257; Height = 221; Editable = $FALSE; } /* 重複データを削除した後のデータを表示 */ EditBox EditBox2 { X = 9; Y = 306; Width = 257; Height = 201; Editable = $FALSE; } Button Button1 { X = 69; Y = 251; Width = 138; Height = 47; title = "↓重複データ削除↓"; Function OnTouch( e ) { var arr_data = new Array; var i; var j = 0; var rowNo; var hikaku; /* 重複チェックにあたり、最初の比較元データを格納 */ hikaku = ^.csvdata.GetCell(0, 0); /* 配列変数に格納 */ arr_data[0] = hikaku; for(i = 1; i <= ^.csvdata.Rows; i++){ /* 比較元データと一致するデータが含まれる行番号(先頭)を取得 */ rowNo = ^.csvdata.Find(i, "0==" + hikaku); /* 一致データが存在する場合は繰り返す */ while(rowNo != -1){ /* 比較元データと一致するデータが含まれる行番号(先頭)を取得 */ rowNo = ^.csvdata.Find(i, "0==" + hikaku); if(rowNo == -1){ /* 比較処理を終了させる */ break; } /* 該当データ削除 */ ^.csvdata.DeleteRow(rowNo); }; /* 比較用データを取得 */ hikaku = ^.csvdata.GetCell(i, 0); /* 配列変数に格納 */ arr_data[i] = hikaku; } for (j = 0; j < arr_data.length; j++) { /* 配列変数内のデータをEditBox2へ表示 */ ^.EditBox2.Value += arr_data[j] + "\r\n"; } } } Button Button2 { X = 281; Y = 464; Width = 107; Height = 47; title = "クリア"; Function OnTouch( e ) { /* EditBox2を初期化 */ ^.EditBox2.Value = ""; } } if ( !$DESIGNTIME ) { var i; for (i = 0; i < csvdata.Rows; i++) { /* CSVデータをEditBox1へ表示 ※重複データを含んだもの */ EditBox1.Value += csvdata.GetCell(i, 0) + "\r\n"; } } }
管理番号:CsvHt_001
Biz-Collections Bizの宝箱 トップへ
Biz/Browser HT・Biz/Browser SmartDevice・Biz/Browser AI TIPS集 トップへ