- 締切済み
アクセスで複数データ削除
myPath = "D:\" myfilename = Dir(TxB04) Do Until myfilename = "" DoCmd.TransferText acImportDelim, , "tbl1", myPath & myfilename, False myfilename = Dir Loop MsgBox "取込が正常に終了しました。" MsgBox "二重打刻をチェックしてます。" '取込ファイル名を変換します。 DoCmd.SetWarnings False DoCmd.OpenQuery "データ変換" DoCmd.OpenQuery "実績追加" DoCmd.OpenQuery "重複データ削除" DoCmd.OpenQuery "削除クエリ" DoCmd.SetWarnings True Cmd21.Enabled = False ★Kill (strInFPath)★ 'メッセージマスタ取得 Sqlstate2 = "SELECT * FROM 氏名登録なし;" Set M_MSG2 = MyDB2.OpenRecordset(Sqlstate2, dbOpenSnapshot) If M_MSG2.RecordCount > 0 Then DoCmd.SetWarnings False DoCmd.OpenQuery "くえり1" DoCmd.SetWarnings True End If Exit Sub Err_Set_Seisan_Click: End Sub 今、vbでこのようなデータ取込を作っており★のところで取込データを削除させてます。 ただこれだと1つのデータしか削除できず、複数あったときには対応が困ってます。 こちら歯どのような対応でできるでしょうか? ご指導お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
補足:KILL は危険。 通常、原始データは削除しないでリネームするかバックアップフォルダに移すと思いますが・・・。
do-loopのなかでkill処理してはどうでしょうか?
Const conPATH = "C:\Temp\" Const conIMPORTFILES = "ImportData*.txt" Private Sub コマンド1_Click() Dim stPath As Integer Dim strFileName As String If Verify("ファイルを取込します?") = vbYes Then strFileName = Dir(conPATH & conIMPORTFILES) Do Until strFileName = "" DoCmd.TransferText acImportDelim, , "tab1", conPATH & strFileName, False strFileName = Dir() Loop End If End Sub Private Sub コマンド2_Click() Kill conIMPORTFILES End Sub Verify()は、標準モジュールに登録しないと使えません。 さて、先に、インポート対象ファイルを呼び込むのにワイルドカードを使っていましたよね。 肝心の strInFPath でワイルドカード(* or ?)を使っていますか? そこが問題です。 なお、実際のインポートテストでは、 ImportData01.txt ImportData02.txt を用いました。 これは、"ImportData*.txt" にパターンマッチしますので当然に削除されます。