How to pull SQL data in to a DatagridView.......

G

Guest

Hello,
I am new to pulling data into VB and using DataGridViews..... so this
might be a dumb question but I can not seem to understand how to make this
work.

What I need acomplished:
Exec a select statement and out put the results to a DataGridView. The
columns must be created on the fly as the query may return different fields.

A small example I got to work to a List box. If you could convert this to a
DGV for me it would be great ....
Col1 - Full Name
Col2 - Address
oSQLcmd.Connection = oSQLconn
oSQLcmd.CommandType = CommandType.Text
oSQLcmd.CommandText = "SELECT FullNAME, Address FROM t_dssemp"

strSQLopen = OpenSQLConn() ' Open Connection

If oSQLconn.State = ConnectionState.Open Then
oSQLdr = oSQLcmd.ExecuteReader() 'executing the command and
assigning it to connection

While oSQLdr.Read()
ListBox1.Items.Add(oSQLdr.Item("FullName") & " " &
oSQLdr.Item("Address"))
End While
End If
oSQLdr.Close()

Thank you very much
Marcelo
 
C

Cor Ligthert[MVP]

Hi Marcelo,

With the DataGridView a datatable is still working the best. You can use a
datareader however are always busy to synchronise the indexes from the
columns.

Just my opinion

Cor
 
G

Guest

Cor,
Sory I did not completly understand you commant but could you show me the
code to take my list view and make it a Datagridview?

thanks
Marcelo
 
C

Cor Ligthert[MVP]

I have pasted this in your code, by the way, did you know that the Hungarian
method is rare used in dotNet.

I have typed this on the fly, so watch typos etc.

\\\
cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT FullNAME, Address FROM t_dssemp"
conn.Open
dim dt as new datatable
Try
cmd.Fill(dt)
Catch ex as exception
MessageBox.Show (ex.Tostring)
Finally
conn.Close
End Try
dt.Columns.Add("Name",System.String,"FullName + " " + Address")
Listbox1.DataSource = dt
ListBox1.DataMember = "Name"
///
 
C

Cor Ligthert[MVP]

Just the essential part, I have sent another message, however it seems to be
somewhere in nowhere land and I have no copy from it. I am not using the
Hungarian notation as you do, that is not adviced in dotNet. There it is
Pascal notation with some exceptions.

Instead of your datareader

dim dt as datatable
cmd.fill(dt)
dgv.Datasource = dt

I assume that you don't want to concatenate the name and adress now
otherwise you can add a column.

http://msdn2.microsoft.com/en-us/library/632cdz7z.aspx

Cor
 
G

Guest

Cor,
I will look into the Pascal notation. Right now i have all the code in
Hungarian and I dont want to make mods till this works..... Below is the
code you have me with 3 errors I ws unable to repair. Also you dumped the
data into a listbox, I was looking for Datagridview... or shuold i wait till
i se thi code running.

Thanks again
Marcelo

oSQLcmd.Connection = oSQLconn
oSQLcmd.CommandType = CommandType.Text
oSQLcmd.CommandText = "SELECT nAME, password FROM t_dssemp"
oSQLconn.Open()
Dim dt As New DataTable
Try
oSQLcmd.Fill(dt) 'Error - 'Fill' is not a member of
system.data.sqlclient.sqlcommand
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
oSQLconn.Close()
End Try
dt.Columns.Add("Name", System.String, "FullName") ' Error = 'Sting'
is not a type in 'System' and can not be used as a expression
Listbox1.DataSource = dt
ListBox1.DataMember = "Name" ' Error - DataMember is not a member of
system.windows.form.listbox
 
C

Cor Ligthert[MVP]

Sorry Marcelo,

I did it to much by hand.

You need the dataadapter in it

dim da is new SQLDataAdapter(oSQLcom, oSQLconn)
da.Fill(dt)

binding a datagridview is so easy
dgrv.datasource = dt
(it had to be displaymember, I don't know why I wrote datamember)

I thought it was this
dt.datacolumn.add("Name", GetType(System.String), "FullName")

http://msdn2.microsoft.com/en-us/library/system.data.datatable.aspx

Not tested again,

Cor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top