- PR -

ストアドプロシージャの呼び出し(VB.NET)

1
投稿者投稿内容
mina_rai
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2003-09-05 14:15
いつもお世話になっております。

VB.NETの勉強を最近始めたばかりの初心者です。
ストアドプロシージャの呼び出しを行う際に、引数をうまく渡すことができません。


cmdAdo = New OleDbCommand("SP_NITIJICHECK", myConn.Connection)

With cmdAdo

.CommandType = CommandType.StoredProcedure

  par_1 = .Parameters.Add("RETURN_VALUE", OleDbType.Integer, 0)
  par_1.Direction = ParameterDirection.ReturnValue
  par_2 = .Parameters.Add("@cYYYYMMDD", OleDbType.Char, 8, TxtBox1.txt)
  par_2.Direction = ParameterDirection.Input
  par_3 = .Parameters.Add("@nTenCd", OleDbType.Integer, 2, 12)
  par_3.Direction = ParameterDirection.Input
End With

   myConn.DbOpen()

   Try
     cmdAdo.ExecuteReader()
     myConn.DbClose()

   Catch o As Exception
     MsgBox(o.Message.ToString)
   
   End Try


上記のように引数を渡し、実行を行うと

「プロシージャ'SP_NITIJICHECK'にはパラメータ'@cYYYYMMDD'を指定してください」
というエラーが表示されます。
ちなみにプロシージャ'SP_NITIJICHECK'は一度実行させたことがあるので正しいはずです。
自分なりに調べましたが原因がわからないので、ご意見いただけますか。




焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2003-09-05 15:40
OleDbは使用したことがないのでわかりませんが、
TxtBox1には値が入っていますか?
日付に空文字列を指定した場合は下記のエラーになる可能性があります。

その場合はDBNull.Valueを指定すると回避されます。

一応、参考までに。
mina_rai
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2003-09-05 15:58
ご返答ありがとうございます。

値はきちっと入力したのですが、エラーがでてしまいます・・・。
やはり引数の渡し方が間違えているのでしょうか?
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2003-09-05 16:25
引用:

mina_raiさんの書き込み (2003-09-05 14:15) より:
  par_2 = .Parameters.Add("@cYYYYMMDD", OleDbType.Char, 8, TxtBox1.txt)
  par_2.Direction = ParameterDirection.Input



ヘルプ
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpref/html/frlrfsystemdataoledboledbparametercollectionclassaddtopic6.htm
を見る限り、4つ目の引数は値じゃないような気がします。

値はValueプロパティで設定するのではないでしょうか?
mina_rai
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2003-09-05 16:53
焼きそばさんありがとうございます!

最後の引数に値を持たせず、その直後にValueを使えばできました!
ありがとうございました!
mina_rai
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2003-09-05 17:42
何度もすみません・・・。

おかげ様でストアドプロシージャを走らせることができたのですが、
その処理の途中で「時間切れです」というエラーがでます。
この原因がわかる方、ご意見おねがいします。
mina_rai
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2003-09-05 18:07
ご迷惑おかけして申し訳ありません。

単純にタイムアウトの設定でした・・・。
1

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