MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/11/24
Microsoft Data Engine FunClub
Since 2000.11.24
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻)
【第23章494p 〜 496p掲載】

【例題12番】
ADOプログラムによる
連結フォームの作成
パラメータ付きストアドプロシージャが返すレコードセットに連結


患者番号の検索範囲を入力し、検索ボタンを押してください
検索結果のレコードセットはADOプログラムによって作成します

ADOプログラムによる連結処理

検索連結ボタンのVBAプログラム

'
'************************************************************
'                      【検索の実行】
'  レコード検索を行うストアドプロシージャをレコードセットとする
'************************************************************
'
Private Sub Search_Click()
    Dim r$, s$, e$
    
    '検索対象の患者ID番号の取得
    s$ = "1"
    e$ = "999"
    If Not IsNull(Me![St]) Then s$ = Me![St]
    If Not IsNull(Me![Ed]) Then e$ = Me![Ed]
    
    '今までのレコードセットの連結を解除する
    Discon Me
    
    'ADOの接続
    '現在のAccessプロジェクトの接続を取得する
    Dim cn As ADODB.Connection
    Set cn = CurrentProject.Connection
           
   'ADOレコードセットを作成する
    Dim rs As New ADODB.Recordset

    'レコードセットのプロパティを設定する
    rs.CursorLocation = adUseServer
    rs.CursorType = adOpenStatic
    rs.LockType = adLockOptimistic
    
    'レコードソースの定義
    'パラメータ付きストアドプロシージャの実行です
    r$ = "EXEC PROC_医師患者2 @st=" & s$ & " , " & _
                             "@ed=" & e$
    rs.Open r$, cn, , , adCmdText
    MsgBox r$, , "レコードソースの定義式"
        
    'フォームのレコードセットに代入する
    Set Me.Recordset = rs
       
    '再同期コマンドの定義
    Me.ResyncCommand = "Resync_医師患者 @no = ?"
       
    '固有のテーブルの定義
    Me.UniqueTable = "患者"
    
    'テキストボックスの連結先フィールド名の設定
    'テキストボックスの名前が列名に一致している
    Me![患者番号].ControlSource = "患者番号"
    Me![患者姓].ControlSource = "患者姓"
    Me![患者名].ControlSource = "患者名"
    Me![医師番号].ControlSource = "医師番号"
    Me![医師氏名].ControlSource = "医師氏名"
    Me![医師電話].ControlSource = "医師電話"
       
    '念のためクエリーの実行
    Me.Requery
   
   '検索が失敗したときは連結を解除する
   If (Me.Recordset.RecordCount = 0) Then
       MsgBox "レコードの検索に失敗しました", , "失敗です"
       Discon Me
   End If
End Sub
'
'**********************************
'  フォームのレコードセットを解除
'**********************************
'
Sub Discon(fm As Form)
   If Not (fm.Recordset Is Nothing) Then
       fm![患者番号].ControlSource = ""
       fm![患者姓].ControlSource = ""
       fm![患者名].ControlSource = ""
       fm![医師番号].ControlSource = ""
       fm![医師氏名].ControlSource = ""
       fm![医師電話].ControlSource = ""
       fm.RecordSource = ""
   End If
End Sub

技術評論社の書籍ガイドへ
下巻:ISBN4-7741-0966-5

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません