Visual Basic - problema con desplazamiento en datagrid

Life is soft - evento anual de software empresarial
 
Vista:

problema con desplazamiento en datagrid

Publicado por miguel (47 intervenciones) el 15/11/2005 23:29:06
Hola a todos, hace un tiempo escribí para ver si alguien me ayudaba para pasar la información de un datagrid a word. Recibí respuestas y código que me permitió esto, en concreto el código es:

On Error Resume Next
Dim MSWord As Word.Application
Dim Documento As Word.Document
Dim Parrafo As Table
Dim F, C As Double
Set MSWord = New Word.Application
MSWord.Visible = True

Set Documento = MSWord.Documents.Add
Set Parrafo = Documento.Tables.Add(Documento.Range(0, 0), DataGrid1.ApproxCount + 1, DataGrid1.Columns.Count)

For C = 0 To DataGrid1.Columns.Count
DataGrid1.Row = 0
Parrafo.Cell(1, C + 1).Range.InsertAfter DataGrid1.Columns(C).Caption 'agregar columnas
For F = 1 To DataGrid1.ApproxCount
Parrafo.Cell(F + 1, C + 1).Range.InsertAfter DataGrid1.Columns(C).Value
DataGrid1.Row = DataGrid1.Row + 1
Next F
Next C

Set MSWord = Nothing
Set Documento = Nothing
Set Parrafo = Nothing
End Sub

Al ejecutar el código funciona perfectamente si el número de registros no supera los que se ven en pantalla, es decir, si no aparece la barra de desplazamiento. Si hay barra de desplazamiento y para ver todos los datos hay que moverse sobre ella, falla en la instrucción:

DataGrid1.Row = 0, ya que no vuelve al comienzo, sino que se posiciona en la primera posición del datagrid, es decir, en la que aparece en pantalla no en la posición cero.

Me gustaría, si es posible, que me indicarais qué instrucción mueve la barra desplazadora del datagrid al comienzo.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con desplazamiento en datagrid

Publicado por ivan (463 intervenciones) el 16/11/2005 02:46:49
La propiedad Row del DataGrid está limitada únicamente a los registros que se alcancen a ver en la pantalla, dependiendo del tamaño del DataGrid, esta propiedad NO te sirve para ubicarte en determinado registro.

Para recorrer TODOS los registros del DataGrid, es mejor utilizar el RecordSet directamente, si te vas moviendo por el RecordSet igual se irá moviendo el puntero en el DataGrid.

Por ejemplo, supongamos que el DataSource del Datagrid es el RecordSet Rs.

Si pones

Rs.MoveFirst

El puntero del DataGrid se irá al primer renglón, para acceder a los valores del Datagrid se pone, (así lo hago yo.... )

Valor_de_primer_columna = DataGrid1.Columns(0).Text

Aunque también pudiera ser

Valor_de_primer_columna = DataGrid1.Columns(0).Value

Para el valor de la segunda columna es..: = DataGrid1.Columns(1).Text

Y así sucesivamente.

Veo que tu tienes .. "...DataGrid1.Columns(C).Value..". No he probado si acaso funciona con LETRAS.

Espero que esto te sea de utilidad y haber sido explícito. Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con desplazamiento en datagrid

Publicado por miguel (47 intervenciones) el 17/11/2005 23:50:41
Hola Iván, funciona perfectamente como me has dicho, sólo he tenido que poner
Rs.MoveFirst como me dijiste y salta al primer registro recorriendo el datagrid entero.

Muchas gracias, jamás se me habría ocurrido esa solución.

Venga Iván, gracias y un cordial saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar