Search code examples
vb.netexceloledb

returning select value using Visual Basic 2010 oleDB


I'm trying to read a excel cell with visual basic 2010 ( I'm really new to this) and I think I finally did it BUT I have no clue how to return the result. It should end up in the clipboard or msgBox from there I'll find my way :D I searched for two hours now but didnt find the solution... please help me

Thanks

      Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=C:\Users\marcelf\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\DB.xls;extended properties=excel 8.0;"
    cn.Open()

    With cm
        .Connection = cn
        .CommandText = "SELECT * FROM [ccs$C1:B20] WHERE 'id' = 'German'"
        .ExecuteNonQuery()
    End With
    cn.Close()

    MsgBox(????)



End Sub

EDIT: her is the updated code. I get "Could not find installable ISAM

        Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    Dim con As New OleDbConnection
    Try
        Using con
            'added HDR=No to the extended properties of the connection string
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Users\marcelf\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplicat'ion1\bin\Debug\DB.xls;extended properties=excel 12.0;HDR=Yes"
            con.Open()
            Using cmd = New OleDbCommand
                cmd.Connection = con
                cmd.CommandText = "SELECT * FROM [ccs$C1:C20] WHERE 'id' = 'German'"
                Using oRDR As OleDbDataReader = cmd.ExecuteReader
                    While (oRDR.Read)
                        MsgBox(oRDR.GetValue(0)) 'gets the first returned column
                    End While
                End Using
                con.Close()
            End Using
        End Using
    Catch ex As Exception
        Throw New Exception(ex.Message)
    Finally
        con.Close()
    End Try
End Sub

EDIT: That's what worked for me:

    Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    Dim con As New OleDbConnection
    Try
        Using con
            'added HDR=No to the extended properties of the connection string
            con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\marcelf\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\DB.xls;Mode=3;User ID=Admin;Password=;Extended Properties=Excel 8.0"
            con.Open()

            Using cmd = New OleDbCommand
                cmd.Connection = con
                cmd.CommandText = "SELECT Service FROM [ccs$] WHERE id='" & ComboBox1.SelectedItem & "'"
                Using oRDR As OleDbDataReader = cmd.ExecuteReader
                    While (oRDR.Read)
                        MsgBox(oRDR.GetValue(0)) 'gets the first returned column
                    End While
                End Using
                con.Close()
            End Using
        End Using
    Catch ex As Exception
        Throw New Exception(ex.Message)
    Finally
        con.Close()
    End Try
End Sub

Solution

  • Welcome to SO. In the future you should show us all of your code. Since you tagged OleDB and vb.net, the following implements what you are trying to accomplish. I included the Form Class so the Imports statements could be shown, but you can just copy and paste the click event code after insuring you Class includes the Imports. Note, I have not tested this code but it should work. Let me know if you need clarification or additional help.

    Imports System.Data.OleDb
    
    Public Class Form1
        Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
            Dim con As New OleDbConnection
            Try
                Using con
                    'added HDR=No to the extended properties of the connection string
                    ' **EDIT**
                    con.ConnectionString = "Provider=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\marcelf\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplicat'ion1\bin\Debug\DB.xls;Mode=3;User ID=Admin;Password=;Extended Properties=Excel 8.0"
                    con.Open()
                    Using cmd = New OleDbCommand
                        cmd.Connection = con
                        cmd.CommandText = "SELECT * FROM [ccs$C1:B20] WHERE 'id' = 'German'"
                        Using oRDR As OleDbDataReader = cmd.ExecuteReader
                            While (oRDR.Read)
                                MsgBox(oRDR.GetValue(0)) 'gets the first returned column
                            End While
                        End Using
                        con.Close()
                    End Using
                End Using
            Catch ex As Exception
                Throw New Exception(ex.Message)
            Finally
                con.Close()
            End Try
        End Sub
    End Class