Programación General > Visual Basic 6.0 e inferiores

 Re: DataReport

(1/3) > >>

pabloegea:
como puedo pasar datos de una flexgrid a un datareport.
Tengo un proceso que envía los resultados de un recordset a una grilla, esto lo quiero imprimir en un reporte.

probé pasar los resultados a una tabla y luego hacer un reporte de esta, pero los datos no refrescan hasta que no cierro la aplicación,
Ayuda!!! gracias amigos!:beer:

Angel-Mayor:
Mira vi lo que escribiste, y si te decidiste por pasar los datos que tenias en el Flexgrid a una tabla, pues yo te puedo dar la soluciòn para que el reporte se actualize inmediatamente despues que ingreses los datos a la tabla, solo haz esto,...


on error resume next
dataenvironment1.rscommand1.requery
datareport1.refresh
datareport1.show

("Toma en cuenta que rscommand1 se refiere al nombre que le pongas al comando con el que haces referencia  a la tabla en el dataenvironment1, quiere decir que si al comando le pones REPORTE, al momento de escribir el codigo anterior haras refencia asi rsREPORTE, y en la parte de datareport1, es el nombre que tu le das a la Hoja del Reporte  o al diseño")


Bueno espero te sirva de algo, o si ya lo solucionaste de otra forma bien por ti, de todos modos no te caeria mal esta ayuda en alguna otra duda que tengas.


SUERTE

giomar:
Bueno no se como esta cargando el FlexGrid, pero supongamos que utilizas un RecordSet para ello, entonces para llenar el FlexGrid debes utilizar algo parecido a esto:
'en el general
Dim cnFarma As New ADODB.Connection
Dim rsPrecios As New ADODB.Recordset

Private Sub Form_Load()
Set cnFarma = New ADODB.Connection
ruta = App.Path + "DB.mdb"
cnFarma.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + ruta
Set rsPrecios = New ADODB.Recordset
rsPrecios.CursorLocation = adUseClient
rsPrecios.Open "SELECT idarticulo,descripcion, precio  FROM articulo order by descripcion", cnFarma, adOpenStatic, adLockReadOnly
rsPrecios.MoveFirst
MSFlexGrid1.Rows = 1
MSFlexGrid1.Clear
MSFlexGrid1.FormatString = "<Codigo" & Space(20) & "|<Descripcion" & Space(20) & "|<Precio "
Do While Not rsPrecios.EOF
    MSFlexGrid1.AddItem rsPrecios.Fields(0).Value & vbTab & rsPrecios.Fields(1).Value & vbTab & rsPrecios.Fields(2).Value
    rsPrecios.MoveNext
Loop
End Sub

'y para trasladar los datos al datareport:
Private Sub cmdImprimir_Click()
On Error Resume Next
With dtrPrecios
    For fila = 1 To MSFlexGrid1.Rows - 1
        For columna = 1 To MSFlexGrid1.Cols - 1
            .Sections("Sección1").Controls("txtCodigo") = MSFlexGrid1.TextMatrix(fila, columna)
            .Sections("Sección1").Controls("txtDescripcion") = MSFlexGrid1.TextMatrix(fila, columna)
            .Sections("Sección1").Controls("txtPrecio") = MSFlexGrid1.TextMatrix(fila, columna)
        Next columna
    Next fila
    Set .DataSource = rsPrecios
    .Show
End With
End Sub
'al descargar el form
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
rsPrecios.Close
Set rsPrecios = Nothing
End Sub

Ahora si tienes en cuenta los nombres de los objetos en el DataReport todo este listo.
Espero que te ayude....
Suerte y un saludo
<<_GIOMAR_>>

aorellana:

--- Cita de: "giomar" ---Bueno no se como esta cargando el FlexGrid, pero supongamos que utilizas un RecordSet para ello, entonces para llenar el FlexGrid debes utilizar algo parecido a esto:
'en el general
Dim cnFarma As New ADODB.Connection
Dim rsPrecios As New ADODB.Recordset

Private Sub Form_Load()
Set cnFarma = New ADODB.Connection
ruta = App.Path + "DB.mdb"
cnFarma.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + ruta
Set rsPrecios = New ADODB.Recordset
rsPrecios.CursorLocation = adUseClient
rsPrecios.Open "SELECT idarticulo,descripcion, precio  FROM articulo order by descripcion", cnFarma, adOpenStatic, adLockReadOnly
rsPrecios.MoveFirst
MSFlexGrid1.Rows = 1
MSFlexGrid1.Clear
MSFlexGrid1.FormatString = "<Codigo" & Space(20) & "|<Descripcion" & Space(20) & "|<Precio "
Do While Not rsPrecios.EOF
    MSFlexGrid1.AddItem rsPrecios.Fields(0).Value & vbTab & rsPrecios.Fields(1).Value & vbTab & rsPrecios.Fields(2).Value
    rsPrecios.MoveNext
Loop
End Sub

'y para trasladar los datos al datareport:
Private Sub cmdImprimir_Click()
On Error Resume Next
With dtrPrecios
    For fila = 1 To MSFlexGrid1.Rows - 1
        For columna = 1 To MSFlexGrid1.Cols - 1
            .Sections("Sección1").Controls("txtCodigo") = MSFlexGrid1.TextMatrix(fila, columna)
            .Sections("Sección1").Controls("txtDescripcion") = MSFlexGrid1.TextMatrix(fila, columna)
            .Sections("Sección1").Controls("txtPrecio") = MSFlexGrid1.TextMatrix(fila, columna)
        Next columna
    Next fila
    Set .DataSource = rsPrecios
    .Show
End With
End Sub
'al descargar el form
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
rsPrecios.Close
Set rsPrecios = Nothing
End Sub

Ahora si tienes en cuenta los nombres de los objetos en el DataReport todo este listo.
Espero que te ayude....
Suerte y un saludo
<<_GIOMAR_>>
--- Fin de la cita ---
Buenas tardes, he estado analizando el ejemplo ya que lo necesito para un proyecto, pero a la hora del reporte.show no muestra nada.. con tu experiencia me harias el gran favor de  solucionar este problema...


Agradecido

Alberto Orellana :comp:

ManDraK3:
por que no pruebas esto...

en el boton de imprimir:

Set Nombredelreporte.DataSource = recorset (nombre del recorset con que cargas el grid)
    Nombredelreporte.Show 1

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa