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.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
-----------------------------------------
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.3
- 回答日時:
#1です。
結構複雑なことしていますね。こちらでも再現させてみようかと思いましたが、ちょっと断念しました。
ふとした思いつきなのですが、Me.requeryの代わりにMe.refreshでも駄目でしょうか。あるいはRefreshした後にRequeryではどうでしょうか。
簡単に試せるので試してみてください。
No.4
- 回答日時:
[参考までに..]
1年前の質問に回答して良いものなのか、わかりませんが、自分も近い現象に何度か遭遇したことがありますので、そのときの解決方法を載せときます。
Me.Requery がなんらかの原因で使用できない場合は
以下の方法が有効となります。
-----------------------------
Dim strRS as String
strRS = Me.RecordSource
DoCmd.Echo False
Me.RecordSource = ""
<<各種クエリ操作>>
Me.RecordSource = strRS
DoCmd.Echo True
----------------------------
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Access「レコードが削除されました」のエラー
Access(アクセス)
-
「実行時エラー '3167' レコードは削除されています。」を回避する方法
Visual Basic(VBA)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
6
レコード削除時に(サブ)フォームに表示される#Deleted"について"
Access(アクセス)
-
7
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
8
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
-
9
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
10
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
11
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
12
ACCESSフォーム入力後の確定
Access(アクセス)
-
13
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
14
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
15
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
16
アクセス フォームをリクエリしたい
Access(アクセス)
-
17
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
18
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
19
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
20
Accessの実行時エラーについて
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データの二重表示の原因
-
Accessにインポートしたら並び...
-
ACCESS 『DoCmd.OutputTo』に...
-
XamppのMySQLへとレコードが登...
-
Access 1レコードずつcsvで出力...
-
2つの項目が重複するレコード...
-
カラム数が多いテーブルの速度
-
3つ以上のテーブルをUNIONする...
-
アクセス重複データ
-
排他モードで開く場合は、どう...
-
「マスタ」と「テーブル」の違...
-
SELECT時の行ロックの必要性に...
-
Accessのリンクテーブルについて
-
SQLServer + PHP で直近に追加...
-
ACCESS 一番最新の日付の金額...
-
ビューで引数を使いたい
-
重複するキーから一番古い年月...
-
accessテーブル作成クエリを実...
-
どういう時にテーブルロックを...
-
Access VBA [リモートサーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
2つの項目が重複するレコード...
-
数百万件レコードのdelete
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
Access 1レコードずつcsvで出力...
-
Access 削除クエリが重い
-
ManagementStudioからのデータ削除
-
SQLServerで同一条件レコードの...
-
非連結サブフォームのレコード...
-
Accessでレコードが更新された...
-
Accessでの排他制御
-
(ACCESS)並び替えをしないで...
-
Accessで重複したデータを一件...
-
Accessでの禁止文字チェック
-
Access カレントレコードがあり...
-
ACCESSファイルを開こうとする...
-
ACCESS【更新クエリの中断がで...
おすすめ情報