DataGridView y Tortuga

26/02/2007 - 16:07 por Ivan Pequeño | Informe spam
Agradeciendo de antemano cualquier ayuda

Es normal que un DataGridView, se demore + de dos minutos en cargar
342 filas por 8 columnas ?

Porque si es así, el objeto es inutilizable.
Creo que + bien DEBO ESTAR YO HACIENDO MAL ALGO

Aqui pongo el código con que lleno el objeto

Friend Sub AmDatosCarga()

Dim i, T As Integer

'Valor de i - 1, porque como unas collections parten de cero
'y otros arrays parten de uno...
Dim im1 As Integer

'Genero un Query para rescatar todas las comunas de Chile (342)
Dim Q As String
Q = "SELECT "
Q &= "ID, " '0
Q &= "CodigoPostal, " '1
Q &= "Comuna, " '2
Q &= "Provincia," '3
Q &= "RegionNum, " '4
Q &= "RegionNom, " '5
Q &= "EsComuna, " '6
Q &= "TelArea, " '7
Q &= "Activo, " '8
Q &= "EsTaita " '9
Q &= "FROM" & BdDTabla
Q &= "ORDER BY Comuna"

Call AmCargaStruc(Q)
'Carga esta estructura:
'Public Structure StLocalidad
' Dim AsIDs As Integer ' 1
' Dim AsActi As Byte ' 2 Activa
' Dim AsLoca As String ' 3 Localidad
' Dim AsEsCo As Byte ' 4 Es Comuna
' Dim AsProv As String ' 5 Provincia
' Dim AsReNu As Integer ' 6 N° de Región
' Dim AsReNo As String ' 7 Nombre Región
' Dim AsCoPo As String ' 8 Es Comuna
' Dim AsFoAr As Byte ' 9 Area Fono
' Dim AsTait As Byte '10 Es Taita
'End Structure
'Public AsDatos() As StLocalidad
'Public AsDatosMx As Integer

T = AsDatosMx 'AsDatosMx = 342 Comunas de Chile
'Llenar un DataGridView que no está "Bind" a nada
With AzDgv.Rows
'Agrego las filas necesarias al DataGridView
If .Count = 1 Then .Add(T)
End With
For i = 1 To T
im1 = i - 1
'Y aqui comienza el Drama, cuando inicio
'la carga en el DataGridView con los datos
'Se demora tanto que tira un error Timeout
'Hay otra forma de llenar un DataGridView ?
With AsDatos(i)
'AzDgv("CoActi", im1).Tag = .AsIDs
'AzDgv("CoActi", im1).Value = .AsActi
'AzDgv("CoLoca", im1).Value = .AsLoca
'AzDgv("CoComu", im1).Value = .AsEsCo
'AzDgv("CoProv", im1).Value = .AsProv
'AzDgv("CoReNu", im1).Value = .AsReNu
'AzDgv("CoReNo", im1).Value = .AsReNo
'AzDgv("CoCoPo", im1).Value = .AsCoPo
'AzDgv("CoFoAr", im1).Value = .AsFoAr

AzDgv(0, im1).Tag = .AsIDs
AzDgv(0, im1).Value = .AsActi
AzDgv(1, im1).Value = .AsLoca
AzDgv(2, im1).Value = .AsEsCo
AzDgv(3, im1).Value = .AsProv
AzDgv(4, im1).Value = .AsReNu
AzDgv(5, im1).Value = .AsReNo
AzDgv(6, im1).Value = .AsCoPo
AzDgv(7, im1).Value = .AsFoAr
End With
Next

End Sub

Alguna pista, algun ejeemplo

Una vez mas, de antemano, gracias

Preguntas similare

Leer las respuestas

#1 Carlos Gómez
26/02/2007 - 20:32 | Informe spam
On 26 feb, 16:07, Ivan Pequeño
wrote:
Agradeciendo de antemano cualquier ayuda

Es normal que un DataGridView, se demore + de dos minutos en cargar
342 filas por 8 columnas ?

Porque si es así, el objeto es inutilizable.
Creo que + bien DEBO ESTAR YO HACIENDO MAL ALGO

Aqui pongo el código con que lleno el objeto

Friend Sub AmDatosCarga()

Dim i, T As Integer

'Valor de i - 1, porque como unas collections parten de cero
'y otros arrays parten de uno...
Dim im1 As Integer

