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

データが更新しない

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2006/04/14
投稿数: 55
投稿日時: 2006-07-25 18:13
環境はVisual Studio 2005です。

ボタンを押すとDataGridViewの列を 編集した内容でデ−タを更新する、
というものを作りたいのですが。以下作成したコードです。


SqlConnectionでデータベースに接続、

DataAdapterを作成、(SELECT文でDataGridViewに表示)↓

Dim da As SqlDataAdapter
da = New SqlDataAdapter("SELECT * FROM 顧客マスタ", cn)

更新用のコマンドを作成↓

da.UpdateCommand = New SqlCommand
da.UpdateCommand.CommandText = "UPDATE 〜省略 "
da.UpdateCommand.Connection = cn

DataSetでデータを取得、

Dim ds As New DataSet
da.Fill(ds, "顧客マスタ")

Updateメソッドでデータベースを更新↓

da.Update(ds, "顧客マスタ")
MessageBox.Show("更新しました")


ほぼこの通り記述しました。
実行すると、列の内容を編集しボタンを押すと、
メッセージボックスで "更新しました" と表示されるのですが、
再び実行すると更新されていません。

分かりにくいかも知れませんが、よろしくお願いします。。。

囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-07-25 18:32
http://www.ailight.jp/blog/unaap/archive/2005/12/07/10249.aspx
更新されていないと言えばこれ。どうかな?
_________________
囚人のジレンマな日々
未記入
ベテラン
会議室デビュー日: 2006/04/14
投稿数: 55
投稿日時: 2006-07-25 18:54
囚人さん、ありがとうございます。
ただ私の場合「データソースの追加」は使わずやってくれ、と上司に言われたので
「データソースの追加」は使っていません。

念のためソリューションのファイルを全て表示し、
プロパティの「出力ディレクトリにコピー」欄を全て見たところ
コピーしない、になっていました。

それともコピーするを選んだほうがいいのでしょうか?
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-07-25 18:59
引用:

囚人さんの書き込み (2006-07-25 18:32) より:

http://www.ailight.jp/blog/unaap/archive/2005/12/07/10249.aspx
更新されていないと言えばこれ。どうかな?


私もそうじゃないかと思って書きかけたのですが、SqlConnection と書い
てあるので Access じゃないのかなあということで止めました。
実は Access に対して SqlConnection を使っているとか?(使えましたっけ?)

とりあえず。
da.UpdateCommand.CommandText の内容を直接実行してみて、
更新されるかどうか調べてみてください。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-25 19:24
>更新用のコマンドを作成↓
>Updateメソッドでデータベースを更新↓

ある意味一番大事なところが抜けていると思う。
こういうのって実は回答者側からすると疑わざるをえなかったりする。
と某有名なメーリングリストを利用する時のこころがまえでゆってた。

ってことで更新部分の個々のテストをする必要がある。
というかここまでやっていて初めて質問してもいいよって某有名な(ry
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-25 22:34
引用:

未記入さんの書き込み (2006-07-25 18:13) より:

ほぼこの通り記述しました。
実行すると、列の内容を編集しボタンを押すと、
メッセージボックスで "更新しました" と表示されるのですが、
再び実行すると更新されていません。

分かりにくいかも知れませんが、よろしくお願いします。。。


で、データの更新は、どのタイミングでやってるの?
Update 文を、osql で直接流した場合、データは更新されるの?

追加:
「データの更新は」=「データベースに反映させるデータの更新は」
つまり、「編集」ボタンをクリックして、「確定」したデータは、どこで DataSet の中に反映されるのかな?

[ メッセージ編集済み 編集者: Jitta 編集日時 2006-07-25 22:36 ]
未記入
ベテラン
会議室デビュー日: 2006/04/14
投稿数: 55
投稿日時: 2006-07-27 17:22
ぽぴ王子さん、ぶさいくろうさん、Jittaさん
回答ありがとうございます。

Dim ds As New DataSet
da.Fill(ds, "顧客マスタ")

上記のあとに次のコードを作成すると、うまくいきました。

Dim row As DataRow = ds.Tables("顧客マスタ").Rows(0)
row("顧客名") = ""

色々ヒントになりましたので助かりました。
ありがとうございました。
1

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