| MSDE FunClub |
|
最終更新日 : 2000/11/23 |
|
Microsoft Data Engine FunClub
|
Since 2000.11.23
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) |
|
【第23章489p 〜 490p掲載】 |
【例題9番】
レコード範囲を絞り込んで取得したビュー表に対する
動的連結フォームの作成
この機能により、[VB+RDO]の世界とはサヨナラできる!
レコードを取得するストアドプロシージャ
検索条件を与えてレコードを絞り込む
CREATE PROCEDURE PROC_医師患者2
@st int , --検索開始
@ed int --検索終了
AS
SELECT 患者.患者ID AS 患者番号 ,
患者.姓 AS 患者姓 ,
患者.名 AS 患者名 ,
患者.主治医ID AS 医師番号 ,
医師.医師名 AS 医師氏名 ,
医師.医師TEL AS 医師電話
FROM 患者 INNER JOIN 医師
ON 患者.主治医ID = 医師.医師ID
WHERE( 患者.患者ID BETWEEN @st AND @ed )
患者番号の検索範囲を入力する
検索連結ボタンにより、取得したレコードセットに対して連結を行う

検索連結ボタンが押されたら実行するVBAプログラム
'
'************************************************************
' 【検索の実行】
' レコード検索を行うストアドプロシージャをレコードソースとする
'************************************************************
'
Private Sub Search_Click()
'入力パラメータの定義
Me.InputParameters = "@st int = Forms![例題09 PROC]![st]," & _
"@ed int = Forms![例題09 PROC]![ed]"
'再同期コマンドの定義
Me.ResyncCommand = "Resync_医師患者 @no = ?"
'固有のテーブルの定義
Me.UniqueTable = "患者"
'レコードソースの定義(ストアドプロシージャ)
Me.RecordSource = "PROC_医師患者2"
'テキストボックスの連結先フィールド名の設定
'テキストボックスの名前が列名に一致している
Me![患者番号].ControlSource = "患者番号"
Me![患者姓].ControlSource = "患者姓"
Me![患者名].ControlSource = "患者名"
Me![医師番号].ControlSource = "医師番号"
Me![医師氏名].ControlSource = "医師氏名"
Me![医師電話].ControlSource = "医師電話"
'クエリーの実行
Me.Requery
'連結を解除する
If (Me.Recordset.RecordCount = 0) Then
MsgBox "レコードの検索に失敗しました", , "失敗です"
Me![患者番号].ControlSource = ""
Me![患者姓].ControlSource = ""
Me![患者名].ControlSource = ""
Me![医師番号].ControlSource = ""
Me![医師氏名].ControlSource = ""
Me![医師電話].ControlSource = ""
Me.RecordSource = ""
End If
End Sub