• 締切済み

レコードが保存できません。

Access2002です。 連結フォームで値に更新があった場合、保存を意図的に行って 他のレコードへ移るようにしたいと思っています。 ウィーザードでは次のようなコードが発生されますが、 このコードで保存しようとすると「DoMenuItem アクションの 実行はキャンセルされました。」とエラーになります。 DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 なお、Me.Dirty=Falseの場合だと、エラーになりません。 でも、これだと意味がありません。 この場合、どうしたらいいのでしょうか? 情報不足の場合、追加いたします。

みんなの回答

noname#110201
noname#110201
回答No.1

手元にAccess2002がないので、実際に確認したわけではありませんが。 代わりに、RunCommandメソッドを使ったらどうでしょう。 私の勘違いだったら、どうか誰か訂正していただきたいのですが、 acMenuVer70 のパラメータが怪しいのではないかと思うのです。 Access2002って、Access Version 7.0ではないでしょう? 余計なお世話ですが、意図的に保存をしなければならないのでしょうか。 別のレコードに移動すれば、それでレコードは必ず更新されるのですが。

tss_jp
質問者

補足

RunCommandでもだめでした。 知らないうちに値が変わっていて、知らないうちに 保存されているのがイヤなので確認できないかな?と。 今まではVBで非連結で行っていたんですが、今回は Accessのみで連結になって、そこら当たりの動作が 今ひとつわかりません。 よろしくお願いします。