'Genero un Query para rescatar todas las comunas de Chile (342)
Dim Q As String
Q = "SELECT "
Q &= "ID, " '0
Q &= "CodigoPostal, " '1
Q &= "Comuna, " '2
Q &= "Provincia," '3
Q &= "RegionNum, " '4
Q &= "RegionNom, " '5
Q &= "EsComuna, " '6
Q &= "TelArea, " '7
Q &= "Activo, " '8
Q &= "EsTaita " '9
Q &= "FROM" & BdDTabla
Q &= "ORDER BY Comuna"

Call AmCargaStruc(Q)
'Carga esta estructura:
'Public Structure StLocalidad
' Dim AsIDs As Integer ' 1
' Dim AsActi As Byte ' 2 Activa
' Dim AsLoca As String ' 3 Localidad
' Dim AsEsCo As Byte ' 4 Es Comuna
' Dim AsProv As String ' 5 Provincia
' Dim AsReNu As Integer ' 6 N° de Región
' Dim AsReNo As String ' 7 Nombre Región
' Dim AsCoPo As String ' 8 Es Comuna
' Dim AsFoAr As Byte ' 9 Area Fono
' Dim AsTait As Byte '10 Es Taita
'End Structure
'Public AsDatos() As StLocalidad
'Public AsDatosMx As Integer

T = AsDatosMx 'AsDatosMx = 342 Comunas de Chile
'Llenar un DataGridView que no está "Bind" a nada
With AzDgv.Rows
'Agrego las filas necesarias al DataGridView
If .Count = 1 Then .Add(T)
End With
For i = 1 To T
im1 = i - 1
'Y aqui comienza el Drama, cuando inicio
'la carga en el DataGridView con los datos
'Se demora tanto que tira un error Timeout
'Hay otra forma de llenar un DataGridView ?
With AsDatos(i)
'AzDgv("CoActi", im1).Tag = .AsIDs
'AzDgv("CoActi", im1).Value = .AsActi
'AzDgv("CoLoca", im1).Value = .AsLoca
'AzDgv("CoComu", im1).Value = .AsEsCo
'AzDgv("CoProv", im1).Value = .AsProv
'AzDgv("CoReNu", im1).Value = .AsReNu
'AzDgv("CoReNo", im1).Value = .AsReNo
'AzDgv("CoCoPo", im1).Value = .AsCoPo
'AzDgv("CoFoAr", im1).Value = .AsFoAr

AzDgv(0, im1).Tag = .AsIDs
AzDgv(0, im1).Value = .AsActi
AzDgv(1, im1).Value = .AsLoca
AzDgv(2, im1).Value = .AsEsCo
AzDgv(3, im1).Value = .AsProv
AzDgv(4, im1).Value = .AsReNu
AzDgv(5, im1).Value = .AsReNo
AzDgv(6, im1).Value = .AsCoPo
AzDgv(7, im1).Value = .AsFoAr
End With
Next

End Sub

Alguna pista, algun ejeemplo

Una vez mas, de antemano, gracias



No entiendo bien el codigo: AzDgv supongo que es un DataTable, si es
así, porque llenas el dataTable a mano, y no lo cargas directamente de
la base de datos?

Por otro lado, los datagridview, no son ni más ni menos que una vista
de una tabla (o grilla). Si quieres modificar los valores que muestra,
tienes que hacerlo en el origen de los datos, no en el dataGridView
que no es más que un visualizador de datos, con una serie de
características para visualizarlos.

Una vez que tienes el dataTable con los datos ya cargados, lo unico
que hay que hacer es:
DataGridView1.DataSource=DataTable1
y ya está.

Mira si así va mejor la cosa
Respuesta Responder a este mensaje
#2 Ivan Pequeño
27/02/2007 - 15:08 | Informe spam
Muchas gracias por tu respuesta y tu tiempo

Creo que me expliqué mal, mis excusas

Voy a poner un nuevo post, a ver si soy más claro
Respuesta Responder a este mensaje
#3 SoftJaén
27/02/2007 - 15:18 | Informe spam
"Ivan Pequeño" escribió:

Creo que me expliqué mal, mis excusas

Voy a poner un nuevo post, a ver si soy más claro



Antes de poner un nuevo "post", prueba con lo que te ha comentado Carlos
Gómez. En lugar de cargar los datos "a mano", ejecuta una consulta SQL de
selección, rellenas un objeto DataSet, con su correspondiente objeto
DataTable, y estos son los objetos que deberás de asignarle al control
DataGridView:

With DataGridView1
.DataSource = objetoDataSet
.DataMember = "NombreObjetoDataTable"
End With

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida