Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2247 / 9994 ←次へ | 前へ→

【11024】Re:他のmdbのプロシージャを値渡しで実行したい
回答  YU-TANG  - 09/2/28(土) 14:42 -

引用なし
パスワード
   こんばんは、YU-TANG です。

> appAcc.Run "make_add_mdb", tg_date
>
> としているのですが
>
>
> B.mdbで
>
> どのように引数を受け取ればよいでしょうか
>
>
> Public tg_date As Integer
>
> Public Sub make_add_mdb()

Run メソッドのヘルプはお読みになりましたか?
ht tp://msdn.microsoft.com/ja-jp/library/cc358719.aspx

ヘルプに使用例が出ているので、それを見ればお分かりになると
思いますが、Run メソッドの第二引数以降は呼び出される側の
関数の仮引数に渡されます(パブリック変数に渡されるわけでは
ありません)。したがって、呼び出される側の関数頭部で対応する
仮引数が宣言されていないと、Run メソッドで値を渡しても受取人が
誰も居ない状態になります(今がその状態です)。
ヘルプを参考に正しく記述すれば、引数の受け渡しは簡単にできると
思います。

>      SQL = "SELECT tb_master.* INTO tb_master_add " _
>           & "IN 'D:\my_fd\my_dt_recadd.mdb' " _
>           & "FROM tb_master WHERE (((tb_master.更新時)>=Date()-tg_date));"
>     
>      DoCmd.RunSQL SQL
>
> ・・・・・
>
> のようにしていますが
> パラメータの入力ダイアログが表示されてしまいます

これは Run メソッドとはまったく別の理由です。
SQL 文を実行するのは JET データベースエンジンですが、JET は
Access VBA の変数を認識しません。したがって、SQL 文中の識別子
tg_date は JET にとって未定義ですから、パラメータとして
取り扱われます。

Run メソッドを正しく使えば変数の受け渡しができているはずですから、
JET 側に変数を参照させるような(そもそも不可能な)真似をさせずとも、
SQL 文自体に実数値で埋め込めば事足りるのではないでしょうか。

それでは。

709 hits

【11019】他のmdbのプロシージャを値渡しで実行したい ON 09/2/22(日) 23:03 質問[未読]
【11024】Re:他のmdbのプロシージャを値渡しで実行し... YU-TANG 09/2/28(土) 14:42 回答[未読]

2247 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078197
(SS)C-BOARD v3.8 is Free