アプリ版:「スタンプのみでお礼する」機能のリリースについて

縦に長いフォームを作っているのですがフォームビューをするとフォームがやや下の方の画面で開けられてしまいます。
原因はフォームオープン時に対象レコードをテキストボックスに入れたり、プルダウンボックスにレコードをセットしたりしているからだと思います。(全てコーディングで)
どうすればスクロールバーを一番上まで戻すことができますか?元からスクロールバーを移動させずにレコードをセットする方法でもかまいません。

それともう一つ、フォームのプルダウンボックスに、プロパティの値集合ソースからSQLをセットしたりする方法がありますが、VBAのグローバル変数をWHERE句に使用したい場合はこの方法は使えませんよね?

最後にもう一つクエリはVBAのグローバル変数使えませんよね?
フォームのコントロールから値を取得することもできませんよね?

A 回答 (2件)

ACCESSをお使いになっていると想定して返答させて頂きますね。


(クエリ等の話が出ているので)

フォームのスクロールは
VBAのコーディングで値をセットしているならば
それらが終わった後で

SendKeys "{PGUP}"

を実行してPageUpキーを送信してやるのが手っ取り早いかと。

クエリがフォームのコントロールの値を取得する事は可能です。

[Forms]![フォーム名]![コントロール名]

の形式でクエリに埋め込んでみてください。
ただし、参照先のフォームはフォームビューで
開かれている必要があります。

VBAのグローバル変数はクエリから直接は参照できませんので
VBAのコーディングでグローバル変数を使ってSQLの文字列を構築し

Currentdb.QueryDefs("クエリ名").SQL = "作成したSQL"

でクエリのSQLを書き換えるという方法があります。

この回答への補足

SendKeys "{PGUP}"の方法ダメでした。順番的に一番最後に処理させているのですが、デバッグモードで調べてもピクリとも反応しませんでした。
なぜできないのか原因はわかりませんが、とりあえず他の方法で対処できました。

[Forms]![フォーム名]![コントロール名]の方法は利用してみます。
フォーム中のコントロールの埋め込み式(値集合ソース)で利用して、別のフォームのコントロール値を取得して現在のフォームのプルダウンボックスのSQLにセットできそうなので今度やってみます。

Currentdb.QueryDefs("クエリ名").SQL = "作成したSQL"この方法は今のところ使うところがないので頭の片隅に置いておきます。

補足日時:2004/10/07 01:59
    • good
    • 1

対処できたとの事ですので補足になりますが



SendKeysステートメントはあくまで単純にキー操作を
実行するだけの処理ですので、タイミングがずれると
意図した通りに動いてくれない事はあります。

キーボードからの操作を受け付けないタイミングで実行されて
動かない事も考えられますし、デバッグモードで実行しても
通常実行時と同じ動きにはなりません。
(デバッグモードの画面に対してキー操作した事になる)

手っ取り早い方法という事で挙げてみましたが、あまり安定したやり方とは言えないので
フォーム上部の方にあるコントロールに対して

[コントロール名].SetFocus

でフォーカスを移した方が良かったかもしれませんね。
ただこれだとコントロールの位置に依存しますし
画面の最上部までスクロールする保証はなかったものですから。
    • good
    • 0
この回答へのお礼

ありがとうございます。
実は私もその方法でしました。フォームの一番上に可視のテキストボックス(後で不可視にする)を貼り付けて、そこにフォーカスを一旦移動させてから、その少し下の目的のコントロールにフォーカスを移動させることで対応しました。
SendKeysステートメント自体初めて見たので参考になりました。

お礼日時:2004/10/08 00:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A