• 締切済み

アクセス Me.Requeryでダウン

アクセス+VBAです。 Public Function sakujo() s = "DELETE FROM 予約TB WHERE 個人ID = 1 AND 予約科目= '算数'" CurrentDb.Execute s Me.Requery End Function のような関数を別フォーム[A]から Debug.Print Forms!フォーム1!サブフォーム1.Form.sakujo して呼出し使おうとしてます。 しかし Me.Requery のところで何のメーッセージも無くアクセス自体が終了してしまいます。 Me.Requeryで一時停止させてF5(実行の続き)をすると 「レコードは削除されています」 とメッセイージが出て、その後アクセス自体が終了です。 また、他フォーム[B]から呼出すと正常に動きます。 説明不足かもしれませんが、どうのような原因が考えられるでしょうか?

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

フォーム[A]の詳細等不明ですが・・。 モジュール内でDAOで削除するSQLの後Requeryするのではなくフォーム上のイベントでRequeryするとどうなりますか。 Public Function sakujo() CurrentDb.Execute "DELETE FROM 予約TB WHERE 個人ID = 1 AND 予約科目= '算数'" End Function としておいてDebug.Printで評価する際にRequeryさせた場合も終了してしまいますか。

situmonnsya
質問者

お礼

私のコードがヘボッてました。 [A]と[B]でRequeryする前にフィルタがかかってて、それぞれ違う見たかをしてたのが原因だったみたいです。 いつも、いつも、ありがとうございました。

situmonnsya
質問者

補足

