Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

No74102.フォーム処理のモジュール

タイトルフォーム処理のモジュール
記事No: 74102
投稿日: 2010/04/23(Fri) 10:57
投稿者: Kato
OS:XP
Access Version:2002

ある書籍で共通モジュールの活用方法について詳しく記載されており、フォーム処理のモジュール化の例として次のようなコードが紹介されています。
(簡潔にするためエラー処理は省略しました。)

Sub OpenForm(FormName)

Dim stDocName As String
Dim stLinkCriteria As String
stDocName = FormName
DoCmd.OpenForm stDocName, , , stLinkCriteria

End Sub


このコードの変数で疑問があります。

1)
わざわざstDocNameを設定する理由はあるのでしょうか?
単に、
DoCmd.OpenForm FormName
とした方が簡潔なのでは、と感じています。

2)
stLinkCriteriaはwhere条件が必要なケースのみ記述するものと理解しています。
OpenFormの引数は「FormName」だけなのでwhere条件付きでこのプロシージャを呼び出すことはできないように思うのですが、敢えて変数宣言して、なおかつ

DoCmd.OpenForm stDocName, , , stLinkCriteria

とするのはなぜでしょうか(意味があるのか?)。

あるいは、このOpenFormの定義でも呼び出し側からwhere条件を渡す方法があるのでしょうか?

自分の乏しい知識では、

Sub OpenForm(FormName, Where)

Dim stDocName As String
Dim stLinkCriteria As String
stDocName = FormName
stLinkCriteria = Where
DoCmd.OpenForm stDocName, , , stLinkCriteria

End Sub

のように引数として条件を渡せるようにして初めて意味を持つように思えるのですが、自分の知識の及ばない理由があるのでしょうか。

以上の点について解説お願いします。

タイトルRe: フォーム処理のモジュール
記事No: 74104
投稿日: 2010/04/23(Fri) 11:16
投稿者: Suppaman
> 以上の点について解説お願いします。
全てKatoさんの認識が正しいと思います。

書籍のコードはコントロールウィザードが吐き出すコードをそのまま使ったものと思います。
多分、著者はstLinkCriteriaまで頭が行っていないものと思われます。

タイトルRe^2: フォーム処理のモジュール
記事No: 74111
投稿日: 2010/04/23(Fri) 14:14
投稿者: Kato
Suppamanさん、レスありがとうございます。

とりあえず、私の理解で間違いではないようですね^^;;

> 書籍のコードはコントロールウィザードが吐き出すコードをそのまま使ったものと思います。
> 多分、著者はstLinkCriteriaまで頭が行っていないものと思われます。

コントロールウィザードは使ったことがなかったのですが、デフォルトでそういうコードを出すようになっているわけですね。
前述のコードで、stLinkCriteriaにwhere条件を渡す方法があるのかな、と考えていたのですがご回答を拝見してすっきりしました。

ありがとうございました。


このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています


 

ページの先頭へ 前ページへ戻る