none
Access2003の読込方法がわからない RRS feed

  • 質問

  • Public Class Form1
        Dim com As System.Data.OleDb.OleDbCommand
        Dim dr As System.Data.OleDb.OleDbDataReader

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then 'リターンキーが押されたら
         Try
                OleDbConnection1.Open()
                OleDbCommand1.CommandText = "SELECT [フィールド1] FROM [XXXXXTBL] WHERE [フィールド1] = '?????'"
                dr = OleDbCommand1.ExecuteReader()
                If dr.HasRows = False Then
                    'レコードがゼロ件
                 dr.Close()
                 OleDbConnection1.Close()
                 Exit Sub
                End If
                While (dr.Read = True)
                    '何かの処理
                End While
                dr.Close()
                OleDbConnection1.Close()
            Catch
            End Try
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            OleDbConnection1.Open()
            OleDbCommand1.CommandText = "SELECT [フィールド1] FROM [XXXXXTBL] WHERE [フィールド1] = '?????'"
            dr = OleDbCommand1.ExecuteReader()
            If dr.HasRows = False Then
                'レコードがゼロ件
                dr.Close()
                OleDbConnection1.Close()
                Exit Sub
            End If
            While (dr.Read = True)
                '何かの処理
            End While
            dr.Close()
            OleDbConnection1.Close()
        Catch
        End Try
    End Sub

    テキストボックスで Enter を押すとうまくいきます。

    ボタンをクリックするとレコードが0件になります。

    どこがまちがっているのでしょうか?教えてください。

     

    2006年9月28日 7:05

すべての返信

  • テキストボックスでEnterを押した時と、ボタンをクリックした時と、掲載されたコードは全く同じに見えますが、本当に全く同じなのでしょうか? 例えば、where句が違っていたり、読めた場合の「何かの処理」が異なっていて、0件のように見えたりしていませんでしょうか?
    デバッグ実行で1行ずつ追ってみると、何かわかるかもしれません。
    2006年9月28日 9:21
    モデレータ
  • 書かれているものと同じようなものを走らせてみたら、正常でした。

    ’何かの処理’の部分を疑った方が良いかもしれませんね。

    そこも全く一緒であるなら、うまく処理できるコードをコピー&ペイストすれば、解決しないでしょうか?

    SQL文章のスペース抜けやカンマの位置などのチェックもしてみてください。

    (上記サンプルでは複数列がないので、カンマはありませんけど)




    Zee @ わんくま同盟 :: http://blogs.wankuma.com/zee/
    2006年9月29日 2:37
  •  

    Public Class Form1
        Dim com As System.Data.OleDb.OleDbCommand
        Dim dr As System.Data.OleDb.OleDbDataReader

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

            com = New System.Data.OleDb.OleDbCommand
            com.CommandText = "SELECT [フィールド1] FROM [XXXXXTBL] WHERE [フィールド1] = '?????'"

            com.Connection = OleDbConnection1
            dr = com.ExecuteReader()

            OleDbConnection1.Open()

            If dr.HasRows = False Then
                'レコードがゼロ件
                dr.Close()
                OleDbConnection1.Close()
                Exit Sub
            End If
            While (dr.Read = True)
                '何かの処理
            End While
            dr.Close()
            OleDbConnection1.Close()
        Catch
        End Try
    End Sub

    たぶん こういうことじゃないですか

    それと Tryは付けない方が デバッグし易いですよ

    追伸 前回のスレッドに 少し違うコードを入れておいたので(こちらの方が使いやすいかも)

    2006年9月29日 12:27