Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2009, 00:17
proteo1
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigüedad: 15 años, 7 meses
Puntos: 0
Ayuda con una linea ya para terminar

Hola como estan, bueno lo qie traigo es un problema que ya tengo como 1 mes y no he dado con la solucion y es una sola linea.

Bueno el proyecto consta de abrir un DataReport enviando los datos desde un Grid1, pero sin usar una tabla, les dejo el codigo del proyecto.
el cual ocupa los siguientes objetos command1, command2, y un Msflexgrid1

Aqui el codigo del Form_Load
Código:
Private Sub Form_Load()
 Dim Tempo As Integer
 Dim Otro As Integer
 Grid1.FormatString = "No.|Nombre|Apellido paterno|Apellido materno"
 For Tempo = 0 To 10
  Grid1.AddItem "No." + Str(Tempo) + vbTab + "Nombre" + Str(Tempo) + vbTab + "Apellido paterno" + Str(Tempo) + vbTab + "Apellido materno" + Str(Tempo)
 Next Tempo
 Grid1.RemoveItem 1
End Sub
Les dejo el codigo del command1 (el cual funciona muy bien)
Código:
Private Sub Command1_Click()
 On Error GoTo ErrSub
 Dim El_Recordset As Recordset ' Variable para el recordset
 Set El_Recordset = New Recordset ' Nuevo objeto Recordset desconectado
 With El_Recordset.Fields ' Crea cuatro campos, tres de tipo String y uno de tipo Date
  .Append "Nombre", adVarChar, 50
  .Append "Apellido", adVarChar, 50
  .Append "Localidad", adVarChar, 50
  .Append "Fecha", adDate
 End With
    ' Abre el recorset para poder agregar datos
    El_Recordset.Open
    ' Agrega valores al recordset, es decir a los campos
    '********************************************************************
    With El_Recordset
       
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Carlos", "Perez", "Mar del plata", "02/02/1988")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Maria", "Suares", "Buenos aires", "13/02/1997")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Pedro", "Villegas", "Comodoro", "22/11/1981")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Juan Martín", "Molina", "Bahia Blanca", "02/02/1988")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Jimena", "Solis", "Carlos paz", "03/15/1982")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Rosario", "Rodrigues", "Gualeguaychu", "10/05/1985")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Juan Pablo", "Perez", "Santa Fe", "24/04/1987")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> Federico", "García", "Iguazú", "06/08/1988")
           
        .AddNew Array("Nombre", "Apellido", "Localidad", "Fecha"), _
                Array("> José", "Hernandez", "La plata", "25/12/2002")
       
    End With
    '********************************************************************
       
    ' Asigna el recordset como fuente de datos del DataReport
    Set DataReport1.DataSource = El_Recordset
       
    '  Carga y muestra el Datareport
    DataReport1.Show
       
    'Cierra el recorset
    If Not El_Recordset.State = adStateOpen Then
        El_Recordset.Close
    End If
       
    'Elimina la variable del recordsert
    If Not El_Recordset Is Nothing Then
        Set El_Recordset = Nothing
    End If
  
Exit Sub
  
' Error
ErrSub:
  
MsgBox " Número de error: " & Err.Number & vbNewLine & _
       Err.Description, vbCritical

End Sub
Aca el codigo del command2 (que es donde me manda el error)
Código:
Private Sub Command2_Click()
 ImprimeGrid Grid1, DataReport1
End Sub
y Aca la funcion a la cual se hace referencia
Código:
Private Function ImprimeGrid(xGrid As MSFlexGrid, xReport As DataReport)
 'On Error GoTo ErrSub
 Dim Tempo As Integer
 Dim Otro As Integer
 Dim Encabezado() As String
 Dim Campo() As String
 Dim Encabezados As String
 Dim Campos As String
 Dim Indice As Integer
 Dim Espacio As Integer
 Dim El_Recordset As Recordset 'Variable para el recordset
 Set El_Recordset = New Recordset 'Nuevo objeto Recordset desconectado
 Indice = 0
 For Tempo = 0 To xGrid.Cols - 1
  If xGrid.ColWidth(Tempo) > 0 Then Indice = Indice + 1
 Next Tempo
 ReDim Encabezado(0 To Indice - 1)
 ReDim Campo(0 To Indice - 1)
 Encabezados = ""
  
 With El_Recordset.Fields 'Crea los campos, de tipo String, con tamaño variable
  Indice = 0
  For Tempo = 0 To xGrid.Cols - 1
   If xGrid.ColWidth(Tempo) > 0 Then
   Espacio = 0
    For Otro = 1 To xGrid.Rows - 1
     If Espacio < Len(xGrid.TextMatrix(Otro, Tempo)) Then Espacio = Len(xGrid.TextMatrix(Otro, Tempo)) + 2
    Next Otro
    Encabezado(Indice) = Trim(Replace(Replace(xGrid.TextMatrix(0, Tempo), ".", ""), " ", "")) + vbNullString
    '.Append Encabezado(Indice), adVarChar, Espacio
    .Append Encabezado(Indice), adVarChar, Espacio + 2
    Indice = Indice + 1
   End If
   If Encabezados <> "" Then Encabezados = Encabezados + ", "
   Encabezados = Encabezados + """" + Encabezado(Indice - 1) + """"
  Next Tempo
  'Encabezados = Encabezados + vbNullString
  'MsgBox "_" + Encabezados + "_"
  'Encabezados = Replace(Encabezados, """""", """")
  'MsgBox "_" + Encabezados + "_"
  
 End With
 
  El_Recordset.Open  'Abre el recorset para poder agregar datos
  
 '********************************************************************
 With El_Recordset 'Agrega valores al recordset, es decir a los campos
  For Tempo = 1 To xGrid.Rows - 1
   If xGrid.ColWidth(0) > 0 Then
    Indice = 0
    Campos = ""
    For Otro = 0 To xGrid.Cols - 1
     If Campos <> "" Then Campos = Campos + ", "
     Campos = Campos + """" + Trim(Grid1.TextMatrix(Tempo, Otro)) + " " + vbNullString + """"
     'Campo(Indice) = Trim(xGrid.TextMatrix(Tempo, Otro)) + vbNullString
     'If Indice = 1 Then Campo(Indice) = ">" + Campo(Indice)
     'Indice = Indice + 1
    Next Otro
    
    .AddNew Array(Encabezados), Array(Campos)
    
   End If
  Next Tempo
 End With
 '********************************************************************
 Set DataReport1.DataSource = El_Recordset 'Asigna el recordset como fuente de datos del DataReport
 
 DataReport1.Orientation = rptOrientLandscape 'Alinea la orientacion de la pagina
 DataReport1.Show 'Carga y muestra el Datareport
    
 If Not El_Recordset.State = adStateOpen Then El_Recordset.Close 'Cierra el recorset
 If Not El_Recordset Is Nothing Then Set El_Recordset = Nothing 'Elimina la variable del recordsert
 Exit Function

ErrSub: ' Error
 MsgBox "Número de error: " & Err.Number & vbCrLf & Err.Description, vbCritical
End Function


Segun eso es para generar una tabla, y mandarla al DataReport sin tener que pasar por una tabla, ya que todo el proceso de ordenamiento y demas cosas se haria en el grid ;)

de antemando agradesco su valiosa ayuda.