
Leer de un Datagrid
Publicado por Alberto (5 intervenciones) el 27/11/2013 17:32:04
Hola muy buenas.
A ver si me podeis hechar una mano. Quiero acceder a un Datagrid para leer alguno de sus valores. Este datagrid lo formo de la siguiente manera.
Leo mi base de datos (SQL) y en función de la busqueda que haga, filtro y coloco el resultado en el datagrid. Luego quiero acudir al datagrid para recoger los valores y generar un pdf.
El datagrid me lo genera perfectamente el problema viene al leerlo que me da este error:
"El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
Nombre del parámetro: index"
¿Alguien sabe que esta ocurriendo?
A ver si me podeis hechar una mano. Quiero acceder a un Datagrid para leer alguno de sus valores. Este datagrid lo formo de la siguiente manera.
Leo mi base de datos (SQL) y en función de la busqueda que haga, filtro y coloco el resultado en el datagrid. Luego quiero acudir al datagrid para recoger los valores y generar un pdf.
El datagrid me lo genera perfectamente el problema viene al leerlo que me da este error:
"El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
Nombre del parámetro: index"
¿Alguien sabe que esta ocurriendo?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Dim cn As OleDbConnection
Dim cmd As OleDbCommand
Dim reader As OleDbDataReader
Dim Rw As DataRow 'creamos una fila
Dim TblDet As New DataTable("Detalle") 'Creamos una Tabla temporal con su nombre
Dim Ds As New DataSet()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
cn = New OleDbConnection()
cn.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Joaquin\Documents\NWINDVBP.mdb;User Id=admin;Password=;")
Try
TblDet = Ds.Tables.Add
With TblDet.Columns
.Add("CustomerID", Type.GetType("System.String"))
.Add("CompanyNaml", Type.GetType("System.String"))
.Add("ContactName", Type.GetType("System.String"))
.Add(" City", Type.GetType("System.String"))
End With
'Agregamos una Clave Principal a la Tabla Dinamica
'para que no se repìtan los registros
With Ds.Tables(0)
.PrimaryKey = New DataColumn() {.Columns("id")}
End With
'___________________________________________
cn.Open()
'MsgBox("Conexión Abierta")
cmd = New OleDbCommand()
cmd.Connection = cn
cmd.CommandText = "SELECT CustomerID, CompanyName, ContactName, City FROM Customers"
reader = cmd.ExecuteReader()
While reader.Read
If (reader("City") = TextBox1.Text) Then
'aqui agrego la tabla temporal al dataGrid en el dataSource----
DataGridView2.DataSource = TblDet
Rw = TblDet.NewRow() 'le decimos que crearemos una nueva fila
'se agregan los N cantidad de registros asi sucesivamente
Rw(0) = reader("CustomerID").ToString()
Rw(1) = reader("CompanyName")
Rw(2) = reader("ContactName")
Try
TblDet.Rows.Add(Rw)
TblDet.AcceptChanges()
Catch
MsgBox("Articulo repetido bla bla bla")
End Try
End If
End While
Catch ex As Exception
MsgBox("Error al realizar la conexión: " & ex.Message)
End Try
'Leo el datagrid
Dim Registro As String
Registro = DataGridView2.SelectedRows(0).Cells(0).Value
MsgBox(Registro)
If cn.State = ConnectionState.Open Then cn.Close()
End Sub
Valora esta pregunta


0