ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3814768 アクセスで複数データ削除
質問者:rnyrevo 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つのデータしか削除できず、複数あったときには対応が困ってます。
こちら歯どのような対応でできるでしょうか?
ご指導お願いします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/02/27 16:16
最新から表示回答順に表示

回答

ANo.3 補足:KILL は危険。

通常、原始データは削除しないでリネームするかバックアップフォルダに移すと思いますが・・・。
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/02/28 09:49
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.2 do-loopのなかでkill処理してはどうでしょうか?
回答者:noname#60992
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/02/28 08:11
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 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" にパターンマッチしますので当然に削除されます。
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/02/27 17:06
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示