• Jueves 28 de Marzo de 2024, 12:07

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

ARMANDO80

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Crear txt
« en: Lunes 9 de Enero de 2012, 14:00 »
0
Buenos Dias, necesito realizar  un  txt, el cual debe quedar de la siguiente  manera:

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

de  ante mano agradezco la ayuda que me puedan  brindar.

RHL

  • Nuevo Miembro
  • *
  • Mensajes: 23
  • Nacionalidad: 00
  • In the Inside...
    • Ver Perfil
Re:Crear txt
« Respuesta #1 en: Lunes 9 de Enero de 2012, 20:01 »
0
asi:


Código: Visual Basic
  1. Dim f           As Long
  2.  
  3.     f = FreeFile
  4.     Open RUTA & "\FILE.txt" For Output As #f
  5.         Print #f, "V0004736880 000000000134142 C  000 01082428160200020603 José Lucidio        ,Alvarado Herrera" & vbCrLf & _
  6.                   "V0007358451 000000000511645 C  000 01082428190100015572 Luís Alberto        ,González Herrera"
  7.     Close #f
  8.  

ARMANDO80

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re:Crear txt
« Respuesta #2 en: Lunes 9 de Enero de 2012, 20:18 »
0
no entendi lo que colocaste, te explico yo ya tengo este codigo que me corre perfecto lo unico es que uno de los campo me
queda pegado.

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

con este codigo me genera el txt de esta manera

V0003863512 000000000203061 C  000 01082428120200123801Alirio José         ,Romero Colmenárez

lo que necesito es que no me quede pegado el numero de cuenta con el nombre, necesito que tenga un espacio.

RHL

  • Nuevo Miembro
  • *
  • Mensajes: 23
  • Nacionalidad: 00
  • In the Inside...
    • Ver Perfil
Re:Crear txt
« Respuesta #3 en: Lunes 9 de Enero de 2012, 20:25 »
0
Si tuviera los valores exactos de las variables que ocupas podria decirte exactamente adonde va el espacio, pero
creo que es aqui:

strRow = strRow & c

osea se asi asi:

strRow = strRow & " " & c

ARMANDO80

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re:Crear txt
« Respuesta #4 en: Martes 10 de Enero de 2012, 15:33 »
0
si es como me dices lo que pasa q m agarra punto coma etc, menos el espacio en blanco, te exlpico mejor.

lo coloco asi
c = concatenar(Data.Recordset.Fields(4), " ", 20)
         strRow = strRow & ","
me genera el txt asi:

V0004736880 000000000134142 C  000 01082428160200020603 ,José Lucidio        ,Alvarado Herrera   
V0007358451 000000000511645 C  000 01082428190100015572 ,Luís Alberto        ,González Herrera 
me da el espacio pero me aparece la coma.

si lo coloco con asi me queda igual sin el espacio
c = concatenar(Data.Recordset.Fields(4), " ", 20)
         strRow = strRow & " "

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

que estoy  haciendo mal





ARMANDO80

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re:Crear txt
« Respuesta #5 en: Martes 10 de Enero de 2012, 20:54 »
0
Gracias por  la ayuda ya logre solucionar, si era lo que me dijiste pero con otra instruccion

strRow = Trim(strRow) & " " & c