Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error 424: Objeto requerido (Imprimir Datagrid)

Estas en el tema de Error 424: Objeto requerido (Imprimir Datagrid) en el foro de Visual Basic clásico en Foros del Web. Bueno señores espero poder contar con su valioso aporte en esta pequeña aplicacion que estoy desarrollando. Hasta los momentos me trabaja bien pero quise asignar ...
  #1 (permalink)  
Antiguo 23/02/2010, 15:10
 
Fecha de Ingreso: febrero-2010
Ubicación: Valencia-Venezuela
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Error 424: Objeto requerido (Imprimir Datagrid)

Bueno señores espero poder contar con su valioso aporte en esta pequeña aplicacion que estoy desarrollando. Hasta los momentos me trabaja bien pero quise asignar unar funcion de imprimir un Datagrid, me sale el error antes mencionado. He tratado de buscar la solucion a mi problema pero no lo encuentro vi las variables que declare y el nombre de los objetos pero no veo nada anormal. El codigo de la aplicacion es este:

Funcion de Conexion para leer el TxT
Código:
Private Function fichero_txt() As ADODB.Recordset

       Dim rs As ADODB.Recordset
       Set rs = New ADODB.Recordset
       Dim conn As ADODB.Connection
       Set conn = New ADODB.Connection

       'Cadena de conexión
       conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};" & _
                   "DBQ=" & App.Path & ";", "", ""

       'Ejecutamos el recordset pasandole el archivo de texto en la cláusula From
       rs.Open "select * from [prueba#txt]", conn, adOpenStatic, _
                   adLockReadOnly, adCmdText
       'eliminamos las variables
       Set fichero_txt = rs
       Set rs = Nothing
       Set conn = Nothing
 End Function
Funcion que use para imprimir
Código:
Public Function imprimir(ByVal DataGrid As DataGrid, _
                         ByVal fichero_txt As ADODB.Recordset, _
                         ByVal Titulo As String) As Boolean
    
    Dim c As Integer
    Dim dato As String
    Dim Titles As String
    Dim Header As String
    Dim l As Integer 'number of lines For portrait
    Dim LLCount As Integer 'temporary line counter
    Dim Rowado As Integer
    Dim Rowdatag As Integer
    Dim registro  As String * MAX_CARACTERES
    Dim t As String * MAX_CARACTERES
    
    Screen.MousePointer = vbHourglass
    
    DataGrid1.Row = 0
    Header = " - Página n°: "
    
    For c = 1 To DataGrid.Columns.Count

        t = DataGrid.Columns(c - 1).Caption
        
        Titles = "   " & LTrim(Titles & t) & " "
    Next
    ' Configura la fuente de la impresión para el encabezado
    Printer.Font.Size = 8
    Printer.Font.Bold = True
    Printer.Font.Name = "Courier New"
    
    
    l = 82
    ' imprime el titulo , el encabezado y el número de página
    Printer.Print Space(40) & Titulo
    Printer.Print Header; Printer.Page
    Printer.Print Titles
    Printer.Font.Bold = False
    
    DataGrid.Refresh

    ' recorre los datos del datagrid
    For Rowado = 1 To Int((rs.RecordCount - 1) / 13) + 1


        For Rowdatag = 0 To DataGrid.VisibleRows - 1
            DataGrid.RowBookmark (Rowdatag)
            dato = Space(MAX_CARACTERES)

            Dim s As Variant
            For c = 1 To DataGrid.Columns.Count
            
                registro = DataGrid.Columns(c - 1).CellText(DataGrid.Bookmark)
                
                dato = "   " & LTrim(dato & registro) & " "
            
            Next
            LLCount = LLCount + 1


            If LLCount <= l Then
                
                Printer.Print dato
            Else
                ' Agrega una nueva hoja
                
                Printer.NewPage
                Printer.Print Space(40) & Titulo
                Printer.Print Header; Printer.Page
                Printer.Print Titles
                Printer.Print dato
                LLCount = 0
                
            End If
            rs.MoveNext
        Next Rowdatag
        DataGrid.Scroll 0, DataGrid.VisibleRows
    Next Rowado
    Printer.Print " "
    Printer.EndDoc
    Screen.MousePointer = vbNormal
    
    imprimir = True
    
    Exit Function
    
' error
Error_Function:
    
    MsgBox Err.Description, vbCritical
    
    
End Function
En el Evento Click del Command es donde me genera el Error

Código:
Private Sub Command1_Click()
    
    Call imprimir(DataGrid, rs, "Formato de Impresión") ==== Aqui es el error

End Sub
Bueno muchachos espero contar con su colaboracion y atento a sus respuestas, de antemano les doy las gracias.
  #2 (permalink)  
Antiguo 24/02/2010, 04:18
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Error 424: Objeto requerido (Imprimir Datagrid)

No lo tengo muy claro, pero yo diría que te falta crear el rs.

Private Sub Command1_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs=fichero_txt
Call imprimir(DataGrid, rs, "Formato de Impresión") ==== Aqui es el error
End Sub

Aparte creo que en la declaracion de la función usas la variable fichero_txt y dentro de la funcion usas rs en su lugar, de modo que la declaración debería ser:

Public Function imprimir(ByVal DataGrid As DataGrid, _
ByVal rs As ADODB.Recordset, _
ByVal Titulo As String) As Boolean

Puede que incluso una vez cambiada la declaración, la llamada pueda hacerse así:

Call imprimir(DataGrid, fichero_txt, "Formato de Impresión") ==== Aqui es el error

sin tener que declarar el rs que comentaba al principio

No me hagas mucho caso porque de DB estoy pez, pero ya que nadie dice nada...

Suerte
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 24/02/2010, 17:38
 
Fecha de Ingreso: febrero-2010
Ubicación: Valencia-Venezuela
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Error 424: Objeto requerido (Imprimir Datagrid)

Bro ya consegui la falla no estaba declarando la variable rs en la general aunque si me sirvio bien tu ayuda modifique unas cositas gracias a ti; tengo un error pero lo puedo solucionar yo gracias

Etiquetas: datagrid, objeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:29.