Solved

Moving past VB6 to Visual Studio 2010

Posted on 2010-11-10
6
367 Views
Last Modified: 2012-05-10
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
Comment
Question by:MariaHalt
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 34105890
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
 
LVL 15

Expert Comment

by:x77
ID: 34105952
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
 

Author Comment

by:MariaHalt
ID: 34105988
Thanks for the quick reply, I'm getting a different error:  Type 'SqlDataAdapter' is not defined.
0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
LVL 70

Expert Comment

by:Éric Moreau
ID: 34106029
you can use SqlCient.SqlDataAdapter
0
 

Author Comment

by:MariaHalt
ID: 34106205
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
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
ID: 34106307
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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…

628 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question