Programación General > Visual Basic 6.0 e inferiores
Re: DataReport
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
[#] Página Siguiente
Ir a la versión completa