SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Visual Basic para principiantes => Mensaje iniciado por: ARMANDO80 en Lunes 9 de Enero de 2012, 14:00

Título: Crear txt
Publicado por: ARMANDO80 en Lunes 9 de Enero de 2012, 14:00
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.
Título: Re:Crear txt
Publicado por: RHL en Lunes 9 de Enero de 2012, 20:01
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.  
Título: Re:Crear txt
Publicado por: ARMANDO80 en Lunes 9 de Enero de 2012, 20:18
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.
Título: Re:Crear txt
Publicado por: RHL en Lunes 9 de Enero de 2012, 20:25
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
Título: Re:Crear txt
Publicado por: ARMANDO80 en Martes 10 de Enero de 2012, 15:33
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




Título: Re:Crear txt
Publicado por: ARMANDO80 en Martes 10 de Enero de 2012, 20:54
Gracias por  la ayuda ya logre solucionar, si era lo que me dijiste pero con otra instruccion

strRow = Trim(strRow) & " " & c