- PR -

[windows] SqlDataAdapter のパラメータで?

1
投稿者投稿内容
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-01-04 18:48
いつもお世話になっております

 VB.NET の windows アプリで
 親画面にて、SqlConnection、SqlDataAdapter を定義していて
 子画面では
   Private m_fm As frmBaseForm '親画面
m_fm.SqlDataAdapter1.Fill(dataset1)
   というように使用してます。上記の場合は、うまく動作するのですが

 Adapter にパラメータを使用して条件選択する際に、上と同様に
   Private m_fm As frmBaseForm '親画面
m_fm.SqlDataAdapter1.SelectCommand.Parameters("@uid").Value() = uid.text
m_fm.SqlDataAdapter1.Fill(dataset1)
  とすると、パラメータに値をいれる
m_fm.SqlDataAdapter1.SelectCommand.Parameters("@uid").Value() = uid.text
この行で、
   「オブジェクト参照がオブジェクト インスタンスに設定されていません」 という
   エラーが出ます。

すみません ご教授頂けませんでしょうか
よろしくお願い致します

  
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-01-04 18:55
親子の関係は呼び出し元formと呼び出されるform?それとも継承元クラスと継承されたクラス?

エラーにならない
引用:

   Private m_fm As frmBaseForm '親画面
m_fm.SqlDataAdapter1.Fill(dataset1)


のところで、m_fmに値を設定していますか?

エラーになる
引用:

   Private m_fm As frmBaseForm '親画面


のところでは、m_fmに値を設定していますか?

m_fmが自動で使えるわけではありません。
はじめの方では何がしかの方法で値を入れるようになっているのではないでしょうか。

_________________
たつごろー
codeseek
こみゅぷらす
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-01-04 20:06
返信ありがとうございます

 すみません、言葉足らずだったようで、申し訳ありません

引用:

たつごろーさんの書き込み (2005-01-04 18:55) より:
親子の関係は呼び出し元formと呼び出されるform?それとも継承元クラスと継承されたクラス?

のところでは、m_fmに値を設定していますか?

m_fmが自動で使えるわけではありません。
はじめの方では何がしかの方法で値を入れるようになっているのではないでしょうか。




 親子関係は MDI画面の
  呼び出し元formと呼び出されるform  です

 呼び出し元formの画面名が frmBaseForm です
 呼び出されるform にて
    クラス名直後に
   Private m_fm As frmBaseForm

Private Sub Form_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
m_fm.SqlDataAdapter1.Fill(dataset1)
end sub

です。
  エラーになるのと、ならないのでは
  fill をかける前に パラメータをセットする1文が、あるかないかの違いのみです

   m_fm.SqlDataAdapter1.SelectCommand.Parameters("@uid").Value() = uid.text
             '''' uid.text は 画面上の項目です

 すみません よろしくお願い致します




    
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2005-01-04 21:31
引用:

七さんの書き込み (2005-01-04 18:48) より:
m_fm.SqlDataAdapter1.SelectCommand.Parameters("@uid").Value() = uid.text
この行で、
   「オブジェクト参照がオブジェクト インスタンスに設定されていません」 という
   エラーが出ます。

すみません ご教授頂けませんでしょうか
よろしくお願い致します



南部です。

ここまでデバッグして、なぜ、「どのオブジェクト参照が設定されていないのか」
を調べないのですか?

m_fmなのか、
SqlDataAdapter1なのか、
SelectCommandなのか、
Parameters("@uid")なのか。

Parameters("@uid")が設定されていない場合なら、
Parameters(コレクション)に@uidが追加されていないのでしょう。
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-01-05 11:26
引用:

nanbuさんの書き込み (2005-01-04 21:31) より:
南部です。

ここまでデバッグして、なぜ、「どのオブジェクト参照が設定されていないのか」
を調べないのですか?

m_fmなのか、
SqlDataAdapter1なのか、
SelectCommandなのか、
Parameters("@uid")なのか。

Parameters("@uid")が設定されていない場合なら、
Parameters(コレクション)に@uidが追加されていないのでしょう。




南部さん ありがとうございます
いつも このエラーの場合、 「どのオブジェクト参照が設定されていないのか」
を見つけるのに苦労してしまいます
書き方を一生懸命に見直してみるのですが、お手上げになってしまいます (;_;)
デバッグ中の、値の確認に、苦労してしまう毎日です
デバッグの仕方を、もっと、精進しなくてはと、今年の課題です 

m_fm の値を、直前で、違うものに替えてしまっていたのが
原因でした。 すみません 
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-01-05 20:55
引用:

七さんの書き込み(2005-01-05 11:26)より:

いつも このエラーの場合、 「どのオブジェクト参照が設定されていないのか」
を見つけるのに苦労してしまいます


にょにょ?なぜに?
> m_fm.SqlDataAdapter1.SelectCommand.Parameters("@uid").Value() = uid.text
この行で、大まかに2つ、つまり=の左辺と右辺のどちらかになりますよね。そして、uid.textは対象から外れますよね。uidの方は、この上にマウスカーソルを持ってくれば、値が表示されます。それでわかります。メソッドは潜ってくれないので、メソッドの戻り値がnullの時はわかりません。
 では、右辺の見方を。単純に、全部選択して右クリックし、「クイックウォッチ」を選択します。後は後ろからピリオドまで消して、どこがnullなのか調べればok!

_________________
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2005-01-08 14:23
引用:

Jittaさんの書き込み (2005-01-05 20:55) より:
 では、右辺の見方を。単純に、全部選択して右クリックし、「クイックウォッチ」を選択します。後は後ろからピリオドまで消して、どこがnullなのか調べればok!



遅ればせながら ありがとうございます

>後は後ろからピリオドまで消して
このピリオドまで消して というのを
はしょってしまってますね 
>右クリックし、「クイックウォッチ」
こんな便利なものがあったんですね ありがとうございました

デバッグ 精進します!!!
1

スキルアップ/キャリアアップ(JOB@IT)