• ベストアンサー

accessのデータ削除の仕方

マイクロソフトACCESSのテーブル上のデータをSQLのコマンドで削除することはできますか? SQLのコマンドの入力の仕方が分からないのです。 データが多いため手動で削除するのは時間がかかるのです。 又、DOSプロンプトからACCESSにアクセスし、SQLコマンドを実行する事はできるのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

>又、DOSプロンプトからACCESSにアクセスし、SQLコマンドを実行する事はできるのですか? VBScript + ADO 使えば割と簡単に出来ますよ。 SQLを実行するサンプル ---- sql.vbs ---- Option Explicit const MdbName = "c:\temp\db1.mdb" const SQL = "DELETE * FROM table1;" Dim objADO Set objADO = CreateObject("ADODB.Connection") objADO.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbName & ";" objADO.Execute SQL objADO.Close ------------------ DOSプロンプトからは、cscriptを使います。 >cscript sql.vbs エクスプローラー上からなら、vbsのファイルをダブルクリックで実行できます。 プログラムを改造すれば、コマンドラインの引数でSQL文を渡すことも出来ます。VBScriptについて、検索&勉強してみて下さい。 VBScriptを使うには、OSのバージョンによってはWSHのダウンロードが必要になります。

sakuuuuu
質問者

お礼

回答ありがとうございます。 おお、そんな方法あったのですね。参考&勉強になります。 VBAは良く使いますがVBScriptは使ったことがありません。 もっと勉強してみます。 本当にありがとうございました。

その他の回答 (2)

noname#140971
noname#140971
回答No.2

[イミディエイト] ? CNNExecute("DELETE FROM Table1;") True と、イミディエイトウインドウで SQL 文を実行することも可能です。 ただし、CNNExecute関数の類は用意する必要があります。 Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)    MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & CnnErrors.Description & Chr$(13) & _       "・Err.Number=" & CnnErrors.Number & Chr$(13) & _       "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _       "・SQL Text=" & strSQL, _       vbExclamation, " ADO関数エラーメッセージ" End Sub Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute    Dim isOK As Boolean    Dim cnn As ADODB.Connection       isOK = True    Set cnn = CurrentProject.Connection    With cnn      .Errors.Clear      .BeginTrans      .Execute strSQL      .CommitTrans    End With Exit_CnnExecute: On Error Resume Next    cnn.Close    Set cnn = Nothing    CnnExecute = isOK    Exit Function Err_CnnExecute:    isOK = False    If cnn.Errors.Count > 0 Then      ErrMessage cnn.Errors(0), strSQL      cnn.RollbackTrans    Else      MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _         vbExclamation, " 関数エラーメッセージ"    End If    Resume Exit_CnnExecute End Function

sakuuuuu
質問者

お礼

回答ありがとうございます。 返事が送れて申し訳ないです。 ソース迄記載していただき感謝です。 excelのVBAは良く使うのですがアクセスはあまり使いません。 イミディエイトもよく知らないので勉強してみます。 ありがとうございました。

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

削除クエリーを使いましょう。 >又、DOSプロンプトからACCESSにアクセスし、SQLコマンドを実行する事はできるのですか? できません。 そういうことをしたいなら、自分でプログラムを作りましょう。

sakuuuuu
質問者

お礼

回答ありがとうございます。 返事が遅れて申し訳ないです。 やはり削除クエリーを使用するのが一般的なのですね。 telenetでoracleに入りsqlコマンドを入力する、というような作業を時々やったことがあったのでDOSでもできないかなあ、、なんて思ってました。 ありがとうございます。

