@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

updateについて・・・

投稿者投稿内容
おっつ
常連さん
会議室デビュー日: 2004/11/04
投稿数: 22
投稿日時: 2005-02-10 16:05
Visual Studio.NETを使用し勉強しながらシステムを開発中です。
簡単に今作っているシステムの説明をしますと、職員情報の検索及び更新システムのようなものを作成しています。職員番号や名前等で職員を検索し、選択された職員の情報を修正入力しデータを更新するといった感じです。
職員の検索、表示、修正入力まではなんとか完成する事ができました。更新についても修正入力し更新ボタンを押すと、見た目はうまくいっているように動作しますが、データについては更新されていませんでした。
更新についてはストアドを使っているのですが、データを色々と確認してみるとストアドでは、

@@番号検索 int = '7422'

と指定しているので、7422のデータが常に更新されているようです。
ので、

@@番号検索 int

と番号部分を取ると、
「プロシジャー'sp_職員情報更新'にはパラメータ'@@番号検索'を指定してください」とエラーが出てしまします。
この説明ではいまいちわかりにくいかもしれませんが・・・・
よろしくお願いします
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-02-10 16:15
今日は。
引用:

「プロシジャー'sp_職員情報更新'にはパラメータ'@@番号検索'を指定してください」


メッセージを見ると相手側のDBはSQL Serverですよね?
んで、ストアドプロシージャがどの様に書かれているか解りませんが、

引用:

@@番号検索 int = '7422'


どういった理由でこうしているのか?
代入の方法をどうするのか?
を調べないと先に進まないと思いますがどうでしょうか? 
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2005-02-10 16:18
こんにちは。

>@@番号検索 int = '7422'

前後が書いてないので推測ですが、これはストアドの引数宣言のところですね?
そしてデフォルト値が設定されていたのに、デフォルト値を取ったところエラーになったってことですね。

たぶん、ストアドを呼び出しているところで、@@番号検索に代入すべき値を指定していないのでしょう。デフォルト値が付いていたときは、指定しなくても’7422’の値で更新してくれてますが、デフォルト値が無くなったので必ず指定しなければいけなくなったのだと思います。

SqlCommand(OldDbComand)のParametersプロパティに適切なパラメータを指定してやりましょう。(SqlCommand使ってるのも推測です。)

おっつ
常連さん
会議室デビュー日: 2004/11/04
投稿数: 22
投稿日時: 2005-02-10 16:29
早速の回答をありがとうございます。
noderaさんのおっしゃる通りだと思います。
デフォルト値がなくなってエラーが出てるんですね。

ストアドへのパラメータの指定ですが、今は

Private Sub Button_Ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Ok.Click
SqlDataAdapte1.SelectCommand.Parameters("@@番号検索").Value() = Session("inputcode")
SqlDataAdapter1.Fill(Data1)
Data1.Tables("sp_職員情報抽出").Rows(0)("銀行コード") = Text_bank.Text
Data1.Tables("sp_職員情報抽出").Rows(0)("店番号") = Text_siten.Text
Data1.Tables("sp_職員情報抽出").Rows(0)("預金種目") = Text_syu.Text
Data1.Tables("sp_職員情報抽出").Rows(0)("口座番号") = Text_koza.Text
SqlDataAdapter1.Update(Data1)
End Sub

のように指定しています。
selectとupdateを共用しているような感じになっています
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-10 21:23
引用:

おっつさんの書き込み (2005-02-10 16:29) より:


んで、解決?

・@は2ついるの?私、OracleメインなのでSQL Serverはよくわからないけど
・SelectCommandのパラメータは、ちゃんとあるの?
 まぁ、なければnull参照になって、そういうエラーになるはずだけど
・Value() = Session("")? Valueの後の括弧はいらないのでは?
・データがなかったときの判定はいらない?
_________________
おっつ
常連さん
会議室デビュー日: 2004/11/04
投稿数: 22
投稿日時: 2005-02-14 15:06
やっぱりうまくいきません。
パラメータの受け渡しがうまくないんでしょうね!
selectとupdateの共用がいけないんでしょうか?
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2005-02-14 15:17
msoです。

引用:

Jittaさんの書き込み (2005-02-10 21:23) より:
引用:

おっつさんの書き込み (2005-02-10 16:29) より:


んで、解決?

・@は2ついるの?私、OracleメインなのでSQL Serverはよくわからないけど




わかる範囲だけなのですが、
@二つはシステムが使っているので使用できなかったと思います。
#まちがっていたらごめんなさい。&突っ込みお願いします。
おっつ
常連さん
会議室デビュー日: 2004/11/04
投稿数: 22
投稿日時: 2005-02-14 16:28
'@@'が二つあるのはストアドの変数の定義で問題はなさそうです。
抽出の時は正常に動作しているので・・・

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