Autor
|
Tema: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro (Leído 5,046 veces)
|
agmen
Desconectado
Mensajes: 17
|
Hola, tengo un problema.. necesito recorrer un txt llamado base.txt con los siguientes datos 1000000CARMEN ROSA ALVAREZ 10 0 46600 020100830 1000001JOSE LUIS VALDEZ CHOQUE 10 14500 5002010072820100728 1000002MIGUELINA NAVARRO TAPIA 20 0 27200 020100830 1000003MARIA ARANCIBIA 40 0 17000 020100830 si el valor despues del nombre es 10 debe copiar la linea completa con el mismo formato y crear un txt nuevo con los registros que solo contengan el valor 10. asi para los con valores 20 y 40 ejemplo del txt nuevo nuevo10.txt 000000CARMEN ROSA ALVAREZ 10 0 46600 020100830 1000001JOSE LUIS VALDEZ CHOQUE 10 14500 5002010072820100728 nuevo20.txt 1000002MIGUELINA NAVARRO TAPIA 20 0 27200 020100830 nuevo40.txt 1000003MARIA ARANCIBIA 40 0 17000 020100830 espero me puedan ayudar PD.: los registros son de largo fijo Gracias
|
|
« Última modificación: 22 Septiembre 2010, 22:04 pm por agmen »
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Se me ocurre: *Quitas los dobles espacios hasta dejarlo con solo uno de separacion. *Usas Split utilizando el espacio como delimitador y dependiendo del numero que haya lo guardas en uno o otro archivo... DoEvents!
|
|
|
En línea
|
|
|
|
Elemental Code
Desconectado
Mensajes: 622
Im beyond the system
|
1000000CARMEN ROSA ALVAREZ |10 | 0 | 46600 020100830 1000001JOSE LUIS VALDEZ CHOQUE |10 | 14500 | 5002010072820100728 1000002MIGUELINA NAVARRO TAPIA |20 | 0 | 27200 020100830 1000003MARIA ARANCIBIA |40 | 0 | 17000 020100830
escribilo asi. usa el comando split con | como separador y usa trim para sacarle los espacios. Entendes?
|
|
|
En línea
|
I CODE FOR $$$ Programo por $$$ Hago tareas, trabajos para la facultad, lo que sea en VB6.0 Mis programas
|
|
|
Sanlegas
Desconectado
Mensajes: 131
https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-
|
aca te dejo un ejemplo Dim N As Integer Dim I As String Dim Partes() As String
I = "1000000CARMEN ROSA ALVAREZ 10 0 46600 020100830"
Do While InStr(I, " ") ' mientras haya mas de dos espacios I = Replace$(I, " ", " ") ' los eliminamos Loop
MsgBox I ' mostramos la cadena ya sin dobles espacios
Partes() = Split(I, " ") ' la partimos por un espacio
For N = UBound(Partes()) To 1 Step -1 MsgBox Partes(N) ' mostramos todas las partes Next
ya tu lo modificas a tus necesidades
|
|
« Última modificación: 23 Septiembre 2010, 06:57 am por Tenient101 »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Antes que nada me podrias dejar un ejemplo de tu TXT PARA DESCARGAR quiero ver el formato...!¡. OTRAS cosas, POuedes dejar X cantidad de espacios entre "CALUMNAS" o usar Tabulaciones, asi sabras que estas leyendo en X Columna mas facil y sin complicarte la Vida... Bueno solo suponiendo... Si es 10 entonces se me ocurre hacer algo asi... (Quedaria mejor con vbtab que espacios...) Option Explicit Option Base 0 Private Sub Form_Load() Dim Str_RetArrayList$() Dim Li& Const StrFile$ = "C:\aaa.txt" Str_RetArrayList$() = Get_DataLineFromFile(StrFile) If (Not Str_RetArrayList$()) = -1 Then Exit Sub For Li& = LBound(Str_RetArrayList$()) To UBound(Str_RetArrayList$()) 'If InStr(1, Str_RetArrayList$(li&), vbtab & "10" & vbtab ) > 0 Then If InStr(1, Str_RetArrayList$(Li&), " 10 ") > 0 Then MsgBox "Se exporta la linea " & Li& + 1 End If Next End Sub ' // Este metodo usara basta cantidad de Memoria... sería mejor un Do ... Loop y leyendo linea a linea y evaluarla... Public Function Get_DataLineFromFile(ByVal StrFile As String) As String() Dim TmpStrLine$, Lff% If Dir(StrFile, vbArchive) = "" Then Exit Function If Not GetAttr(StrFile) = vbArchive Then Exit Function Lff% = FileSystem.FreeFile% Open StrFile For Binary As Lff% TmpStrLine$ = Space$(LOF(Lff%)) Get Lff%, , TmpStrLine$ Close Lff% Get_DataLineFromFile = Split(TmpStrLine$, vbNewLine) End Function
NOTA: Estructura mas el formato... Dulce Infierno Lunar!¡.
|
|
« Última modificación: 23 Septiembre 2010, 07:21 am por BlackZeroX »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Una pregunta, todos los registros son del mismo largo? o todos los que terminan en el mismo archivo terminan con el mismo largo?
Las columnas son de ancho fijo? si es asi con simples Mid se arreglan, sino, ya te dieron un par de soluciones
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Mira, segun lo que lei estan con ancho fijo las columnas entonces, suponiendo que "caracter inicio" es el numero donde se escribe el 10 el 20 el 30 o el 40: Dim a As String Open App.Path & "\base.txt" For Input As #1 Do Until EOF(1) Input #1, a If Mid(a, "caracter inicio", 2) = "10" Then 'GUARDA EN NUEVO10.TXT ElseIf Mid(a, "caracter inicio", 2) = "20" Then 'GUARDA EN NUEVO20.TXT ElseIf Mid(a, "caracter inicio", 2) = "30" Then 'GUARDA EN NUEVO30.TXT ElseIf Mid(a, "caracter inicio", 2) = "40" Then 'GUARDA EN NUEVO40.TXT End If Loop Close #1
GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
agmen
Desconectado
Mensajes: 17
|
GRACIAS A TODOS los que escribieron XD, hoy entre solamente a escribir el codigo fuente con el cual resolvi elproblema
Private Sub Command1_Click() ' Esta variable contendrá el path del archivo que queremos acceder Dim Archivo As String ' Linea almacenará los datos del archivo "Historia.txt" Dim Linea As String ' Asignamos a la variable Archivo la ruta correcta. El objeto _ App.Path nos devuelve el directorio donde se encuentra nuesta _ aplicación. Luego le agregamos la barra invertida y el nombre _ del archivo.
'Archivo = App.Path & "\" & "Historia.txt" Archivo = App.Path & "\" & "Historia.txt"
' Abrimos el archivo con la variable Archivo, y como el acceso será de lectura _ utilizamos el modo Input seguido del número de archivo "#1" Open Archivo For Input As #1
' Creamos un bucle para controlar que después de llegar al final del archivo _ la sentencia Input, no continue leyendo y se produzca un error en tiempo de eje _ cucíon. Para ello utilizamos la condición Not EoF(1), que traducido quiere decir _ mientras no llegue al final del archivo, que continúe leyendo línea por línea. _ ' Dentro del bucle asignamos al control Text1 el valor de la variable Linea mas _ el contenido que ya estaba guardado en el text box, Por que de lo contrario, el text Box _ solo mostraría el último contenido de la variable "Linea" Dim tipo As String
While Not EOF(1) Line Input #1, Linea tipo = Mid$(Linea, 78, 2) Select Case tipo Case "10" EscriveLog Linea, "archivo10" Case "20" EscriveLog Linea, "archivo20" Case "30" EscriveLog Linea, "archivo30" Case "40" EscriveLog Linea, "archivo40" Case "50" EscriveLog Linea, "archivo5060" Case "60" EscriveLog Linea, "archivo5060" Case "70" EscriveLog Linea, "archivo70" End Select
Wend
' Cerramos el archivo Close #1
End Sub
Public Function EscriveLog(ByRef Texto As String, ByRef tipo As String) ', ByRef xTipo As Byte) Dim strFile As String Dim fn As Long Dim strLog As String strFile = App.Path & "\" & tipo & ".txt" fn = FreeFile strLog = Texto Open strFile For Append As fn Print #fn, strLog Close fn End Function
GRACIAS DE TODAS MANERAS XD
|
|
|
En línea
|
|
|
|
seba123neo
|
como te dijeron si las columnas son de ancho fijo, con un simple mid vas sacando los campos correspondiente.
otra opcion es crearte un schema.ini con la estrucutura de los campos del .txt y con el driver de texto de windows, podes hacer SELECT como si fuera una tabla de base de datos...
saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Batch] Crear varios txt a partir de otro txt [Solucionado]
Scripting
|
bjeli1980
|
8
|
15,915
|
20 Septiembre 2012, 05:45 am
por Eleкtro
|
|
|
¿Como recuperar un dato de varios divs haciendo Click ? - javascript - Jquey
« 1 2 »
Desarrollo Web
|
Lupin
|
14
|
8,194
|
31 Mayo 2011, 23:42 pm
por Lupin
|
|
|
Crear link con dato de un registro de una bd
« 1 2 3 4 »
PHP
|
Brian1511
|
30
|
9,047
|
25 Julio 2013, 19:29 pm
por EFEX
|
|
|
Ayuda crear varios archivo bat a partir de un solo bat
Scripting
|
ADV
|
2
|
2,471
|
5 Marzo 2017, 22:14 pm
por ADV
|
|
|
Cambiar un valor de un dato en un Jframe desde un internalframe
Java
|
meaf75
|
0
|
2,107
|
12 Agosto 2017, 21:01 pm
por meaf75
|
|