関連するQ&A

  • Access2003 レコード削除時のメッセージを変更するには

    いつもお世話になっております。 フォーム上の削除ボタンをクリックすると、メッセージが表示されて”OK”をクリックすると該当のレコードが削除されます。 このメッセージを任意に変更したいのですが、どうすればいいでしょうか? 現在のコードはこのようになっています。 DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 具体的にはリレーションシップが組んであるレコードを削除しようとすると、 「このリレーションシップには参照整合性の・・・」という長いメッセージが表示されるのを「このデータを削除しますか?」のように変更したいのです。 ご教授いただければ幸いです。よろしくお願いいたします。

  • Accessでレコードの保存をVBAで

    Access2000です。 入力するとすぐに集計をしたいのですが、 フォームフッターの集計用テキストボックス (=sum([フィールド名])が設定されている) は、レコードを保存しないと、再計算されないようです。 そこで、入力して、フォーカスを喪失するときに DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 を実行して、レコードを保存しているのですが、 デバッグのとき、エラーが発生しますし、 (デバッグ中は、VBAエディタが表示されるため) また、メニューの実行のコマンドは物足りないので、 指定したフォームのレコードを保存する方法は、 他にないでしょうか? よろしくお願いいたします。

  • Access レコード削除時に「カレントレコードがありません」エラーが表示されてしまう

    いつもお世話になっております。 フォームに「レコードの削除」ボタンを作成して実行したところ、 「カレントレコードがありません」と表示されてしまいます。 削除そのものは、正しく行われている(削除したいレコードが削除されている)のですが、 なぜ、そのようなメッセージが出てしまうのか分かりません。 他のフォームでは、削除するレコードが最後のレコードで無い限り、 そのようなメッセージは出ません。 また、そのフォームのレコードソースになっているクエリでは、 問題なく削除が実行されます。 削除ボタンの作成は、コントロールウィザードを使って行いました。 ちなみにVBAでは下記のような記述になっています。 Private Sub 削除テスト_Click() On Error GoTo Err_削除テスト_Click DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 Exit_削除テスト_Click: Exit Sub Err_削除テスト_Click: MsgBox Err.Description Resume Exit_削除テスト_Click End Sub メッセージを表示させないためには、どのようにしたら良いでしょうか?? また、最後のレコードを削除した場合にも、 「カレントレコードがありません」メッセージを表示させなくするには どのようにしたら良いでしょうか? 教えてください。

  • メインフォームとサブフォームのレコードを複製

    (昨日同じ質問をあげましたがカテゴリが間違っていたのでこちらにあげなおしました) メインフォーム「MAIN」にサブフォーム「REN」を埋め込んでいます。 【メインフォームMAIN】 テーブル名:JIK ID:事件ID 【サブフォームREN】 テーブル名:REN ID:連絡先ID(・事件ID) ボタンをクリックすると、メインフォームで表示させているレコードを複製させたいです。 以下を参考に、そのとおり(のつもり)に作ってみたのですが (メインフォーム「MAIN」に「txtCopy事件ID」という名前のテキストボックスも作成しました) 「コマンドまたはアクション”追加貼り付け”は無効です。」 とエラーメッセージが出てしまいます。 どのように修正すればよいでしょうか? http://www.accessclub.jp/bbs3/0103/superbeg36719 … ちなみに追加クエリだけを実行すると 表示させているメインフォーム「MAIN」のレコードに、 サブフォーム「REN」のレコードが追加され、 サブフォーム「REN」のレコードが2倍になりました。 以下追加クエリとコードです。 【追加クエリ】 INSERT INTO REN ( 事件ID, 氏名, フリガナ, ・・・ ) SELECT [Forms]![MAIN]![事件ID] AS 式1, REN.氏名, REN.[フリガナ], REN.報告書, ・・・ FROM REN WHERE (((REN.事件ID)=[Forms]![MAIN]![txtCopy事件ID])); 【VBA】 Private Sub 明細コピー_Click() On Error GoTo Err_明細コピー_Click Me!txtCopy事件ID = Me!事件ID DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append Dim stDocName As String DoCmd.SetWarnings False ' システムメッセージ非表示 stDocName = "追加クエリ" DoCmd.OpenQuery stDocName, acNormal, acEdit DoCmd.SetWarnings True ' システムメッセージ表示 ' サブフォーム再クエリ Me!REN.Requery Exit_明細コピー_Click: Exit Sub Err_明細コピー_Click: MsgBox Err.Description Resume Exit_明細コピー_Click End Sub よろしくお願いいたします!

  • ACCESSでのデータ削除について

    XP&ACCESS2003 メインフォーム/サブフォーム形式のフォームで、受注番号で連結しています。 メインフォームが受注、サブフォームが受注明細です。(1対多) サブフォームに削除ボタンをつけて、受注明細のレコードを1件削除するようにしています。以下が削除ボタンのクリック時のプロシージャーです。 DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 クリックした段階で、クエリーで見てみると確かに削除されています。 ただ、フォームを再度開くと空のデータが追加されています。(=削除前とレコード件数は同じ) このサブフォームでは、レコード追加時にフィールド「行」に行ナンバーを入力させるために、隠しで [行NO]テキストボックスを持たせて、自動的に行NOをいれています。 サブフォームの挿入前処理は以下です。 [行NO] = Val(DMax("[行NO]", "Q_受注_工程_明細_行NO") & ".0") + 1 削除してもこの行NOが自動的に別のレコードを追加しているようです。 何か、よい方法をご存知の方、よろしくお願いします。

  • Access:クリック時のイベントについて

    フォーム上にレポートのプレビューボタンをつけました。 複数のスタッフがデータ入力をしていて、自分が現在入力したデータをプリン トアウトしたいと思っています。 テーブルに『プレビュー』というチェック項目を作り、そこにチェックがはい っているデータをレポートに表示させるようにしていて、プレビューボタンを クリックした時のイベントを以下のように設定していますが、『コマンドまた はアクション'レコードの保存'は無効です。』というエラー表示が出てしまい ます。 どのように書き換えればよいかご存知の方がいたらお教えください。 また、他に『現在自分がフォームを使って入力しているデータのみをプリント する』良い方法をご存知の方がいらっしゃったらお教えください。 Private Sub レポートのプレビュー_Click() On Error GoTo Err_レポートのプレビュー_Click Me!プレビュー = True DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Dim stDocName As String stDocName = ChrW(12463) & ChrW(12524) & ChrW(12540) & ChrW(12512) & ChrW(20966) & ChrW(29702) & ChrW(31080) & ChrW(40) & ChrW(12503) & ChrW(12524) & ChrW(12499) & ChrW(12517) & ChrW(12540) & ChrW(41) DoCmd.OpenReport stDocName, acPreview Exit_レポートのプレビュー_Click: Me!プレビュー = False DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Exit Sub Err_レポートのプレビュー_Click: MsgBox Err.Description Resume Exit_レポートのプレビュー_Click End Sub

  • ACCESSのサブフォームコピーについて

    ACCESSのサブフォームコピーについて お世話になります。色々検索してたのですがなかなか解決できず、教えて下さい。 下記のようなフォームがあります。 メインフォームにボタンを設置し、メインフォームとサブフォームを同時にコピーしたいです。 【メインフォーム】 ID(オートナンバー) 登録名 住所 電話番号 など 【サブフォーム】 SubID(オートナンバー) ID(メインフォームと連結) ライセンス数 開始日 など メインフォームの「内容のコピーを作成」ボタンのクリック時の[イベント プロシージャ]に下記が記載してあります。 --- Private Sub 内容のコピーを作成_Click() On Error GoTo Err_内容のコピーを作成_Click Select Case MsgBox(srchXls & "◆内容のコピーを作成しますか?◆", vbOKCancel) Case vbOK DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append MsgBox (srchXls & Chr(13) & Chr(10) & "◆コピーを作成しました◆") Err_内容のコピーを作成_Click: Case Else Exit Sub End Select End Sub --- これではメインフォームのコピーしか出来ません。 サブフォームも一緒にコピーしたいのですが、どういった方法があるでしょうか。 宜しくお願いいたします。

  • Accessでレコードの複製

    Accessで、ボタンをクリックすると 表示させているレコードをコピーして複製したいです。 以下のようにコードを書いてみたのですが、 「コマンドまたはアクション”追加貼り付け”は無効です」 となってしまいます。 DoCmd.RunCommand acCmdSelectRecord 'レコードの選択 DoCmd.RunCommand acCmdCopy 'コピー DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdPasteAppend '追加貼り付けを実行 ちなみに DoCmd.RunCommand acCmdPasteAppend を DoCmd.RunCommand acCmdPaste に修正しても 「コマンドまたはアクション”貼り付け”は無効です」 となって、エラーになってしまいます。 そこで、以下のようにコードを省略して DoCmd.RunCommand acCmdSelectRecord 'レコードの選択 DoCmd.RunCommand acCmdCopy 'コピー DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ DoCmd.RunCommand acCmdSelectRecord ここで、手動で、ctrl+Vをすると、レコードのコピーができます。 コードの書き方が間違っているのでしょうか? ご教授よろしくお願いいたします!

  • Access2000のVBA

    社内で、既に退社した方が作成したDBで在庫管理をしています。 VBAの記述でよくわからない箇所があるので教えていただきたいのです。 フォームに部品情報を入力し、「コピー」というボタンをクリックすると、「部品番号」のみ空白になり、それ以外の項目は新しいレコードにコピーされるようになっています。 この部分のVBAは Private Sub Copy_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.OpenQuery "qCopy" Me![PartsCode] = Null となっていて、2行目、3行目は理解できたのですが、1行目が何を行っているのか不明です。 初歩的な質問で申し訳ありませんが、よろしくご教授ください。

  • レコードを保存するコード アクセスvba

    アクセスですが DoCmd.Save acForm, Me.Name このコードはフォームを保存するコードですよね? フォームではなく、レコードを保存するコードはありますか?