
Me.Requery すると「レコードは削除されています」エラー
予約テーブル → 確定テーブルにデータ移し、予約テーブルのレコードは削除
という処理をしています。
予約詳細というクエリを作り、フォームで開きました。
[確定]ボタンを設置し、フォームの値を確定テーブルに追加できるようにしました。
確定済みの予約レコードは、削除します。
ここまでは成功したのですが、フォームには、確定済みの予約レコードが表示されたままです。
Me.Requery
というコードを追加しましたが、エラーになります。
「レコードは削除されています」エラーです。
単純に[削除]ボタンで1レコード削除した後、
Me.Requery
した場合には、問題なく、きれいに再表示されます。
--------------------------------
Private Sub 削除ボタン_Click()
Dim ADOcmd As ADODB.Command
Set ADOcmd = New ADODB.Command
ADOcmd.ActiveConnection = CurrentProject.Connection
ADOcmd.CommandText = "Delete from 予約 where 予約ID=" & me.予約ID
ADOcmd.Execute
Set ADOcmd = Nothing
Me.Requery ' <<<< これは成功します。gannersさん感謝<(_ _)>
End Sub
--------------------------------
途中で何かのプロパティが変化しているからでしょうか?
解決方法わかる方いらっしゃいますか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
[参考までに..]
1年前の質問に回答して良いものなのか、わかりませんが、自分も近い現象に何度か遭遇したことがありますので、そのときの解決方法を載せときます。
Me.Requery がなんらかの原因で使用できない場合は
以下の方法が有効となります。
-----------------------------
Dim strRS as String
strRS = Me.RecordSource
DoCmd.Echo False
Me.RecordSource = ""
<<各種クエリ操作>>
Me.RecordSource = strRS
DoCmd.Echo True
----------------------------
No.3
- 回答日時:
#1です。
結構複雑なことしていますね。こちらでも再現させてみようかと思いましたが、ちょっと断念しました。
ふとした思いつきなのですが、Me.requeryの代わりにMe.refreshでも駄目でしょうか。あるいはRefreshした後にRequeryではどうでしょうか。
簡単に試せるので試してみてください。
No.2
- 回答日時:
ついでに
Private Sub 確定_Click()
Dim ADOcmd As ADODB.Command
Set ADOcmd = New ADODB.Command
ADOcmd.ActiveConnection = CurrentProject.Connection
ADOcmd.CommandText = "insert into 確定テーブル(X1,Y2,Z3) select A1,B2,C3 from 予約テーブル"
ADOcmd.Execute
ADOcmd.CommandText = "delete from 予約テーブル"
ADOcmd.Execute
Set ADOcmd = Nothing
Me.Requery
End Sub
上記であれば、動作確認済みです。現行のコードと見比べ違いを教えていただければ答えやすいです。
この回答への補足
nandarou-1011さん、gannersさん、ありがとうございます。
下のような感じで、結構こみいってます。
予約テーブルからSELECT
確定テーブルからSELECT
確定テーブルに追加
予約テーブルからSELECT
詳細テーブルに追加
商品オプションテーブルからSELECT
オプションテーブルに追加
' 詳細処理終了で
★予約テーブルからDELETE
' 次の予約レコード(SELECTしたRecordset)を見る
' 全レコード(SELECTしたRecordset)終了(処理→削除)後、
Me.Requery ' <<<< 削除されていますエラー発生
???なぜ(TT)???
No.1
- 回答日時:
一つ質問です。
>確定済みの予約レコードは、削除します。
この場合、削除方法はどのような方法ですか?できれば確定ボタン_Clickの内容を教えていただけますか。
この回答への補足
-----------------------------------------
Sub kakutei()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst2 As New ADODB.Recordset
''' DB接続
Set cnn = CurrentProject.Connection
''' 予約テーブルから、このユーザの最初の予約を取得
mySQL = "SELECT min(予約日) as 最少予約日 FROM 予約 WHERE uid=" & Me.uid
rst.Open mySQL, cnn, adOpenKeyset, adLockReadOnly
最少予約日 = rst!最少予約日
rst.Close
''' 確定テーブルの主キー生成
mySQL = "SELECT max(sid) as sid_max FROM 確定;"
rst.Open mySQL, cnn, adOpenKeyset, adLockReadOnly
sid = rst!sid_max + 1
rst.Close
'' 確定テーブルに追加
mySQL = "INSERT INTO 確定 (sid, 予約日, uid, 確定日) " _
& " VALUES( " & sid & ", #" & 最少予約日 & "#, " & uid & ", #" & Me.確定日 & "# ) ;"
cnn.Execute mySQL
''' このユーザの全予約レコードを取得
mySQL = "SELECT * FROM 予約 WHERE uid=" & Me.uid
rst.Open mySQL, cnn, adOpenKeyset, adLockReadOnly
Dim i As Integer
Do Until rst.EOF
cid = rst!cid
単価 = rst!単価
数量 = rst!数量
値引額 = rst!値引額
''' 詳細テーブルに追加
i = i + 1
scid = sid * 10 + i ' 詳細テーブルのシリアル番号生成
mySQL = "INSERT INTO 詳細 ( scid, sid, cid, 単価, 数量, 値引額 ) " _
& " VALUES( " & scid & ", " & sid & ", " & cid & ", " & 単価 & ", " & 数量 & ", " & 値引額 & ");" ' cidは商品コード
cnn.Execute mySQL
'' この商品のオプション内容登録
mySQL = "SELECT * FROM 商品オプション WHERE cid=" & cid
rst2.Open mySQL, cnn, adOpenKeyset, adLockReadOnly
Do Until rst2.EOF
''' オプションテーブルに追加
mySQL = "INSERT INTO オプション ( scid, ciid ) " _
& " VALUES( " & scid & ", " & ciid & ") ;"
cnn.Execute mySQL
rst2.MoveNext
Loop
rst2.Close
''' レコード削除
delete_rid Me.rid
rst.MoveNext
Loop
rst.Close
' Me.Requery ' <<<<<<<< ここでrequeryするとエラーになる
''' 終了処理
cnn.Close: Set cnn = Nothing
Set rst = Nothing
' Me.Requery ' <<<<<<<< ここでrequeryするとエラーになる
End Sub
-----------------------------------------
Private Sub delete_rid(rid)
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
''' DB接続
Set cnn = CurrentProject.Connection
''' 予約テーブルからレコード削除
mySQL = "DELETE FROM 予約 WHERE rid=" & rid ' ridは予約ID
cnn.Execute mySQL
''' 終了処理
cnn.Close: Set cnn = Nothing
Set rst = Nothing
End Sub
-----------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
このQ&Aを見た人はこんなQ&Aも見ています
-
「実行時エラー '3167' レコードは削除されています。」を回避する方法
Visual Basic(VBA)
-
Access「レコードが削除されました」のエラー
Access(アクセス)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
レコード削除時に(サブ)フォームに表示される#Deleted"について"
Access(アクセス)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
8
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
9
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
10
ODBCの接続に失敗しました(3146)について
その他(Microsoft Office)
-
11
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
12
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
13
Accessでブレークポイントを設定してないのに一時停止してしまう
その他(データベース)
-
14
アクセスのフォームのビューが表示されないのですが、
その他(データベース)
-
15
フォームの高さを数値で指定したいのですが
Excel(エクセル)
-
16
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
17
2回目に画面のレコードセットの値が読めない
その他(データベース)
-
18
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
19
ACCESS97 実行時エラー '2455'に関して
Access(アクセス)
-
20
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL初心者です。
-
3つ以上のテーブルをUNIONする...
-
phpmyadminで問い合わせた結果...
-
PostgreSQLへのODBC接続について
-
Accessでの排他制御
-
データの二重表示の原因
-
OUTER JOIN と TOP10との組み合...
-
Accessでの自己結合?
-
Accessにインポートしたら並び...
-
ACCESSのBookmarkプロパティの...
-
Access VBA Me.Requery レコー...
-
非連結サブフォームのレコード...
-
ファイルメーカーで週間予定表
-
レコードロックする方法
-
重複レコードの上書きについて
-
2つのサブフォーム間でデータの...
-
Accessのフォームヘッターに表...
-
(ACCESS)並び替えをしないで...
-
ACCESSで以下のフォームを作成...
-
入力された数字のうち、10台...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessにインポートしたら並び...
-
3つ以上のテーブルをUNIONする...
-
数百万件レコードのdelete
-
データの二重表示の原因
-
ACCESSのBookmarkプロパティの...
-
Access 削除クエリが重い
-
Access VBA Me.Requery レコー...
-
SQLデータ修正時に『このレコー...
-
Access 1レコードずつcsvで出力...
-
SQLServerで同一条件レコードの...
-
Access カレントレコードがあり...
-
2つの項目が重複するレコード...
-
ManagementStudioからのデータ削除
-
テーブルのレコード削除ができ...
-
Accessでの排他制御
-
(ACCESS)並び替えをしないで...
-
Accessでレコードが更新された...
-
Accessの重複クエリで最小以外...
-
Accessで重複したデータを一件...
-
非連結サブフォームのレコード...
おすすめ情報