SQL DELETE FROM 削除できない

このQ&Aのポイント
  • 「DELETE FORM」で「全レコード削除」を試みたが反応せず。
  • 「WHERE句」も試したが無反応。
  • 「TRUNCATE UER01」も無反応。対処法を教えてください。
回答を見る
  • ベストアンサー

SQL DELETE FROM 削除できない

 お世話になります。 さて、題名通りですが、下記の具合で「DELETE FORM」で「全レコード削除」をしましたが、全く反応せず。  試しに[ WHERE句 ]も試しましたが無反応です。 もしコードが間違いなら、エラーになる筈ですが、当然それもありません。 また「.RecordSource = "TRUNCATE UER01"」も無反応でした。  対処法を御教授願います。 ●環境 VB6.0 アクセス97 WINDOWS7 自作PC   With DATA .DatabaseName = "E:\U SS VB\IK NY DATA\SV_TL.mdb" .RecordSource = "DELETE FROM UER01" End With

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

win7でAccess97が使用できるのか確認はしていません。 その上で、質問の、「With DATA」の「DATA」が何をさしているのか わかりませんが、一般的なVB6とAc97での方法を書いてみますと、 質問のデータベース名、テーブル名を使用すると、 Private Sub Command1_Click() Dim strPath As String Dim strSQL As String Dim db As DAO.Database Dim ws As Workspace strPath = "E:\U SS VB\IK NY DATA\SV_TL.mdb" strSQL = "DELETE * FROM UER01" Set ws = DBEngine.Workspaces(0) Set db = ws.OpenDatabase(strPath) db.Execute strSQL db.Close: Set db = Nothing ws.Close: Set ws = Nothing End Sub のようになります。ここで、テーブルのデータをすべて 削除する場合は、「DELETE * FROM UER01」のように 普通は明示的に「*」を使用します。そして、このSQL文をdb.Executeを使って データベースに対して実行します。 なお、この場合はDAOを使用しています。ADO接続の場合は接続方法を 変更してください。DAOの参照設定をプロジェクトで確認してください。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No1です。 以下の一文を加えておきます。 何かのオブジェクトのRecordSourceを設定する場合は SQL文で取得するならばSELECT文を使用します。 質問の中の、   .RecordSource = "DELETE FROM UER01" このような構文はありえないので、レコードを削除 するときは、Executeコマンドを使ってレコードを 削除するなりの処理が必要になります。

noname#212058
noname#212058
回答No.2

トランザクション処理をしているのに、コミットを実行していないとか。 http://www.happy2-island.com/access/gogo03/capter00419.shtml もしくは、接続先のデータベースが間違っているとか。

ryu8472
質問者

お礼

早速、御回答感謝します。 恐れ入りますが、トランザクションなどのレベルのものでもない、高度なモノでもありません。素人発想でのモノ作りでした。

