tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルTableAdapterを使ってテーブル更新について
記事No8348
投稿日: 2008/10/21(Tue) 16:35
投稿者ムラ
質問させて頂きます。

テーブルアダプタを使ってデータテーブルを更新したいのですができません。

↓のようなコードを書いたのですが実行時にエラーが発生します。
Me.RiskAssessmentResultTableAdapter.Update(Me.ReskAssessmentKDataSet.RiskAssessmentResult)

原因が全くわかりません。

どなたか御教授願います。

[ツリー表示へ]
タイトルRe: TableAdapterを使ってテーブル更新について
記事No8349
投稿日: 2008/10/21(Tue) 16:54
投稿者るしぇ
エラーメッセージに原因が書いてあるのですから、それに従ってください。
(エラーメッセージを書いてない時点で、自分で調べるということですよね?)

>↓のようなコードを書いたのですが実行時にエラーが発生します。
そのコードだけではデータベースを更新できません。
[DataAdapter.Update メソッド]
http://msdn.microsoft.com/ja-jp/library/system.data.common.dataadapter.update.aspx
[解説]及びそのリンク先に書いてあることを実行してください。

また、類似の質問は様々な掲示板で何度も出ています。質問前に十分な調査を
行ってください。

[ツリー表示へ]
タイトルRe^2: TableAdapterを使ってテーブル更新について
記事No8350
投稿日: 2008/10/21(Tue) 17:04
投稿者ムラ
申し訳ありませんでした

[ツリー表示へ]
タイトルRe: TableAdapterを使ってテーブル更新について
記事No8353
投稿日: 2008/10/22(Wed) 10:48
投稿者ムラ
昨日の質問の続きですが、よろしくお願いします。

↓のようなコードを書いたのですが実行時に例外が発生します。
Me.RiskAssessmentResultTableAdapter.Update(Me.ReskAssessmentKDataSet.RiskAssessmentResult)

例外の内容
ExecuteReader: CommandText プロパティは初期化されていません。

Commandプロパティの初期化はどうやって行えばいいか、調べてみたのですがわかりません。

どなたか御教授お願いいたします。

[ツリー表示へ]
タイトルRe^2: TableAdapterを使ってテーブル更新について
記事No8354
投稿日: 2008/10/22(Wed) 11:23
投稿者るしぇ
あ、TableAdapter なんですね。DataAdapter で回答してしまいました。
ごめんなさい。

参考記事は
http://msdn.microsoft.com/ja-jp/library/ms171932(VS.80).aspx


>ExecuteReader: CommandText プロパティは初期化されていません。
ExecuteReader ?
[DbCommand.ExecuteReader メソッド]
http://msdn.microsoft.com/ja-jp/library/system.data.common.dbcommand.executereader.aspx
DbDataReader を返します。その名の通り、データの読込みをするのですが、
その時点で失敗??? CommandText は SQL を指定するプロパティです。
SQL はどうやって指定していますか?その SQL をデータベースで直接
実行した結果は?

もう一度、例外の発生するコードを確認してください。Update で
例外が出ているのは確実ですか?更新処理より前でエラーになって
いる可能性はありませんか?

データの更新をせずにデータの表示をした場合に成功していますか?

[ツリー表示へ]
タイトルRe^3: TableAdapterを使ってテーブル更新について
記事No8355
投稿日: 2008/10/22(Wed) 13:23
投稿者ムラ
るしぇさん回答ありがとうございます。

自分なりに勉強しました。

最初にフォームを開くときコマンドを初期化したつもりなのですが↓

    Private Sub frmRiskAssessmentResultUpdate_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        '★コマンド初期化
        'コネクションを指定する
        Using connection As New SqlClient.SqlConnection(My.Settings.ReskAssessmentKConnectionString)
            'コマンドをコネクションから作成する
            Dim command As SqlClient.SqlCommand = connection.CreateCommand()

            'コネクションを開く
            connection.Open()

            'データリーダの定義
            Dim dr As SqlClient.SqlDataReader

            'コマンド定義
            command.CommandText = "SELECT * FROM RiskAssessmentResult"

            'データリーダからデータの読み出し
            dr = command.ExecuteReader()

            'データリーダを閉じる
            dr.Close()

            'コネクションを閉じる
            connection.Close()

        End Using
    End Sub

次に更新ボタンを押すと前に示したUpdateが実行されるのですが↓

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        '保存確認・保存処理
        If MsgBox("この内容をデータベースに反映しますか?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then

            '編集状態を確定する
            RiskAssessmentResultBindingSource.EndEdit()

            Me.RiskAssessmentResultTableAdapter.Update(Me.ReskAssessmentKDataSet.RiskAssessmentResult)
            ''テーブルアダプタを介して、RiskAssessmentKを更新する
            'Me.RiskAssessmentResultTableAdapter.Update(Me.ReskAssessmentKDataSet.RiskAssessmentResult)

        End If
    End Sub

同じ例外がでます。上のコードで初期化されているかどうか教えてください。

[ツリー表示へ]
タイトルRe^3: TableAdapterを使ってテーブル更新について
記事No8356
投稿日: 2008/10/22(Wed) 13:34
投稿者ムラ
説明が不足していました

使っているコントロールはテキストボックスです。

御教授お願いいたします。

[ツリー表示へ]
タイトルRe^4: TableAdapterを使ってテーブル更新について
記事No8365
投稿日: 2008/10/23(Thu) 10:33
投稿者るしぇ
>上のコードで初期化されているかどうか教えてください。
関係ないですね。

フォームロード時に行われている処理は
“新しい”接続(New SqlClient.SqlConnection)を用意し、
その接続を利用してデータを読込み(command.ExecuteReader)、
関数を抜ける時に使用したリソースを破棄してます。
[Using ステートメント]
http://msdn.microsoft.com/ja-jp/library/htd05whh(VS.80).aspx

Button1_Click 時に使用している RiskAssessmentResultBindingSource
RiskAssessmentResultTableAdapter とは無関係の処理になります。
直接これらのデータソースを作成するときの設定を確認しないと
いけないと思います。

[ツリー表示へ]
タイトルRe^5: TableAdapterを使ってテーブル更新について
記事No8412
投稿日: 2008/11/12(Wed) 09:33
投稿者ムラ
ありがとうございました。

解決しました。

僕の知識不足でした。

[ツリー表示へ]