いじってたら、フォーム[B]からも終了してしまいました。 ということは、やっぱりコードがまずいみたいです。 フォーム[A],[B]でCurrentDb.Execute 削除させた後 Debug.Printでメインフォーム側でRequeryさせても同じでしたが、一時停止させると 「”再クエリ”アクションを実行する前にカレントフィールドを保存する必要があります」 とメッセージがかえります。 もう少し考えてみますが、何かヒントがありましたらお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2007のサブフォームのRequeryで悩んでいます。。

    Access2007のサブフォームのRequeryで悩んでいます。。 Aメインフォーム Bサブフォーム埋め込みコントロール Cサブフォーム リストボックスう AにBを貼り付けBのソースオブジェクトにCを指定しています。 Cは帳票形式です リストボックスをクリックしたら、 CのRecordSourceにSQLを挿入し、 CをRequeryしていますが、全くRequery出来ていない模様なのです。。 B.SourceObject="C"も試したのですが、全く思った通りのデータが抽出されません。 B.Form.Requery Me.B.Form.Requery どれも試して駄目でした。 CのRecordSourceに直接SQLを貼り付けたら思った通りに出ますが、 Requeryが機能していない気がします。 実行結果は、数件対象データはあるのに、Cの中身は空になります。。。 正しくRequeryする方法、もしくは違うやり方があればご教授頂けないでしょうか?

  • アクセスのメインフォームのみRequeryしたい

    アクセスでフォームを作製しています。 シンプルに「メインフォームの中にサブフォームがある」形で作製し各フォームにはクエリをレコードソースとして指定しています。検索したいデータのコードを入力してそのデータを表示させる・・・という一般的なフォームなのですが、メインフォームのみRequeryさせたいのですができますか? [Forms].[メインフォーム].requery とするとサブフォームまで再計算されてしまいますが、ここでサブフォームは再計算させないで、メインフォームだけ再計算させたいのです。宜しくお願いします。

  • Access VBA Me.Requery レコードは削除されています エラー

    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 -------------------------------- 途中で何かのプロパティが変化しているからでしょうか? 解決方法わかる方いらっしゃいますか?

  • Access メインフォームのリフレッシュについて

    Access2003 にて、下記の手順で処理するプログラムを作成しています。 メインフォーム(埋め込みサブフォーム ※データシートビュー 一覧表) →埋め込みサブフォームの対象のレコードセレクタをダブルクリック。 →別フォームを起動し、データ入力更新。別フォームを閉じる。 →メインフォームのリフレッシュ し別フォームで変更した内容を反映させたい。 メインフォームのリフレッシュを行いたいのですが、うまくいきません。 ■試してみたこと メインフォーム、サブフォーム、別フォームとあり、 1. 別フォームのデータ更新が終了したあと、 別フォームを閉じる直前にForms![メインフォーム名].requery をしてみた メインフォームは別フォームを開く前の状態と、変化なし 2. 別フォームのデータ更新が終了したあと、別フォームを閉じ サブフォーム内ロジックで、Forms![メインフォーム名].requery をしてみた メインフォームは別フォームを開く前の状態と、変化なし 3. 別フォームのデータ更新が終了したあと、別フォームを閉じ サブフォーム内ロジックで、Me.requery をしてみた メインフォームは別フォームを開く前の状態と、変化なし ----- いずれもメインフォームには変化はありませんでした。 出来れば、メインフォームにはForm_Loadした時と同じように 処理を走らせたい(メインフォームを閉じることなくフォームロードから処理を再開させたい) と考えています。 サブフォームを含め、メインフォームごとリフレッシュするような処理はないでしょうか。 ご存知のかた宜しくお願いいたします。

  • サブフォームをリクエリするには?

    アクセスのフォームにはサブフォームがあり、 親フォームの上にあるコマンドボタンで、テーブルに対してアクションクエリでレコードの削除やレコードの更新を行います。 サブフォームにはそのテーブルをソースとしたデータを表示させているのですが、 親フォームの上にあるコマンドボタンのイベントの最後に、 Me.Controls("サブフォーム").Requery を入れても、フォームのデータが#Deletedになります。 Me.Requery でも、サブフォームのデータは#Deletedになってしまいます。 フォームを開きなおしたり、並べ替えをすればデータが表示されますが コマンドボタン押下後にイベントを実行し終わったら、サブフォームのデータも更新されたデータを表示するさせるには どうすればいいでしょうか?

  • ACCESSフォームでSELECTSQLを発行したい

    教えてください。 アクセスのフォームを使ってSELECTするフォームを作りたいと思っています。 前にudpateのフォームをつくったことはあるのですが、 SQLをSELECT文に変えたらエラーになってしまいまいした。 よく考えたら CurrentDb.Execute SQL というのは、 SELECTは無理なのでしょうか? よろしくお願いします。

  • Access2007の、フォーム入力について

    下記のようなコマンドを、ボタンに追加しました。 名前の欄に入力して、ボタンを押すと、レコードの名前フィールドに入力されます。 Private Sub コマンド10_Click() If Nz(Me.名前1, "") <> "" Then CurrentDb.Execute "INSERT INTO 氏名 (名前) SELECT '" & Me.名前1 & "'" End If If Nz(Me.名前2, "") <> "" Then CurrentDb.Execute "INSERT INTO 氏名 (名前) SELECT '" & Me.名前2 & "'" End If If Nz(Me.名前3, "") <> "" Then CurrentDb.Execute "INSERT INTO 氏名 (名前) SELECT '" & Me.名前3 & "'" End If If Nz(Me.名前4, "") <> "" Then CurrentDb.Execute "INSERT INTO 氏名 (名前) SELECT '" & Me.名前4 & "'" End If If Nz(Me.名前5, "") <> "" Then CurrentDb.Execute "INSERT INTO 氏名 (名前) SELECT '" & Me.名前5 & "'" End If DoCmd.Close acForm, "フォーム1" End Sub テキストボックスには、それぞれ名前1~5、という名前がつけられています。レコードが追加されるテーブルは「氏名」です。 そこで、さらにテーブルに部署フィールドを追加して、フォームに上から、部署1~5のテキストボックスを追加し、 名前と部署のテキストボックスの、それぞれ対応しているものが、同じレコードに追加されるようにするには どうすればよいでしょうか? 有識者の皆さま、どうぞよろしくお願いいたします。

  • アクセスにて、フォームのテキストボックスの値をテーブルにコピーしたい

    初めて質問させていただきます。宜しくお願いします。 アクセスで、 ===フォーム上にある非連結テキストボックスに、日付を入力し、コマンドボタンをクリックすると、テーブルにある日付のデータをクリアし、その後フォーム上のテキストボックスに入力した日付を挿入===の方法を教えていただきたいと思います。 CurrentDb.Execute "DELETE * FROM T_設定日;" CurrentDb.Execute "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');" 上記でやってみたところ、データのクリアはされるのですが、その後、テキストボックスに入れた日付は入りません。エラーは出ません。 アクセス初心者で、分かりにくい説明と思いますが、宜しくお願いします。

  • Accessで表をRequeryすると…

    こんにちは。 Accessでサブフォームを持っているフォームがあり、サブフォーム側では Aというテーブルがレコードソースになっていて帳票形式で表示しています。 メインフォームで単票形式で表示してます。 サブフォームで表示された表の中から1レコードを選ぶと、メインのフォーム にコピーし編集が出来るようにしています。 そしてメインフォームで変更された内容をAテーブルに書き出し、サブフォーム の内容も最新の内容に書き換わっている、という事をしているのですが、 サブフォームをRequeryすると、表示順序やレコードセレクタの位置が変わって しまうのです。 サブフォームを、レコードを選択した時の位置のままで、内容は最新の状態で 表示できるようにするにはどうしたらいいのでしょうか? よろしくお願いします。

  • Access 2003でサブフォームが更新されません。

    リストボックスの値を変更すると、サブフォームが更新されるようにしたいのです。 サブフォームのレコードソースはクエリから引用しています。 Dim db As Database Dim qry As QueryDef Set db = CurrentDb Set qry = db.QueryDefs("計画クエリ") qry.SQL = newSQL qry.OpenRecordset qry.Close db.Close Set db = Nothing Me!計画クエリのサブフォーム.Form.Requery という形で、更新しようとしても更新されません。詳しい方教えてください。