- PR -

updateについて・・・

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-14 21:36
引用:

おっつさんの書き込み(2005-02-10 16:29)より:
コード:
Private Sub Button_Ok_Click(...) Handles ...
    SqlDataAdapte1.SelectCommand.Parameters("@@番号検索").Value = Session("inputcode")
    SqlDataAdapter1.Fill(Data1)
    ...
    SqlDataAdapter1.Update(Data1)
End Sub



おっつさんの書き込み(2005-02-14 15:06)より:
selectとupdateの共用がいけないんでしょうか?

おっつさんの書き込み(2005-02-14 16:28)より:
抽出の時は正常に動作しているので・・・


…まさかと思うけれど、SELECTのCommandにはパラメータを追加しているけれど、UPDATEのCommandにはパラメータを追加していない・・・というオチでは?

 ストアドプロシージャの宣言部分、SelectCommand.CommandText、UpdateCommand.CommandTextをアップしてください。

_________________
おっつ
常連さん
会議室デビュー日: 2004/11/04
投稿数: 22
投稿日時: 2005-02-15 20:24
なんかそれらしいですね。UPDATEのCommandにはパラメータを追加していないような・・・
でも、それってどうやってするのかがいまいち・・・・

ストアドプロシージャの宣言部分とはこの事かなぁ?

Me.SqlSelectCommand2.CommandText = "[sp_職員情報抽出]"
Me.SqlSelectCommand2.CommandType = System.Data.CommandType.StoredProcedure
Me.SqlSelectCommand2.Connection = Me.SqlConnection1
Me.SqlSelectCommand2.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(10, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
Me.SqlSelectCommand2.Parameters.Add(New System.Data.SqlClient.SqlParameter("@@番号検索", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(10, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
'
'SqlUpdateCommand1
'
Me.SqlUpdateCommand1.CommandText = "[sp_職員情報更新]"
Me.SqlUpdateCommand1.CommandType = System.Data.CommandType.StoredProcedure
Me.SqlUpdateCommand1.Connection = Me.SqlConnection1
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(10, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@@番号検索", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(10, Byte), CType(0, Byte), "職員番号", System.Data.DataRowVersion.Current, Nothing))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@@銀行コード", System.Data.SqlDbType.VarChar, 30, "銀行コード"))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@@店番号", System.Data.SqlDbType.VarChar, 30, "店番号"))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@@預金種目", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(10, Byte), CType(0, Byte), "預金種目", System.Data.DataRowVersion.Current, Nothing))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@@口座番号", System.Data.SqlDbType.VarChar, 30, "口座番号"))

見づらいかもしれませんが
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-15 20:56
 パラメータは追加されてますね。。。

 えっと、[sp_職員情報抽出]と、[sp_職員情報更新]の内容っていうか、データベースに登録してある方の、宣言のところ。。。
_________________
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-02-15 22:00
変数名に @@ 付けたり、プロシージャ名の先頭に sp_ 付けたり、ずいぶんと SQL Server の作法を知らない人ですね。
おっつ
常連さん
会議室デビュー日: 2004/11/04
投稿数: 22
投稿日時: 2005-02-22 09:40
まるっきりの素人なもので・・・独学でやっていたので決まりとかがよくわからないんですよね!
勉強して行こうと思います。みなさん色々と教えてくださいね。
ストアドの名前の付け方とかも自分がわかりやすいのでストアドプロシジャーのSPと頭に付けたのですが変だったのかなぁ?わからない事だらけです。
そしていまだにUPDATEはうまくいきません。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2005-02-22 11:03
私は,DBとかよくわからないのですが解決するのに必要っぽい情報がまだ足りてないっぽいです。
引用:

おっつさんの書き込み (2005-02-22 09:40) より:
そしていまだにUPDATEはうまくいきません。


Jittaさんの言ってる
引用:

えっと、[sp_職員情報抽出]と、[sp_職員情報更新]の内容っていうか、データベースに登録してある方の、宣言のところ。。。


を提示してみたら解決に近づくかもしれません。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-02-22 12:25
引用:

ストアドの名前の付け方とかも自分がわかりやすいのでストアドプロシジャーのSPと頭に付けたのですが変だったのかなぁ?わからない事だらけです。



Books Online から
引用:

sp_ をプレフィックスとして使用したストアド プロシージャを作成することはお勧めできません。SQL Server は、sp_ で始まるストアド プロシージャを、常に次の順番で検索します。 (中略)したがって、ユーザーが作成して sp_ のプレフィックスを付けたストアド プロシージャが現在のデータベースにあってもかまいませんが、ストアド プロシージャがデータベース名で修飾されている場合でも、最初に master データベースが検査されます。



たまに、ストアドの作成スクリプトを master に流しちゃう人がいる。そうすると、そこが優先的に検索されるので、自分のデータベースのストアドをいくら修正しても振る舞いが変わらない、という症状に悩まされることになる。

どこからでも使用したい汎用的なプロシージャ以外には sp_ を付けるべきではない。sp_ は、すげープロシージャ の略で、ただのストアドプロシージャとは違うのだよ。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2005-02-22 13:04
msoです。

引用:

未記入さんの書き込み (2005-02-22 12:25) より:
Books Online から
引用:

sp_ をプレフィックスとして使用したストアド プロシージャを作成することはお勧めできません。SQL Server は、sp_ で始まるストアド プロシージャを、常に次の順番で検索します。 (中略)したがって、ユーザーが作成して sp_ のプレフィックスを付けたストアド プロシージャが現在のデータベースにあってもかまいませんが、ストアド プロシージャがデータベース名で修飾されている場合でも、最初に master データベースが検査されます。



たまに、ストアドの作成スクリプトを master に流しちゃう人がいる。そうすると、そこが優先的に検索されるので、自分のデータベースのストアドをいくら修正しても振る舞いが変わらない、という症状に悩まされることになる。

どこからでも使用したい汎用的なプロシージャ以外には sp_ を付けるべきではない。sp_ は、すげープロシージャ の略で、ただのストアドプロシージャとは違うのだよ。



知らなかったです。
私もストアドに対してsp_hogeとかやっていました。
たしかにsp_ は、すげープロシージャ の略ですね。

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