• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 370
  • Last Modified:

Moving past VB6 to Visual Studio 2010

I'm finally leaving the VB6 world...have Visual Studio 2010 installed.  I've created a project and dropped some controls on it...just as an exercise, I want to populate my combo box from a command button click event.  Of course I'm getting a runtime error, "ArgumentException was unhandled" on the ComboBox1.DataSource = objReader line.  Do I have to reference something like I would in VB6?  How does it know which field I want to choose for the combo box?   I don't even know if I'm connected to the db.    Will some kind Expert help me take this first step?
Public Class Form1

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

strSQL = ""
strSQL = "SELECT * FROM myDB.myOwner.myTable ORDER BY MyField"

'Establish connection and open database connection
Dim objConnection As New SqlClient.SqlConnection("server=mySQLServer;database=myDB;user=myUser;pwd=MyPWD")

'Establish command object
Dim objCommand As New SqlClient.SqlCommand(strSQL, objConnection)

Dim objReader As SqlClient.SqlDataReader

objConnection.Open()

objReader = objCommand.ExecuteReader

ComboBox1.DataSource = objReader

objReader.Close()

objConnection.Close()

End Sub
End Class

Open in new window

0
MariaHalt
Asked:
MariaHalt
1 Solution
 
Carl TawnSystems and Integration DeveloperCommented:
You can't use a DataReader as the datasource of the ComboBox as it only accepts objects that implement the IList or IListSource interfaces.

You can find a simple example here that uses a DataTable instead:

    http://msdn.microsoft.com/en-us/library/w67sdsex(v=VS.90).aspx

Or you could try this:
   '// you want to be careful about using * in select statements!
   Dim strSQL As String = "SELECT * FROM myDB.myOwner.myTable ORDER BY MyField"

   'Establish connection and open database connection
   Dim objConnection As New SqlClient.SqlConnection("server=mySQLServer;database=myDB;user=myUser;pwd=MyPWD")

   'Establish command object
   Dim objCommand As New SqlClient.SqlCommand(strSQL, objConnection)
   Dim adap As New SqlDataAdapter(objCommand, objConnection)

   Dim ds As New DataSet()
   adap.Fill(ds)

   '// tell the combobox which fields to use
   ComboBox1.DisplayMember = "Name of column for text display"
   ComboBox1.ValueMember = "Name of column for underlying value, probably an ID of some kind"

   ComboBox1.DataSource = ds.Tables(0)


End Sub

Open in new window

0
 
x77Commented:
Windows Form Contros DataReader do´nt support DataReader as DataSource.
You can do it with Web Controls.

For Windows App use a DataTable as DataSource:

Dim Dt as new DataTable
Dt.Load(objReader)
ComboBox1.DataSource =Dt

or

Dim Dt As new DataTable, Da as new SqlClient.SqlDataAdapter(strSQL, objConnection)
Da.Fill(Dt)
ComboBox1.DataSource = Dt

0
 
MariaHaltAuthor Commented:
Thanks for the quick reply, I'm getting a different error:  Type 'SqlDataAdapter' is not defined.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Éric MoreauSenior .Net ConsultantCommented:
you can use SqlCient.SqlDataAdapter
0
 
MariaHaltAuthor Commented:
Still getting an error:  Type 'SqlCient.SqlDataAdapter' is not defined.


'Dim adap As New SqlDataAdapter(objCommand, objConnection)
Dim adap As New SqlCient.SqlDataAdapter(objCommand, objConnection)
0
 
Carl TawnSystems and Integration DeveloperCommented:
You'll need to add the following at the top of your file, if you don't have it already:


     Imports System.Data.SqlClient
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now