• Viernes 29 de Marzo de 2024, 13:31

Autor Tema:  Crear txt  (Leído 1680 veces)

ARMANDO80

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Crear txt
« en: Martes 13 de Diciembre de 2011, 14:51 »
0
Buenos días tengo un problema estoy haciendo un txt pero tengo un error  el codigo me corre perfectamente este es el codigo:

Private Sub Command1_Click()
'este data actualiza el dbgrid
Data1.Refresh
With Data
    .RecordSource = "SELECT * FROM APORTE_MENSUAL"
    .Refresh
    If .Recordset.RecordCount > 0 Then
        .Recordset.MoveLast
        .Recordset.MoveFirst
        While Not (.Recordset.EOF)
            .Recordset.Edit
                For i = 0 To 6
                    If .Recordset.Fields(i) <> "" Then
                        .Recordset.Fields(0) = Trim(.Recordset.Fields(0)) & " "
                        .Recordset.Fields(1) = Trim(.Recordset.Fields(1)) & " "
                        .Recordset.Fields(2) = Trim(.Recordset.Fields(2)) & "  "
                        .Recordset.Fields(3) = Trim(.Recordset.Fields(3)) & " "
                        .Recordset.Fields(4) = Trim(.Recordset.Fields(4)) & " "
                        .Recordset.Fields(5) = Trim(.Recordset.Fields(5)) & " "
                        .Recordset.Fields(6) = Trim(.Recordset.Fields(6)) & " "
                       
                   
                   Else
                   .Recordset.Fields(i) = " "
                 
                    End If
               Next i
            .Recordset.Update
            .Recordset.MoveNext
        Wend
     
    End If
End With
Call Generartxtnomina(Data)
End Sub
Public Sub Generartxtnomina(Data As Data)
Dim linea, c As String
   Dim strRow As String
   Dim strField As String
   Dim tamaño As Integer
   Open "C:\FIDEICOMISO\APORTE.txt" For Output As #1
    Data.RecordSource = "SELECT * FROM APORTE_MENSUAL"
'**********************************************************
'ORDENA LOS  DATOS POR FECHA DE INGRESO EN TXT
    Data.RecordSource = "SELECT * FROM aporte_mensual order by FECHA_INGRESO  asc"
'**********************************************************
   Data.Refresh
   With Data.Recordset
      .MoveFirst
      Do While Not .EOF
         For i = 0 To 4
            ' Si un campo tiene un valor, agrega comillas.
            If Len(.Fields(i)) > 0 Then
               
                strRow = strRow & .Fields(i)
                Debug.Print Len(strRow)
            Else
               strField = " "
            End If
            ' Agrega el valor del campo y un delimitador de tabulación
            ' a la cadena de salida.
         Next
       
         '-------ESTE CODIGO PERMITE COLOCAR NOMBRE 20 PARA QUE SE UBIQUE EL APELLIDO---------------------------
          c = concatenar(Data.Recordset.Fields(5), " ", 20)
          strRow = Trim(strRow) & c
         c = concatenar(Data.Recordset.Fields(6), " ", 20)
         strRow = strRow & c
     
         '************************************************************
      Print #1, strRow
salta:
         strRow = " "
      .MoveNext
      Loop
   End With
   
   Close
   Data.Refresh
   MsgBox "Archivo Generado con Exito", vbInformation + vbOKOnly, "Validación"

End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Data1.RecordSource = "SELECT * FROM aporte_mensual order by FECHA_INGRESO  asc"
    Data1.Refresh
    DBGrid1.Refresh
End Sub
Private Function concatenar(cadena As String, caracter As String, longitud As Integer) As String
Dim l As Integer
'cadena = Trim(cadena)
 'l = Len(Trim(cadena))
 'For i = l To longitud - 1
  '  cadena = cadena & caracter
 'Next i
 'concatenar = cadena
 'es otra manera de concatenar
concatenar = Left$(Trim$(cadena) & String(longitud, caracter), longitud)
End Function

me da este txt

V0004736880 000000000134142 C  000 01082428160200020603José Lucidio        Alvarado Herrera   
V0007358451 000000000511645 C  000 01082428190100015572Luís Alberto        González Herrera 

necesito que el numero de cuenta y el nombre quede separado por un espacio, si alguien me puede ayudar se lo agradesco