関連するQ&A

  • データベースアクセスで。

    VBとAccessを使用してデータのやりとりを行っています。 Data1を貼り、DatabaseNameを設定するところまではうまくいきましたが、RecordSourceプロパティをクリックすると「データベースの形式'C:\xxx\xxx.mdb'を認識できません」と表示されてしまいます。 別DBを設定すると上記の現象がでないので、Accessが原因だとは思いますが、VBを使用する際の注意点などあるのでしょうか? 【環境】WinXP SP2 VB6.0 / Access2000です。

  • access2003のデータを使って住所録の作成

    VBでaccess2003のデータ形式を使って住所録を作りたいのですが、うまくいきません。 DatabaseNameを指定したあと、RecordSourceの欄をクリックすると、認識されませんというメッセージがでます。 何故なのかわかりません。 よろしくお願いします。

  • VB6.0でアクセス2000のデータを使いたいです。

    VB6.0でアクセス2000のデータを使用してdatagridに表示したいのですが、データオブジェクトのdatabasename(プロパティ)にアクセスデータを指定しても、recordsource(プロパティ)にアクセスのテーブル名が表示されないのです。他のアクセスデータで表示される場合もあるのですが、その違いが不明ですので宜しくお願い致します。

  • データコントロールのRefreshができません

    フォームにデータコントロール(以下Data1)と MSFlexGrid(以下グリッド)を貼り付けて MDBのデータを表示しています。 コマンドボタン押下のタイミングで、該当テーブルを更新し、 グリッドに更新されたデータを再表示しようとしていますが、 Data1にRefreshをかけてもグリッドのデータが更新されません。 何かご存知の方がいらっしゃったら、ご教授いただければと思います。 グリッドのDataSourceプロパティにはData1が設定してあります。 テーブルですが、どれも2件ずつしか入っていません。 フォームロード時の表示はうまく動作しています。 インタープリタでステップ実行すると、きちんと更新データが表示されます。 コードです(簡略化してあります)↓ sub Form_Load with Data1 .Database = MDB名 .RecordSource = "SELECT x.a,y.b FROM x,y WHERE x.a=y.a" end with end sub sub Command1_Click() ここでMDB更新  (複数件処理のためSQLにて更新処理を実施しています。   トランザクション管理ありです。) with Data1 .Recordset.Requery .Refresh end with end sub 環境です↓  VB6.0 SP6  DAO3.6  Access2000  Win2000 よろしくお願いいたします。

  • MDBをADO接続でINSERT・UPDATE・DELETE

    VB2005.NETの初級開発者です。 MDBをADO接続で開発を行いたいのですが 記述の方法がわかりませんので教えて下さい。 下記のようなサンプルはネット上でもよく見るのですが INSERT分で記述を行いたいのですが、サンプルが見つかりません よろしくお願いします。 後、CurrentProject.Connection.Execute strSQL, , adCmdTex このような記述をネット上で見るのですがstrSQLにInsert分を 記述すれば良いのですか、わからないので教えて下さい。 また、下記の記述の方がよいのですか? Dim ct As New Connection() Dim rt As New Recordset() ' 接続文字列を設定 ct.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\test.mdb" ' データベースに接続 ct.Open() ' テーブルを指定し、レコードセットをオープン With rt .CursorType = CursorTypeEnum.adOpenDynamic .LockType = LockTypeEnum.adLockOptimistic .Open("Insert_Tbl", ct, , , CommandTypeEnum.adCmdTable) End With ' データを追加 With rt .AddNew() .Fields("aaa").Value = TextBox1.Text .Fields("bbb").Value = TextBox2.Text .Update() End With

  • 「実行時エラー '3167' レコードは削除されています。」を回避する方法

    VB6 と ACCESS97 でソフト開発をしています。 フォームに DBGrid を配置し、クエリの結果を表示させていますが、 多くの場合に「実行時エラー '3167' レコードは削除されています。」の エラーが出ます。(出ないときもあります。) どなたか、このエラーを回避する方法を教えて下さい。 以下は、コーディングの一部です。 Data1.DatabaseName = MDB_Path & "株.mdb" '------ クエリのセット ------------------------------------------------ Set MyQuery = dbs.QueryDefs("連結決算Q") SQL = "SELECT 決算チェックT.銘柄CD, [当日株価T].銘柄名, [当日株価T].市場" ++++++ 途中略 ++++++++++++++++++++++ SQL = SQL & " 決算チェックT.銘柄CD;" MyQuery.SQL = SQL Set tbl = dbs.OpenRecordset(SQL) 銘柄CD(1) = tbl!銘柄CD: 市場(1) = tbl!市場 '------ チャート(小、1年)の取得と表示 --------------------------------- ++++++ 途中略 ++++++++++++++++++++++ Image1.Picture = LoadPicture(F_Name) DoEvents '--- 株価の取得 ------------------------------------------------- GetURL = " http://quote.yahoo.co.jp/q?s=" & 銘柄CD(1) & "&d=v6" Inet1.RequestTimeout = 15 Inet1.Execute GetURL, "GET": DoEvents tbl.MoveLast: データ数(1) = tbl.RecordCount tbl.MoveFirst Data1.Caption = Space$(25) & "決算チェック銘柄数 " & データ数(1) & "銘柄" Check_1: Data1.RecordSource = "00#連結決算表示Q" For K = 1 To 300: For J = 1 To 3000: DoEvents: Next J: Next K '〓〓〓〓 ここでエラーが出る 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 Data1.Refresh: Call DBGrid(1)表示整形 DBGrid1.Refresh If データ数(1) <> Data1.Recordset.RecordCount Then For K = 1 To 1000: DoEvents: Next K GoTo Check_1 End If

  • SQL : たしかに DELETE したの?

    ありがちな処理かと思いまして質問させていただきます。 SQLで DELETE を行う際、WHERE で絞り込んだ対象行がなくても、  「エラーは返ってこない」 ということですが、NOT FOUND判定はするのでしょうか。 ごく単純に、削除しようとしたデータが実際にあったのかを確認したいのです。 やろうとしている処理は、次のようなものです。 DELETE FROM a_tbl WHERE NOT EXISTS (SELECT row1 FROM b_tbl WHERE row1 = 'input_data' ) AND NOT EXISTS (SELECT row1 FROM c_tbl WHERE row1 = 'input_data' ); ようするに、他のテーブルに、すでにない行であることが前提で、 a_tbl から DELETE したことを確認したいのです。 Pro*C内で実行するのですが、一般に同じだと思います。 キホンのキかもしれませんが、よろしくお教えください。

  • 【ORACLE】ダイレクトロードインサートについて

    現在、バッチ処理にて毎日、 まずテーブルを空にして、 そのあとインサートを行う作業をしています。 しかし、余りにもインサートに時間がかかってしまい困っています。 (2000万レコード程) 何か方法を探しているとヒント句の/*+ APPEND */を使用する ダイレクトロードインサートというものを知りました。 大量のデータインサートのケースには従来のインサートよりも 処理速度が向上できるのではと感じました。 ただし、注意点が何点かあり、表領域の使用効率が悪いという所が気になっています。 毎日DELETE、もしくはTRUNCATEを行えば問題ないのでしょうか? また、ダイレクトインサートを使用する上で懸念すべき点が他にあれば ご教授お願い致します。

  • データベースをプログラム上で更新する方法について

    使用環境:windowsXP、VB EE データベースアクセスプロバイダ:OLEDB(mdbデータベース) ローカルにて使用 率直にいうと下記のような方法で更新しようと考えています。 1、接続文字列を定める。 2、SQLCOMMANDを決定する。(update句) 3、データアダプタを宣言し、2のコマンドを実行する。 構想はできているのですが、肝心なコーディングがよく分かりません。できれば、簡単なコード等をご教授してくれないでしょうか? 尚、updateをかける際にnull値を許可したいのですが、それらを含めて教えてください。よろしくお願いします。

  • レコードの削除

    VB6.0 ACCESSで開発しています。 t_nyukoテーブルのデータを全て削除するのは下記のように 出来たのですが dataGridに表示されているものを1つ選択し 選択されたものだけ削除したいのですがどうすればいいのでしょうか? よろしくお願いします。 Private Sub Command1_Click() Dim cn As New ADODB.Connection Dim cmd As ADODB.Command Dim cat As New ADODB.Command Dim strSQL As String   Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\temp\db2.mdb" cn.Open cat.ActiveConnection = cn strSQL = "DELETE FROM t_nyuko " Set cmd = New ADODB.Command cmd.ActiveConnection = cn cmd.CommandText = strSQL cmd.Execute cn.Close Set cmd = Nothing Set cn = Nothing Set cat = Nothing End Sub