こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access2013でスタック領域不足エラー

Access2013でスタック領域不足エラー

お世話になっております。
Access2013で開発したシステムを現在Office365で修正を行っております。
親フォーム(連結フォーム)に「次へ」ボタンを配置し、クリックする度に次のレコードをフォーム上に表示するプログラムで、「スタック領域が不足しています」のエラーが発生します。
ゆっくりとレコードを送る分には問題ないのですが、ボタンを早くクリックし続けると、3,40件あたりでエラーとなります。
また、親フォームの中に8つのタブを作り、それぞれサブフォームを作成し、親フォームのIDとサブフォームのIDでリンクしており、次へいくたびに該当のデータを表示しております。
おそらくこのタブでの表示処理が多いためエラーとなっていると推測しております。

「次へ」ボタンのコードは以下の通りです。

Private Sub bt_next_Click()
On Error Resume Next
DoCmd.GoToRecord , , acNext
End Sub

色々と調べておりますがなかなか解決しません。
何か良い対策はございませんでしょうか。

投稿日時 - 2019-10-25 12:33:48

QNo.9670986

困ってます

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

コメント有難うございます。
>現在単票フォームですが、こちらはクライアントの指定ですので
 変更することができません。
★3,40回早押しクリックのエラーは当然だと思います。
 性能の違うPCで試して下さい。
 エラーの頻度に差が出ると思います。
★クライアントの方に提案なさってはいかがですか
 添付のように帳票フォームでレコードがあふれると右辺にの
 スクロールバーのクリックの位置により
 数レコード、画面単位、ハンドルで自由に数千レコドを一瞬に移動できます。
 単票フォームが必要ならレコードの端に「単票」ラベルを配置し
 これのクリックイベントでピンポイントで開く事も出来ます
----------------------------------------
Private Sub 単票_Click()
DoCmd.OpenForm ("名前登録単票,,,[名前]=[forms]![名前登録];")
End Sub
----------------------------------------------------------------- 
>同じく、8つのタブに関しても指定された仕様ですのでコンボボックスに
 変更することができません。
>親フォームのIDとサブフォームのIDでリンク
★これらのIDはオードナンバー型ですよね親フォームのテーブルに含めることも
 出来ないですか

投稿日時 - 2019-10-28 22:15:54

お礼

ご返信頂きありがとうございました。
早押し(クリック)することによるエラーについては、PCの性能に左右されることを教えて頂きありがとうございました。
今回その点の解消を目的としておりましたが、仕様等も考慮して、使い方の指導及び検索機能(ページ送り)を工夫して満足いただけるように進めていきます。
お付き合い頂きありがとうございました。

投稿日時 - 2019-10-29 10:30:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

回答No.1です。
添付する画像が間違えました。
正しくはこちらです。
尚、画像のようにクイックアクセスツールバーをリボンの下に表示すると
表示幅が画面幅になり、たくさんのツールを配置できます。
また下辺の移動ボタンを非表示も可能ですがレコード件数も非表示になってしまいます。

投稿日時 - 2019-10-26 21:22:36

補足

ご返信が遅くなり申し訳ありませんでした。
まず、クイックアクセスツールバーへの配置については教えていただきありがとうございました。
質問時に書いたコードはまだ未完成で「次へ」をクリックする時に色々と制御する方向ですので、
今回はクイックアクセスツールバーへの配置は考えておりません。
また、現在単票フォームですが、こちらはクライアントの指定ですので変更することができません。
同じく、8つのタブに関しても指定された仕様ですのでコンボボックスに変更することができません。
自分では原因が特定できず曖昧な質問になってしまい大変恐縮ですが、この状況でエラー原因及び解決方法があるようでしたらご教授いただければ幸いです。

投稿日時 - 2019-10-28 14:49:51

ANo.1

今晩は
>親フォーム(連結フォーム)に「次へ」ボタンを配置し、
 クリックする度に次のレコードをフォーム上に表示するプログラムで、
 「スタック領域が不足しています」のエラーが発生します。
 「次へ」ボタンのコードは以下の通りです。
 Private Sub bt_next_Click()
  On Error Resume Next
  DoCmd.GoToRecord , , acNext
 End Sub
★このボタンはフォーム下辺の移動ボタンと同じ働きですね
 この移動ボタンをクイックアクセスツールバーに配置すれば、
 親フォーム、サブホームを問わず、マウスカーソルがあるフォームに
 効きます。移動ボタンはリボン内にはありませんが、用意されています
 クイックアクセスツールバーへの配置の流れ
  クイックアクセスツールバーの空白部を右クリック
 →クイックアクセスツールのユーザ設定
  画面がACCESSのオプションに変わります。
  右枠はツールの配置されている一覧です
 →挿入したい位置をクリック→コマンドの選択を「フォームタブ」
  このリストの並びはバラバラですが
  「最後のレコード」「次のレコード」「先頭のレコード」
  ぐっと離れて「前のレコード」とあります
  追加ボタンで配置します
 →最後にOK これが無いと水の泡
>ゆっくりとレコードを送る分には問題ないのですが、
 ボタンを早くクリックし続けると、z3,40件あたりでエラーとなります。
★フォームの書式で既定のビューは単票フォームですね、帳票フォームに
 すると右辺の縦のスクロールバーで数千件でも支障ないです
 ※サブフォームのあるフォームの作成時には単票ですが、
 出来てしまえば切替は容易です
>また、親フォームの中に8つのタブを作り、
 それぞれサブフォームを作成し、
 親フォームのIDとサブフォームのIDでリンクしており、
 次へいくたびに該当のデータを表示しております。
★テーブルのフィードを見なければ何とも言えませんが
 親テーブルに8つのサブテーブルをルックアップ(コンボボックス)が有効かも
 テーブルのID(リレーショナル型)はAccessで管理してくれるもの
 フォーム設計に組み込めないと思うのですが

投稿日時 - 2019-10-26 20:52:18

あなたにオススメの質問