MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[726]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(726番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
ADOのと次レコード移行フォーム表示について

Date: Wed, 18 Jul 2001 15:25:02 +0900
From: who@sub.example.jp


お世話になります。

カナ文字のパラメータオブジェクトを使ったADOのプログラミングで条件検索のアプ

リのテストを行っています。

検索の結果、同じカナ名の方がいられて複数レコードを取得できました。

Access2000のFormに1件目の照会結果がでています。次候補ボタンを作って2件目を

表示したいのですが、

ADOの基本型が理解できてないためうまく行きません。

検索のイベントと次レコード移行のイベントの間でレコードセットの変数"rs"のス

コープが切れてしまいます。

対応方法を教えてください。



■ 使用環境  <クライアント/サーバー>

 クライアントPC

OS/Windows 98

 Access/Access 2000

 SQLサーバ7.0 DESKTOP版(EnterpriseManager含む)をインストールし、

 SQLサーバデータベースを作成.を同じPCに作っています。

(補足)

テスト環境として、1台のPCでクライアント/サーバシステムの形態をとっていま

す。



■ 実現したいこと

・個人の属性検索をします。個人の属性は個人番号、カナ氏名など、

・ Access2000のフォームを使って、カナ氏名 を条件にデータベースを複数レコー

ドを

  次候補ボタンを作って検索します。

・ フォームのモジュールで 次候補のイベント実行をおこないます。

・ イベント時に標準モジュール(SetRecord)がコールされ、標準モジュールの中で

次レコードの表示をする

ADOのプログラミングを組み込んでいます。



■ フォームのイベントプロシージャ(カナ氏名で検索する..1件目を表示)

Option Compare Database

Option Explicit

Const cFormName_M = "人事情報照会"

Dim cn As ADODB.Connection

Dim cmd As ADODB.Command

Dim rs As ADODB.Recordset

Dim parm As ADODB.Parameter

Dim ado_err As ADODB.Error

Dim cmd1 As ADODB.Command

Private Sub kanashimei_AfterUpdate()

   Set cn = Application.CurrentProject.Connection

  Set cmd = New ADODB.Command

  Set rs = New ADODB.Recordset

  Set parm = New ADODB.Parameter

  'parm.Direction = adParamInput

  'parm.Type = adVarWChar

  'parm.Value = Forms(cFormName_M)![kanashimei]

  With cmd

      .ActiveConnection = cn

      .CommandType = adCmdStoredProc

      .CommandText = "str_kana"

      Set parm = .CreateParameter(, adVarWChar, adParamInput, 256,

Forms(cFormName_M)![kanashimei])

      .Parameters.Append parm

 End With

   Set rs = cmd.Execute

   Forms(cFormName_M).Controls("個人番号") = rs![個人番号]

   Forms(cFormName_M).Controls("CD") = rs![CD]

   Forms(cFormName_M).Controls("漢字氏名") = rs![漢字氏名]

   Forms(cFormName_M).Controls("カナ氏名") = rs![カナ氏名]

  rs.MoveLast

  Forms(cFormName_M).Controls("総件数") = rs.RecordCount

  rs.MoveFirst

  DoCmd.OpenForm cFormName_M

  rs.Close

  Set rs = Nothing

  Set parm = Nothing

  Set cmd = Nothing

 Exit Sub

trans_error:

   MsgBox "キーがありません。"

End Sub



■ フォームのイベントプロシージャ(次のレコードに移動して表示)

Private Sub 次候補_Click()

  If Not rs.EOF Then rs.MoveNext

  Forms(cFormName_M).Controls("個人番号") = rs![個人番号]

  Forms(cFormName_M).Controls("CD") = rs![CD]

  Forms(cFormName_M).Controls("漢字氏名") = rs![漢字氏名]

  Forms(cFormName_M).Controls("カナ氏名") = rs![カナ氏名]

  If rs.EOF And rs.RecordCount > 0 Then

   rs.MoveLast

  End If

End Sub



■ 問題

「カナ氏名検索」のイベントプロシージャ(kanashimei_AfterUpdate)で1件目の

レコードをAccessのフォームに表示できました。

「次のレコードに移動して表示」のイベントプロシージャを実行すると



「実行時エラー'91'オブジェクト変数またはwithブロック変数が設定されていませ

ん」

のエラーメッセージがでて、デバッグの場所が

If Not rs.EOF Then rs.MoveNext

を示しています。



seki



[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。