Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con una linea ya para terminar

Estas en el tema de Ayuda con una linea ya para terminar en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/06/2009, 00:17
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigüedad: 14 años, 11 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.
  #2 (permalink)  
Antiguo 02/06/2009, 05:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 6 meses
Puntos: 2658
Respuesta: Ayuda con una linea ya para terminar

Me parece que te has equivocado de foro. Revisando lo que has puesto, no hay ni una línea de SQL en todo eso, y esta es la sección de Bases de Datos, no de Visual Basic.
Si no interactúas con la base directamente, entonces no tiene ninguna relación con lo que trata este foro.
Postea en el foro adecuado para que recibas ayuda de la gente apropiada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/06/2009, 18:50
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Ayuda con una linea ya para terminar

Viendolo vien tienes razon, es que esto me trae vuelto loco.

algun moderador me puede hacer el favor de moverlo al foro de Visual Basic, por favor para no duplicar el Post


Gracias de antemano.
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 14:34.