Ayuda en filtro de Ado a datagrid
Publicado por Diego Jaramillo (8 intervenciones) el 08/11/2006 22:08:09
Hola a todos los del foro.
De antemano Gracias.
mi problema es el siguiente:
1.Tengo Unn control ado enlazado a una base de dato y debo hacer un filtro que me muestre el numero de registro que hay entre una fecha inicial y una final.
para lo demas estaba usando algo como esto:
adoingresos.Recordset.Filter = "Numero = '" & txtfiltro.Text & "'"
pero esto solo funciona para un registro especifico, y lo que necesito como lo dije anterior mente es que me muestre todos los que halla a partir de la fecha inicial hasta la fecha final.
2.Necesito imprimir el Datagrid con un titulo y un logo de la empresa, y no tengo ni idea de imprimir, encontre una funcion pero no se como aplicarla; el que me pueda ayudar como aplicar la fucnion o sepa una manera mejor ayudeme porfavor.
la funcion es la siguiente:
Public Function ImprimirDtg(ByVal Datos As DataGrid, ByVal RsDtg As Recordset, ByVal tit As String) As Long
Dim Filas, Columnas As Integer
Dim Texto As String
Dim Titulo As String
Dim Cabecera As String
Dim Lineas As Integer 'numero de lineas por pagina, aproximadamente 82 x pagina
Dim AnchoColumna(20) As Integer
Dim TituloColumnas As String
Datos.Enabled = False
Titulo = Space(40) & tit
Cabecera = " - Pagina: "
For Columnas = 1 To Datos.Columns.Count
RsDtg.MoveFirst
Do While RsDtg.EOF = False
If AnchoColumna(Columnas) < Len(Datos.Columns(Columnas - 1).Caption) Then AnchoColumna(Columnas) = Len(Datos.Columns(Columnas - 1).Caption)
If Len(RsDtg(Datos.Columns(Columnas - 1).DataField)) > AnchoColumna(Columnas) Then AnchoColumna(Columnas) = Len(RsDtg(Datos.Columns(Columnas - 1).DataField))
RsDtg.MoveNext
Loop
TituloColumnas = TituloColumnas + Datos.Columns(Columnas - 1).Caption + Space((AnchoColumna(Columnas)) - (Len(Datos.Columns(Columnas - 1).Caption))) + Space(3)
Next Columnas
Printer.Font.Size = 8
Printer.Font.Bold = True
Printer.Font.Name = "Courier New"
Printer.Orientation = vbPRORPortrait
Printer.Print Titulo
Printer.Print Cabecera; Printer.Page
Printer.Print Space(3) + TituloColumnas
Printer.Font.Bold = False
Filas = 1
RsDtg.MoveFirst
Do While RsDtg.EOF = False
For Columnas = 1 To Datos.Columns.Count
If IsNull(RsDtg(Datos.Columns(Columnas - 1).DataField)) Then
Texto = Texto + Space(AnchoColumna(Columnas)) + Space(3)
Else
Texto = Texto + RsDtg(Datos.Columns(Columnas - 1).DataField) + Space(AnchoColumna(Columnas) - Len(RsDtg(Datos.Columns(Columnas - 1).DataField))) + Space(3)
End If
Next Columnas
Printer.Print Space(3) + Texto
Texto = ""
Filas = Filas + 1
If Filas = 85 Then
Filas = 1
Printer.NewPage
Printer.Print Titulo
Printer.Print Cabecera; Printer.Page
Printer.Print Space(3); TituloColumnas
End If
RsDtg.MoveNext
Loop
Printer.Print " "
Printer.EndDoc
Datos.Enabled = True
End Function
Muchas gracia sy ojala me pueda ayudar
Bye
The evolucion
De antemano Gracias.
mi problema es el siguiente:
1.Tengo Unn control ado enlazado a una base de dato y debo hacer un filtro que me muestre el numero de registro que hay entre una fecha inicial y una final.
para lo demas estaba usando algo como esto:
adoingresos.Recordset.Filter = "Numero = '" & txtfiltro.Text & "'"
pero esto solo funciona para un registro especifico, y lo que necesito como lo dije anterior mente es que me muestre todos los que halla a partir de la fecha inicial hasta la fecha final.
2.Necesito imprimir el Datagrid con un titulo y un logo de la empresa, y no tengo ni idea de imprimir, encontre una funcion pero no se como aplicarla; el que me pueda ayudar como aplicar la fucnion o sepa una manera mejor ayudeme porfavor.
la funcion es la siguiente:
Public Function ImprimirDtg(ByVal Datos As DataGrid, ByVal RsDtg As Recordset, ByVal tit As String) As Long
Dim Filas, Columnas As Integer
Dim Texto As String
Dim Titulo As String
Dim Cabecera As String
Dim Lineas As Integer 'numero de lineas por pagina, aproximadamente 82 x pagina
Dim AnchoColumna(20) As Integer
Dim TituloColumnas As String
Datos.Enabled = False
Titulo = Space(40) & tit
Cabecera = " - Pagina: "
For Columnas = 1 To Datos.Columns.Count
RsDtg.MoveFirst
Do While RsDtg.EOF = False
If AnchoColumna(Columnas) < Len(Datos.Columns(Columnas - 1).Caption) Then AnchoColumna(Columnas) = Len(Datos.Columns(Columnas - 1).Caption)
If Len(RsDtg(Datos.Columns(Columnas - 1).DataField)) > AnchoColumna(Columnas) Then AnchoColumna(Columnas) = Len(RsDtg(Datos.Columns(Columnas - 1).DataField))
RsDtg.MoveNext
Loop
TituloColumnas = TituloColumnas + Datos.Columns(Columnas - 1).Caption + Space((AnchoColumna(Columnas)) - (Len(Datos.Columns(Columnas - 1).Caption))) + Space(3)
Next Columnas
Printer.Font.Size = 8
Printer.Font.Bold = True
Printer.Font.Name = "Courier New"
Printer.Orientation = vbPRORPortrait
Printer.Print Titulo
Printer.Print Cabecera; Printer.Page
Printer.Print Space(3) + TituloColumnas
Printer.Font.Bold = False
Filas = 1
RsDtg.MoveFirst
Do While RsDtg.EOF = False
For Columnas = 1 To Datos.Columns.Count
If IsNull(RsDtg(Datos.Columns(Columnas - 1).DataField)) Then
Texto = Texto + Space(AnchoColumna(Columnas)) + Space(3)
Else
Texto = Texto + RsDtg(Datos.Columns(Columnas - 1).DataField) + Space(AnchoColumna(Columnas) - Len(RsDtg(Datos.Columns(Columnas - 1).DataField))) + Space(3)
End If
Next Columnas
Printer.Print Space(3) + Texto
Texto = ""
Filas = Filas + 1
If Filas = 85 Then
Filas = 1
Printer.NewPage
Printer.Print Titulo
Printer.Print Cabecera; Printer.Page
Printer.Print Space(3); TituloColumnas
End If
RsDtg.MoveNext
Loop
Printer.Print " "
Printer.EndDoc
Datos.Enabled = True
End Function
Muchas gracia sy ojala me pueda ayudar
Bye
The evolucion
Valora esta pregunta


0