関連するQ&A

  • 重複データ削除

    DOSプロンプトでテキストファイルの重複データを削除するコマンドはあるのでしょうか? また、新、旧のデータを持つファイルがあり新データを旧データに上書きする時に重複データは上書きしないコマンドはあるのでしょうか? 今はtype a.txt>>b.txtで実行して重複データを手作業よって削除してます。 どなたかご教授願います。

  • アクセスへ接続し、テーブルのデータ使う事は可能でし

    PHPでSQLサーバーへの接続ではなく、 マイクロソフトアクセスへ接続し、テーブルのデータ使う事は可能でしょうか?

    • ベストアンサー
    • PHP
  • SQLサーバのデータが削除できない

    ACCESSからODBC経由でSQLサーバのテーブルの1行を削除しようとすると「同じデータを別な人が使っていてプロセスが停止しました」というメッセージがでてSQLサーバのデータが削除できません。ただ全てのテーブルでできないわけではありません。なおFORMから削除はうまくいきます。 どうもデータが多いテーブルで発生するようです。原因解るかた教えてください。なお、このテーブルは1人でしかアクセスしていません。

  • アクセスのデーター削除

    VB5でアクセス97のデーターを全部削除したいのですが、 1レコードづつ削除するのは分かるのですが、一発で削除できるコマンドとかあるのでしょうか?あったら教えて下さい。 データーコントロールを使って接続しています。

  • ACCESSのテーブルのデータの一部削除

    アクセスのdbmファイルが大きくなりすぎ(2G近く)、予定通り、ファイルを2つに分けようとしています。 コピーをとって、2つにします。 1番目のファイルには、今年の3月末までのデータ、 2番目のファイルには4月1日からのデータにしようとしています。そこで、データの削除ですが、1番目のファイルで、テーブルを直接開いて、範囲を指定して削除でも良いのですが、結構時間がかかります。また、テーブルの数は結構あるので、現実的ではありません。 クエリを作成して、元のテーブルのデータを削除することは可能なのでしょうか? 勿論、クエリは結構はいっていますので、これらに影響のないように実行される必要があります。 よろしくお願いいたします。

  • ACCESSで質問です

    ACCESS2000でフォームからデータ入力→テーブルに書き込み部分を作成中なんですが、sqlを実行すると「テーブルが見つからない」ってエラーがでます… テーブルはちゃんと作ってあるし、カレントDBをセットしてあるし… 何が間違ってるんでしょう。助けてください~。

  • Accessで重複データの削除について

    初歩的かもしれないですが、テーブルにおいて、重複データがある場合の削除の仕方を教えてください。 例えば下記のようなデータの入っているテーブルがあるとします。 [年度] [氏名] [日付1] [日付2] 2001 一郎   1/1 3/1 2001 次郎 1/2 2001 三郎 1/2 2001 三郎 1/2 3/1 2002 一郎 4/2 2002 一郎 4/2 7/1 このテーブルで[年度]と[氏名]と[日付1]がダブっているレコードの一方を削除したいのです。ダブった2レコードで消す方のレコードは[日付2]の入っていない方を削除します。 どうすればよいか分かりません。。教えてください。 よろしくお願いします。 (Accessのバージョンは2000です。)

  • ACCESSのマクロでテーブルのデータを削除する

    ACCESSのマクロを作成しています。 が、テーブルのデータを削除させる方法がわかりません。 どうすればいいのでしょうか。 よろしくおねがいします。 また、マクロ完成後、 ASPでそのマクロを実行させることは可能でしょうか。

  • Access 削除クエリが重い

    お世話になります。 環境:Access2003     SQL Server 2008 R2 Express 先日、Accessのローカルにあるテーブルが20万レコードを超えた為、SQLサーバーへ移行しました。 しかし、Accessより削除クエリにて(フォーム上に設置した削除ボタンにて)当該テーブルのレコードを削除しようとすると、4分ほどかかりました。 なお、ローカルにあったときは上記操作をしても2、3秒程度で削除完了してました。 PCのスペックやテーブルのレコード数によるかとは思うのですが、ローカルテーブルとSQLテーブルでこんなに時間が違うものなのでしょうか。 また、回避策や何か設定すれば早くなるなどございましたら、ご教授頂けたらと思います。 宜しくお願い致します。

  • アクセスの削除クエリーについて

    アクセス2000の削除クエリーを実行すると、「削除できません」の表示がでます。テーブルを2つ(AとB)追加して、顧客CDでリレーションを組みます。テーブルAからはアスタリスクマークをドラッグしてますので、FROMがでます。テーブルBの顧客CDをドラッグするとWHEREがでます。つまり、テーブルBにある顧客CDを全部テーブルAから削除したいのですが、データウィンドウは表示されますが、削除を実行すると、「削除できません」の表示がでます。アクセス2.0では可能だったのですが、アクセス2000ではなぜできないのでしょうか??