Date: Wed, 22 Nov 2000 12:58:57 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です
リストボックスやコンボボックスなどのレコードソースにストアド
プロシージャを連結させ、しかもパラメータを渡したい方法を
教えてくださいという質問がありましたので、お答えします。
結論から言って、できません。
なぜなら、フォームのInputParametersプロパティと同じものが
存在しないからです
しかし次のような方法で妥協することはできます。
リストボックス(コンボボックス)の
値集合タイププロパティを、『テーブル/ビュー/ストアドプロシージャ』
に設定します。これはコントロールのデザインをするときに設定してください。
VBプログラムの中で(例えば検索範囲入力が終わった後などに)
値集合ソースプロパティ(RowSource)の値に、SQL文をセットし
再クエリーメソッド(Requery)を実行します。
このSQL文を組み立てるときに、パラメータの値を評価してください。
ストアドプロシージャを呼び出すときは、EXECキーワードを忘れる人がいます
必ず付けてください。ここではEXECを省略することはできません。
(例)
CREATE PROCEDURE ItemList
@cd int = 0
AS
select 社員コード,氏名 from 社員 where (社員コード <= @cd)
このようなストアドプロシージャが登録されているときにリストボックスには
次のプロパティをデザイン時にセットする
リストボックス
名前 LIST
値集合タイプ テーブル/ビュー/ストアドプロシージャ
値集合ソース EXEC ItemList (注意)必ずEXECが必要です
列数 2
列見だし いいえ
列幅 1cm;2cm
連結列 1
プログラム実行時にボタンが押されたら次のVBAを実行させる
Private Sub 再表示_Click()
Dim sql$
sql$ = "exec itemlist @cd = " & Forms![検索範囲入力フォーム]![code]
'***MsgBox sql$
Me![LIST].RowSource = sql$
Me![LIST].Requery
End Sub
テキストボックスcodeに、入力された値をパラメータとします
以上の方法を行えば、リストボックスに表示させる項目を自由自在に
変えることができます。
#このようなアドバイスをすると、またどこかの出版社がQ&A本の中に
#パクッってしまうんだろうな−
---------------------------------------------------
(株)日本技術ソフト開発 堀川 明
mailto:who@example.ne.jp
mailto:who@sub.example.jp
http://www.horikawa.ne.jp/msde/
http://www.kt.rim.or.jp/~pwp/
11月22日(水曜日) 12時58分記
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|