none
保存処理の完了 RRS feed

  • 質問

  • AccessデータベースにOledbReaderで検索し、指定のデータが無ければ、データをダウンロードして

    データベーステーブルにそのデータを追加保存してcloseし、

    再度、検索するとそのデータは見つかりません。これは連続処理でします。

    このとき、そのデータはデータベースにはきちんと保存されているのですが・・・。

    二度、上記の処理をすると必ず、最初の検索で見つかります。保存されているので当然ですよね。

    上記の処理は不安定で上手く行くときも有れば、上記の様に見つからないこともあります。

     

    このような場合、どのような処理をすれば安定するのでしょうか?

    スレッド処理とかするのでしょうか?

    スレッド処理とか良く分かりません。

     

     

    2009年1月22日 17:10

回答

  • SuferOnWwwさんありがとうございました。

     

    「Jyoho_TABLE にセット」に成功したことをOleDbCommand.ExecuteNonQuery 判定することにしました。


     

    2009年1月25日 15:27

すべての返信

  • それが再現できる最小限のコードを提示されると

    フォローが付き易くなると思います。

    2009年1月22日 18:19
  • お世話になります。

    次のような感じなのですが、実際はもっとこてこてしています。

     

       Dim clsDL as new claseDownLoad

       Dim FLG as String="NO"

     

       Private Sub GetJyoho()

           DatagetJyoho

           If FLG="OK" Then

                DispJyoho   '  情報表示

           Else

                clsDL.jyohoDownload   '  サーバーからダウンロードしてODBCでJyoho_TABLE にセットする

     

                ' ここに次の一行を入れると必ずデータを表示出来るように成りました。がスマートではない。5秒は長い

                ’   System.Threading.Thread.Sleep(5000)


                FLG="NO"
                DatagetJyoho

                 If FLG="OK" Then

                      DispJyoho   '  情報表示

                End if

           End If

        End Sub

     

        Private Sub DatagetJyoho()
            Dim i As Integer
            Dim ii As Short
            Dim strSQL As String
            Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection(AdoConectString & DB_Select("Jyoho_TABLE "))
            Dim DRead As OleDb.OleDbDataReader
            Dim com As OleDb.OleDbCommand
            strSQL = "Select * From Jyoho_TABLE Where 作成年='" & stjkNEW.Substring(0, 4) & "' and 作成月日='・・・・・・・"
            cn.Open()
            com = New OleDb.OleDbCommand(strSQL, cn)
            DRead = com.ExecuteReader
            FGtn = "" : FGnow = ""
            If DRead.Read = True Then

              ・・・・・・・・・・

              FLG="OK"
            else

         ・・・・・・・・

            End If

        End Sub

     

    2009年1月23日 7:04
  • 根本的な解決策ではないですが、単なるタイミングの問題らしいと推測し
    て・・・

     

    > clsDL.jyohoDownload   '  サーバーからダウンロードしてODBCでJyoho_TABLE にセットする

     

    ということは、その時点ですでに DispJyoho で情報を表示するための情報
    は clsDL.jyohoDownload の中で取得できているはずですよね?

     

    そうであれば、clsDL.jyohoDownload の中で、「Jyoho_TABLE にセット」に
    成功したことを判定して(例えば OleDbCommand.ExecuteNonQuery メソ

    ッドの戻り値などで) 、成功してたらその取得済みの情報を表示するというよ
    うにしてはいかがですか?

     

    わざわざ DatagetJyoho で Jyoho_TABLE から情報を取ってくる必要はなさ
    そうに思えますが、もし何らかの理由でその必要があるという事でしたら失礼

    しました。上記レスは無視してください。

    2009年1月25日 4:53
  • SuferOnWwwさんありがとうございました。

     

    「Jyoho_TABLE にセット」に成功したことをOleDbCommand.ExecuteNonQuery 判定することにしました。


     

    2009年1月25日 15:27