DataGrid + Adon.net

21/06/2007 - 12:10 por Jorge | Informe spam
Buenos dias, estoy teniendo un problema para mapear el datasource de una
grilla contra un Store Procedure de mi sql.

Aca les dejo parte de mi codigo.

Genero un lista del tipo producto y se la paso a una clase.

Private Sub bntListar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles bntListar.Click
If (DataGridView1.SelectedRows.Count = 1) And txtCliente.Text <> ""
Then
Dim unProducto As New Producto
Producto.BuscaCliente = txtCliente.Text
Dim ListaProducto As New List(Of Producto)
DataGridView2.DataSource = unProducto.ListaProducto()
Else
MessageBox.Show("Seleccione Cliente", "Por Favor")
End If
End Sub





Utilzo un store procedure para tomar datos la base de datos.
Me los devuelve en orden correcto.


Public Function ListaProducto() As List(Of Producto)
Dim miListaProducto As New List(Of Producto)
Try
Dim unProducto As Producto
Dim cmdPro As New SqlCommand("BuscarProducto")
cmdPro.CommandType = CommandType.StoredProcedure
Dim prm As SqlParameter
prm = cmdPro.Parameters.Add("@client", SqlDbType.BigInt)
prm.Value = BuscaCliente
Dim dr As SqlDataReader = Conectividad.ExecQuery(cmdPro)
Conectividad.ExecCmd(cmdPro)
While dr.Read
unProducto = New Producto
unProducto.Cliente = dr.Item(i).ToString
unProducto.Hub = dr.Item(i).ToString
unProducto.Nodo = dr.Item(i).ToString
unProducto.Direccion = dr.Item(i).ToString
unProducto.ProCM = dr.Item(i).ToString
unProducto.ProCPE = dr.Item(i).ToString
unProducto.MacCM = dr.Item(i).ToString
unProducto.MacCPE = dr.Item(i).ToString
unProducto.IPLan = dr.Item(i).ToString
unProducto.IPWan = dr.Item(i).ToString
unProducto.Password = dr.Item(i.ToString
unProducto.IPTS1000 = dr.Item(11).ToString
unProducto.Puerto = dr.Item(12).ToString
unProducto.Estado = dr.Item(13).ToString
unProducto.Calidad = dr.Item(14).ToString
unProducto.ID = dr.Item(15).ToString
miListaProducto.Add(unProducto)


End While
dr.Close()
Return miListaProducto
Catch ex As Exception
Return New List(Of Producto)
End Try
End Function




Del boton Listar los asigno a una grilla, el problema es que me los asigna
en cualquier orden, por ejemplo la primera columna es estado, la segunda es
cliente la tercera es..., en sintecis me cambia todo de lugar.

Por eso cuando quiero editar directamente desde la grilla a un textbox no
puedo.


Public Sub selection2()
If (DataGridView2.SelectedRows.Count = 1) Then
clientetxt.Text =
DataGridView2.SelectedRows(0).Cells(0).Value.ToString
hubtxt.Text =
DataGridView2.SelectedRows(0).Cells(1).Value.ToString
nodotxt.Text =
DataGridView2.SelectedRows(0).Cells(2).Value.ToString
direcciontxt.Text =
DataGridView2.SelectedRows(0).Cells(3).Value.ToString
procmtxt.Text =
DataGridView2.SelectedRows(0).Cells(4).Value.ToString
procpetxt.Text =
DataGridView2.SelectedRows(0).Cells(5).Value.ToString
maccmtxt.Text =
DataGridView2.SelectedRows(0).Cells(6).Value.ToString
maccpetxt.Text =
DataGridView2.SelectedRows(0).Cells(7).Value.ToStrin
iplantxt.Text =
DataGridView2.SelectedRows(0).Cells(8).Value.ToString
ipwantxt.Text =
DataGridView2.SelectedRows(0).Cells(9).Value.ToString
passtxt.Text =
DataGridView2.SelectedRows(0).Cells(10).Value.ToString
ipts1000txt.Text =
DataGridView2.SelectedRows(0).Cells(11).Value.ToString
puertotxt.Text =
DataGridView2.SelectedRows(0).Cells(12).Value.ToString
estadotxt.Text =
DataGridView2.SelectedRows(0).Cells(13).Value.ToString
calidadtxt.Text =
DataGridView2.SelectedRows(0).Cells(14).Value.ToString
lblid.Text =
DataGridView2.SelectedRows(0).Cells(15).Value.ToString
Else
MessageBox.Show("Seleccione Producto", "Por Favor")
End If
End Sub


End Class


Aca les dejo el store Procedure que tengo en mi SQL 2005 express:

USE [VPN-HAPSA]
GO
/****** Object: StoredProcedure [dbo].[BuscarProducto] Script Date:
06/21/2007 07:00:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[BuscarProducto]
@client int
AS
SELECT Cliente.IdCliente, Dato.Hub, Dato.Nodo, Dato.Direccion,
Dato.[Prod CableModem], Dato.[Prod LinkSyS / TS100], Dato.[Mac CableModem],
Dato.[Mac LinkSyS / TS100], Dato.[IP LAN LinkSyS],
Dato.[IP WAN LinkSyS / TS100], Dato.[Password Sesion],Dato.[IP TS1000]
,Dato.Puerto, Dato.[Estado Punto],
Servicio.Calidad, Dato.IdDatos
FROM Cliente INNER JOIN
Dato ON Cliente.IdCliente = Dato.Idcliente INNER JOIN
Servicio ON Dato.idservicio = Servicio.IdServicio
WHERE Cliente.IdCliente = @client

Genero un lista del tipo producto y se la paso a una clase.

Private Sub bntListar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles bntListar.Click
If (DataGridView1.SelectedRows.Count = 1) And txtCliente.Text <> ""
Then
Dim unProducto As New Producto
Producto.BuscaCliente = txtCliente.Text
Dim ListaProducto As New List(Of Producto)
DataGridView2.DataSource = unProducto.ListaProducto()
Else
MessageBox.Show("Seleccione Cliente", "Por Favor")
End If
End Sub





Utilzo un store procedure para tomar datos la base de datos.
Me los devuelve en orden correcto.


Public Function ListaProducto() As List(Of Producto)
Dim miListaProducto As New List(Of Producto)
Try
Dim unProducto As Producto
Dim cmdPro As New SqlCommand("BuscarProducto")
cmdPro.CommandType = CommandType.StoredProcedure
Dim prm As SqlParameter
prm = cmdPro.Parameters.Add("@client", SqlDbType.BigInt)
prm.Value = BuscaCliente
Dim dr As SqlDataReader = Conectividad.ExecQuery(cmdPro)
Conectividad.ExecCmd(cmdPro)
While dr.Read
unProducto = New Producto
unProducto.Cliente = dr.Item(i).ToString
unProducto.Hub = dr.Item(i).ToString
unProducto.Nodo = dr.Item(i).ToString
unProducto.Direccion = dr.Item(i).ToString
unProducto.ProCM = dr.Item(i).ToString
unProducto.ProCPE = dr.Item(i).ToString
unProducto.MacCM = dr.Item(i).ToString
unProducto.MacCPE = dr.Item(i).ToString
unProducto.IPLan = dr.Item(i).ToString
unProducto.IPWan = dr.Item(i).ToString
unProducto.Password = dr.Item(i.ToString
unProducto.IPTS1000 = dr.Item(11).ToString
unProducto.Puerto = dr.Item(12).ToString
unProducto.Estado = dr.Item(13).ToString
unProducto.Calidad = dr.Item(14).ToString
unProducto.ID = dr.Item(15).ToString
miListaProducto.Add(unProducto)


End While
dr.Close()
Return miListaProducto
Catch ex As Exception
Return New List(Of Producto)
End Try
End Function




Del boton Listar los asigno a una grilla, el problema es que me los asigna
en cualquier orden, por ejemplo la primera
columna es estado, la segunda es cliente la tercera es..., en sintecis me
cambia todo de lugar.

Por eso cuando quiero editar directamente desde la grilla a un textbox no
puedo.


Public Sub selection2()
If (DataGridView2.SelectedRows.Count = 1) Then
clientetxt.Text =
DataGridView2.SelectedRows(0).Cells(0).Value.ToString
hubtxt.Text =
DataGridView2.SelectedRows(0).Cells(1).Value.ToString
nodotxt.Text =
DataGridView2.SelectedRows(0).Cells(2).Value.ToString
direcciontxt.Text =
DataGridView2.SelectedRows(0).Cells(3).Value.ToString
procmtxt.Text =
DataGridView2.SelectedRows(0).Cells(4).Value.ToString
procpetxt.Text =
DataGridView2.SelectedRows(0).Cells(5).Value.ToString()
maccmtxt.Text =
DataGridView2.SelectedRows(0).Cells(6).Value.ToString()
maccpetxt.Text =
DataGridView2.SelectedRows(0).Cells(7).Value.ToString()
iplantxt.Text =
DataGridView2.SelectedRows(0).Cells(8).Value.ToString
ipwantxt.Text =
DataGridView2.SelectedRows(0).Cells(9).Value.ToString
passtxt.Text =
DataGridView2.SelectedRows(0).Cells(10).Value.ToString
ipts1000txt.Text =
DataGridView2.SelectedRows(0).Cells(11).Value.ToString
puertotxt.Text =
DataGridView2.SelectedRows(0).Cells(12).Value.ToString
estadotxt.Text =
DataGridView2.SelectedRows(0).Cells(13).Value.ToString
calidadtxt.Text =
DataGridView2.SelectedRows(0).Cells(14).Value.ToString
lblid.Text =
DataGridView2.SelectedRows(0).Cells(15).Value.ToString
Else
MessageBox.Show("Seleccione Producto", "Por Favor")
End If
End Sub


End Class


Aca les dejo el store Procedure que tengo en mi SQL 2005 express:

USE [VPN-HAPSA]
GO
/****** Object: StoredProcedure [dbo].[BuscarProducto] Script Date:
06/21/2007 07:00:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[BuscarProducto]
@client int
AS
SELECT Cliente.IdCliente, Dato.Hub, Dato.Nodo, Dato.Direccion,
Dato.[Prod CableModem], Dato.[Prod LinkSyS / TS100], Dato.[Mac CableModem],
Dato.[Mac LinkSyS / TS100], Dato.[IP LAN LinkSyS],
Dato.[IP WAN LinkSyS / TS100], Dato.[Password Sesion],Dato.[IP TS1000]
,Dato.Puerto, Dato.[Estado Punto],
Servicio.Calidad, Dato.IdDatos
FROM Cliente INNER JOIN
Dato ON Cliente.IdCliente = Dato.Idcliente INNER JOIN
Servicio ON Dato.idservicio = Servicio.IdServicio
WHERE Cliente.IdCliente = @cliento

Desde ya Muchas Gracias, por su tiempo.

Jorge
 

Leer las respuestas

#1 Jorge
21/06/2007 - 14:14 | Informe spam
"Jorge" wrote:

Buenos dias, estoy teniendo un problema para mapear el datasource de una
grilla contra un Store Procedure de mi sql.

Aca les dejo parte de mi codigo.

Genero un lista del tipo producto y se la paso a una clase.

Private Sub bntListar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles bntListar.Click
If (DataGridView1.SelectedRows.Count = 1) And txtCliente.Text <> ""
Then
Dim unProducto As New Producto
Producto.BuscaCliente = txtCliente.Text
Dim ListaProducto As New List(Of Producto)
DataGridView2.DataSource = unProducto.ListaProducto()
Else
MessageBox.Show("Seleccione Cliente", "Por Favor")
End If
End Sub





Utilzo un store procedure para tomar datos la base de datos.
Me los devuelve en orden correcto.


Public Function ListaProducto() As List(Of Producto)
Dim miListaProducto As New List(Of Producto)
Try
Dim unProducto As Producto
Dim cmdPro As New SqlCommand("BuscarProducto")
cmdPro.CommandType = CommandType.StoredProcedure
Dim prm As SqlParameter
prm = cmdPro.Parameters.Add("@client", SqlDbType.BigInt)
prm.Value = BuscaCliente
Dim dr As SqlDataReader = Conectividad.ExecQuery(cmdPro)
Conectividad.ExecCmd(cmdPro)
While dr.Read
unProducto = New Producto
unProducto.Cliente = dr.Item(i).ToString
unProducto.Hub = dr.Item(i).ToString
unProducto.Nodo = dr.Item(i).ToString
unProducto.Direccion = dr.Item(i).ToString
unProducto.ProCM = dr.Item(i).ToString
unProducto.ProCPE = dr.Item(i).ToString
unProducto.MacCM = dr.Item(i).ToString
unProducto.MacCPE = dr.Item(i).ToString
unProducto.IPLan = dr.Item(i).ToString
unProducto.IPWan = dr.Item(i).ToString
unProducto.Password = dr.Item(i.ToString
unProducto.IPTS1000 = dr.Item(11).ToString
unProducto.Puerto = dr.Item(12).ToString
unProducto.Estado = dr.Item(13).ToString
unProducto.Calidad = dr.Item(14).ToString
unProducto.ID = dr.Item(15).ToString
miListaProducto.Add(unProducto)


End While
dr.Close()
Return miListaProducto
Catch ex As Exception
Return New List(Of Producto)
End Try
End Function




Del boton Listar los asigno a una grilla, el problema es que me los asigna
en cualquier orden, por ejemplo la primera columna es estado, la segunda es
cliente la tercera es..., en sintecis me cambia todo de lugar.

Por eso cuando quiero editar directamente desde la grilla a un textbox no
puedo.


Public Sub selection2()
If (DataGridView2.SelectedRows.Count = 1) Then
clientetxt.Text =
DataGridView2.SelectedRows(0).Cells(0).Value.ToString
hubtxt.Text =
DataGridView2.SelectedRows(0).Cells(1).Value.ToString
nodotxt.Text =
DataGridView2.SelectedRows(0).Cells(2).Value.ToString
direcciontxt.Text =
DataGridView2.SelectedRows(0).Cells(3).Value.ToString
procmtxt.Text =
DataGridView2.SelectedRows(0).Cells(4).Value.ToString
procpetxt.Text =
DataGridView2.SelectedRows(0).Cells(5).Value.ToString
maccmtxt.Text =
DataGridView2.SelectedRows(0).Cells(6).Value.ToString
maccpetxt.Text =
DataGridView2.SelectedRows(0).Cells(7).Value.ToStrin
iplantxt.Text =
DataGridView2.SelectedRows(0).Cells(8).Value.ToString
ipwantxt.Text =
DataGridView2.SelectedRows(0).Cells(9).Value.ToString
passtxt.Text =
DataGridView2.SelectedRows(0).Cells(10).Value.ToString
ipts1000txt.Text =
DataGridView2.SelectedRows(0).Cells(11).Value.ToString
puertotxt.Text =
DataGridView2.SelectedRows(0).Cells(12).Value.ToString
estadotxt.Text =
DataGridView2.SelectedRows(0).Cells(13).Value.ToString
calidadtxt.Text =
DataGridView2.SelectedRows(0).Cells(14).Value.ToString
lblid.Text =
DataGridView2.SelectedRows(0).Cells(15).Value.ToString
Else
MessageBox.Show("Seleccione Producto", "Por Favor")
End If
End Sub


End Class


Aca les dejo el store Procedure que tengo en mi SQL 2005 express:

USE [VPN-HAPSA]
GO
/****** Object: StoredProcedure [dbo].[BuscarProducto] Script Date:
06/21/2007 07:00:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[BuscarProducto]
@client int
AS
SELECT Cliente.IdCliente, Dato.Hub, Dato.Nodo, Dato.Direccion,
Dato.[Prod CableModem], Dato.[Prod LinkSyS / TS100], Dato.[Mac CableModem],
Dato.[Mac LinkSyS / TS100], Dato.[IP LAN LinkSyS],
Dato.[IP WAN LinkSyS / TS100], Dato.[Password Sesion],Dato.[IP TS1000]
,Dato.Puerto, Dato.[Estado Punto],
Servicio.Calidad, Dato.IdDatos
FROM Cliente INNER JOIN
Dato ON Cliente.IdCliente = Dato.Idcliente INNER JOIN
Servicio ON Dato.idservicio = Servicio.IdServicio
WHERE Cliente.IdCliente = @client

Genero un lista del tipo producto y se la paso a una clase.

Private Sub bntListar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles bntListar.Click
If (DataGridView1.SelectedRows.Count = 1) And txtCliente.Text <> ""
Then
Dim unProducto As New Producto
Producto.BuscaCliente = txtCliente.Text
Dim ListaProducto As New List(Of Producto)
DataGridView2.DataSource = unProducto.ListaProducto()
Else
MessageBox.Show("Seleccione Cliente", "Por Favor")
End If
End Sub





Utilzo un store procedure para tomar datos la base de datos.
Me los devuelve en orden correcto.


Public Function ListaProducto() As List(Of Producto)
Dim miListaProducto As New List(Of Producto)
Try
Dim unProducto As Producto
Dim cmdPro As New SqlCommand("BuscarProducto")
cmdPro.CommandType = CommandType.StoredProcedure
Dim prm As SqlParameter
prm = cmdPro.Parameters.Add("@client", SqlDbType.BigInt)
prm.Value = BuscaCliente
Dim dr As SqlDataReader = Conectividad.ExecQuery(cmdPro)
Conectividad.ExecCmd(cmdPro)
While dr.Read
unProducto = New Producto
unProducto.Cliente = dr.Item(i).ToString
unProducto.Hub = dr.Item(i).ToString
unProducto.Nodo = dr.Item(i).ToString
unProducto.Direccion = dr.Item(i).ToString
unProducto.ProCM = dr.Item(i).ToString
unProducto.ProCPE = dr.Item(i).ToString
unProducto.MacCM = dr.Item(i).ToString
unProducto.MacCPE = dr.Item(i).ToString
unProducto.IPLan = dr.Item(i).ToString
unProducto.IPWan = dr.Item(i).ToString
unProducto.Password = dr.Item(i.ToString
unProducto.IPTS1000 = dr.Item(11).ToString
unProducto.Puerto = dr.Item(12).ToString
unProducto.Estado = dr.Item(13).ToString
unProducto.Calidad = dr.Item(14).ToString
unProducto.ID = dr.Item(15).ToString
miListaProducto.Add(unProducto)


End While
dr.Close()
Return miListaProducto
Catch ex As Exception
Return New List(Of Producto)
End Try
End Function




Del boton Listar los asigno a una grilla, el problema es que me los asigna
en cualquier orden, por ejemplo la primera
columna es estado, la segunda es cliente la tercera es..., en sintecis me
cambia todo de lugar.

Por eso cuando quiero editar directamente desde la grilla a un textbox no
puedo.


Public Sub selection2()
If (DataGridView2.SelectedRows.Count = 1) Then
clientetxt.Text =
DataGridView2.SelectedRows(0).Cells(0).Value.ToString
hubtxt.Text =
DataGridView2.SelectedRows(0).Cells(1).Value.ToString
nodotxt.Text =
DataGridView2.SelectedRows(0).Cells(2).Value.ToString
direcciontxt.Text =
DataGridView2.SelectedRows(0).Cells(3).Value.ToString
procmtxt.Text =
DataGridView2.SelectedRows(0).Cells(4).Value.ToString
procpetxt.Text =
DataGridView2.SelectedRows(0).Cells(5).Value.ToString()
maccmtxt.Text =
DataGridView2.SelectedRows(0).Cells(6).Value.ToString()
maccpetxt.Text =
DataGridView2.SelectedRows(0).Cells(7).Value.ToString()
iplantxt.Text =
DataGridView2.SelectedRows(0).Cells(8).Value.ToString
ipwantxt.Text =
DataGridView2.SelectedRows(0).Cells(9).Value.ToString
passtxt.Text =
DataGridView2.SelectedRows(0).Cells(10).Value.ToString
ipts1000txt.Text =
DataGridView2.SelectedRows(0).Cells(11).Value.ToString
puertotxt.Text =
DataGridView2.SelectedRows(0).Cells(12).Value.ToString
estadotxt.Text =
DataGridView2.SelectedRows(0).Cells(13).Value.ToString
calidadtxt.Text =
DataGridView2.SelectedRows(0).Cells(14).Value.ToString
lblid.Text =
DataGridView2.SelectedRows(0).Cells(15).Value.ToString
Else
MessageBox.Show("Seleccione Producto", "Por Favor")
End If
End Sub


End Class


Aca les dejo el store Procedure que tengo en mi SQL 2005 express:

USE [VPN-HAPSA]
GO
/****** Object: StoredProcedure [dbo].[BuscarProducto] Script Date:
06/21/2007 07:00:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[BuscarProducto]
@client int
AS
SELECT Cliente.IdCliente, Dato.Hub, Dato.Nodo, Dato.Direccion,
Dato.[Prod CableModem], Dato.[Prod LinkSyS / TS100], Dato.[Mac CableModem],
Dato.[Mac LinkSyS / TS100], Dato.[IP LAN LinkSyS],
Dato.[IP WAN LinkSyS / TS100], Dato.[Password Sesion],Dato.[IP TS1000]
,Dato.Puerto, Dato.[Estado Punto],
Servicio.Calidad, Dato.IdDatos
FROM Cliente INNER JOIN
Dato ON Cliente.IdCliente = Dato.Idcliente INNER JOIN
Servicio ON Dato.idservicio = Servicio.IdServicio
WHERE Cliente.IdCliente = @cliento

Desde ya Muchas Gracias, por su tiempo.

Jorge




Esta esta mal me equivoque al escribirla.

es asi


unProducto = New Producto
unProducto.Cliente = dr.Item(0).ToString
unProducto.Hub = dr.Item(1).ToString
unProducto.Nodo = dr.Item(2).ToString
unProducto.Direccion = dr.Item(3).ToString
unProducto.ProCM = dr.Item(4).ToString
unProducto.ProCPE = dr.Item(5).ToString
unProducto.MacCM = dr.Item(6).ToString
unProducto.MacCPE = dr.Item(7).ToString
unProducto.IPLan = dr.Item(8).ToString
unProducto.IPWan = dr.Item(9).ToString


.. etc

Preguntas similares