none
Updateコマンドについて RRS feed

  • 質問

  • 初めて質問をいたします。

    VB初心者です。

    基本的なカード型のフォームを作り登録したデータを表示までは出来るのですが、binding Navigatorの保存ボタンでのupdateがうまく行えません。

        Private Sub UpdateDB()
            Me.Validate()
            Me.T_authorityBindingSource.EndEdit()
            If Not Me.Worktime_saDataSet.HasChanges Then

                MsgLabel.Text = "データは変更されませんでした"
                Return
            Else
                Me.T_authorityTableAdapter.Update(Me.Worktime_saDataSet.T_authority)
                MsgLabel.Text = "変更しました"
            End If

        End Sub

    のように HasChangesを確認しても正常なメッセージは出るのですが、データエクスプローラで実DBを見ても変更されていません。もちろん再起動しても以前のままのデータが表示されるだけです。

    HDのアクセスランプはつくのですが、実際に書き込みを行われたDBファイルがよくわかりません。データエクスプローラで確認できるものとは違うのでしょうか。

    以前はJAVA+MySQLで少し勉強したのですが、SQLServer自体を良く理解できていないようです。

     Win XP Home + VB2005Express + SQLServer2005Expressで行っています。

    よろしくお願いします。

     

     

    2006年5月26日 0:11

回答

  • こちらを実ファイルと見なしてもいいのでしょうか。そしてこの二つの接続を登録しなければならないのでしょうか。

    私が上で紹介した「ローカル データの概要
    」を読んでみてください。特に、「各プロジェクトに含まれるデータベースの 2 つのコピー」が今回の件に関係あります。

    2006年5月26日 4:14
    モデレータ

すべての返信

  • 以下を試してみて下さい。

    ソリューションエクスプローラ上でデータファイル(.mdf)を右クリックしてプロパティを表示し、「出力ディレクトリにコピー」の設定を、「常にコピーする」から「新しい場合はコピーする」へ変更する 。

    (参考)
    ローカル データの概要
    http://msdn2.microsoft.com/ja-jp/library/ms233817(VS.80).aspx

    2006年5月26日 0:50
    モデレータ
  • 早速のご返事ありがとうございます。

    以前のフォーラムも少し見せていただきご指摘のことはしてみたのですが、変化はありません。

    今いろいろしていたところ一度起動(デバック開始)して変更を加えた後閉じてすぐに再度起動したところ、変更は出来ていたのです。

    ところがDBエクスプローラで接続をしてまた再度起動したら以前の状態に戻っており実際にはDBに書き込まれていないようなのです。

    これは、データセットに対してしか変更がなされていないと言うことでしょうか。

    フォームの下のインスタンスアイコンにはconnectionのアイコンがありません。

    どのファイルに対して書き込みをしているのかがよくわかりません。

    基本的なDBに対しての知識がまだありませんがよろしくお願いいたします。

     

     

    2006年5月26日 1:44
  • 状況が変わりましたので再度報告いたします。

    DB名でファイル検索をしたところデータフォルダの下の¥bin¥debugの中に同名のファイルが見つかりました。

    そのファイルをDBエクスプローラで新規の接続をしたところ、そのファイルに変更が加えられていたことがわかりました。

    そしてそれ以降は前記の症状は出ませんでした。ふつうに更新できています。

    今までと違うのは、新しい接続を作っただけですが、それ以降は問題なく更新できています。

    こちらを実ファイルと見なしてもいいのでしょうか。そしてこの二つの接続を登録しなければならないのでしょうか。

    そもそもDBエクスプローラでの接続と実プログラムのconnectionの関連がよくわかりません。

    一応.updateはうまくいくようになりましたが、上記の件について教えていただく思います。

    よろしくお願いします。

     

     

     

    2006年5月26日 3:35
  • こちらを実ファイルと見なしてもいいのでしょうか。そしてこの二つの接続を登録しなければならないのでしょうか。

    私が上で紹介した「ローカル データの概要
    」を読んでみてください。特に、「各プロジェクトに含まれるデータベースの 2 つのコピー」が今回の件に関係あります。

    2006年5月26日 4:14
    モデレータ
  • ご指摘の記事は目を通していたのですが、理解していなかったようです。

    使い方が悪かったようで、うまく更新できたか常にDBエクスプローラで確認したことで変更されていないファイルを見て、その上に\bin\debugのファイルまで、元の状態にまた戻してしまったと言うことですね。

    なぜ複数のファイルが存在するかという仕様については納得できていないのですが、的確なご指摘にはとても感謝しております。

    まだ必要な情報がすぐに探せずもどかしい思いをしております。

    これからもよろしくお願いいたします。どうもありがとうございました。

     

    2006年5月26日 6:03
  • データソースを生成するときに、

    「選択された接続は、現在のプロジェクトにないローカルデータファイルを使用します。プロジェクトにファイルをコピーして接続を変更しますか?」

    と聞いてきます。

    binの中のdebugには、そこで「はい」を選択するとコピーが作られて、そちらに接続されるようです。

    最終的にプロジェクトの実行ファイルを作ったときは、元のDBが更新されるように変更されるそうです。

    私も同じ悩みで、更新できていないと思っていたのですが、

    サーバーエキスプローラでそのコピーファイルも追加しておくと、更新した内容が反映されているか確認できますよ。

    2006年8月3日 7:29