投稿者 るきお  (社会人) 投稿日時 2011/4/22 00:00:43
>X座標、Y座標の取り出し方が解りません。
X座標、Y座標を取り出したのであれば、SELECT句にこの2つを含めなくてはだめですよね?

>SELECT 管理番号=""" & crValue & """ 
これだといろいろおかしいです。

まずはSQL文をちゃんと作って、
それから、その結果をVBで取得するようにするのがよく、

他路さんの場合SQLがかけていないのでVBの話をする前の部分でつまずいていると思います。

対象のデータベースの種類により接続文字列やSQLの書き方は変わりますが、
たとえば、次のようにするとテーブルからX座標、Y座標を取り出すことができます。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Dim connectionString = "Provider=SQLOLEDB.1;Data Source=(local);Persist Security Info=True;User ID=rucio;Password=password;Initial Catalog=TestDb"
    Dim cn As New OleDbConnection(connectionString)

    Dim crRow As Integer
    Dim crValue As String
    Dim com As OleDbCommand


    crRow = (DataGridView1.CurrentRow.Index)
    crValue = DataGridView1.Item(0, crRow).Value.ToString()

    com = New OleDbCommand("SELECT X座標,Y座標 FROM 管理番号座標 WHERE 管理番号='" & crValue & "'", cn)

    Dim adapter As New OleDbDataAdapter(com)
    Dim table As New DataTable
    adapter.Fill(table)
    adapter.Dispose()
    cn.Dispose()

    Dim x As Integer = table.Rows(0)("X座標")
    Dim y As Integer = table.Rows(0)("Y座標")

    MsgBox("X座標は" & x)
    MsgBox("Y座標は" & y)
End Sub


値をとってくるだけでこれだけのコードを書かなければいけないのはどうかと思っていますが、これが標準的な書き方です。
多分データベースのプログラムをよくする人は、一連の処理をカプセル化してもっと楽に書けるようにしていることと思います。

とってくる値が1つだけなら、次のように多少は楽に書けます。
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Dim connectionString = "Provider=SQLOLEDB.1;Data Source=(local);Persist Security Info=True;User ID=rucio;Password=password;Initial Catalog=TestDb"
    Dim cn As New OleDbConnection(connectionString)

    Dim crRow As Integer
    Dim crValue As String
    Dim com As OleDbCommand

    crRow = (DataGridView1.CurrentRow.Index)
    crValue = DataGridView1.Item(0, crRow).Value.ToString()

    com = New OleDbCommand("SELECT X座標 FROM 管理番号座標 WHERE 管理番号='" & crValue & "'", cn)

    cn.Open()
    Dim x As Integer = com.ExecuteScalar
    cn.Close()

    com.Dispose()
    cn.Dispose()

    MsgBox("X座標は" & x)

End Sub