Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ficheros. Grabar en determinada posicion

Estas en el tema de Ficheros. Grabar en determinada posicion en el foro de Visual Basic clásico en Foros del Web. Hola, tras mucho comerme el coco y no encontrar solución me dirijo a ustedes para ver si me pueden prestar su ayuda, les explico, tengo ...
  #1 (permalink)  
Antiguo 27/10/2008, 10:42
Avatar de rulsanchez  
Fecha de Ingreso: octubre-2008
Ubicación: Manchester
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Ficheros. Grabar en determinada posicion

Hola, tras mucho comerme el coco y no encontrar solución me dirijo a ustedes para ver si me pueden prestar su ayuda, les explico, tengo un fichero de texto separado por comas tal que asi:

1,ernesto,garcia,3/4/77
2,pablo,sanz,4/4/88
etc...

cuando grabo o leo de el no hay ningun problema, lo hago asi:
Open archivo For Input As #1

Luego en una matriz guardo los datos y de ahi a unas cajas de texto

y para grabar:
Open archivo For Append As #1
Print #1, txtCodigo.Text; ","; txtNombre.Text; ","; txtApellidos.Text; ","; txtFecha.Text; ","; txtImporte.Text

pero esto me lo graba al final del fichero, ahora quiero hacer una ACTUALIZACION, y queria comparar lo que tengo en la matriz con el fichero y grabarlo en ESA posición, pero no se como hacerlo, siempre me lo graba al final del fichero.
Alguna idea ??
  #2 (permalink)  
Antiguo 27/10/2008, 11:42
 
Fecha de Ingreso: abril-2007
Mensajes: 140
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: Ficheros. Grabar en determinada posicion

Hola RulSanchez, como estas? Creo entender lo que buscas y te digo que los archivos que estas usando son "secuenciales", es decir, se graba un registro atras de otro y se lee un registro atras de otro. No hay posibilidades de grabar un registro en el medio de lo que ya grabaste antes. Tenes otras maneras de hacerlo, por ejemplo usando una tabla de base de datos (access, sqlserver, sql 2000, y mil mas). Lo que si podes hacer es leer el archivo "secuencialmente" y mientras lo comparas con la matriz, y decidis que grabar, grabarlo en otro archivo, es decir, leer de uno, compzrar contra la matriz y grabarlo en otro. espero te sirva y si no decime que lo podemos ver de otra manera. Saludos
  #3 (permalink)  
Antiguo 27/10/2008, 11:57
Avatar de rulsanchez  
Fecha de Ingreso: octubre-2008
Ubicación: Manchester
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Ficheros. Grabar en determinada posicion

Hola Pabloturchi.
En primer lugar muchisimas gracias por tu interés, me has dado una idea genial para hacerlo, voy a intentarlo y te comento si me sale o no ;)
Crucemos los dedos!!
Un saludo compañero :)
  #4 (permalink)  
Antiguo 28/10/2008, 09:35
Avatar de rulsanchez  
Fecha de Ingreso: octubre-2008
Ubicación: Manchester
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 0
Mensaje Respuesta: Ficheros. Grabar en determinada posicion

Hola Pabloturchi...................salió!!!

Te cuento lo que hice (gracias a tu idea):

tengo una caja en donde meto un nº (codigo), compruebo si ese codigo existe ya en el fichero, y entonces:

- si existe: meto en la matriz, y en la posicion del nº (codigo) las cajas de texto

- si no existe: es un registro nuevo, asi que redimensiono la matriz (uno mas) y meto en la matriz y en la ultima posicion el registro.

Despues de esto abro el archivo con output para machacar lo que habia (tengo todo guardado en la matriz) y con el print lo voy metiendo, esto es, machaco lo anterior y meto lo nuevo.
En codigo es asi:

If codigoigual = False Then

ReDim Preserve strRecogerCadena(1 To UBound(strRecogerCadena) + 1) As String
strRecogerCadena(UBound(strRecogerCadena)) = txtCodigo.Text & "," & txtNombre.Text & "," & txtApellidos.Text & "," & txtFecha.Text & "," & txtImporte.Text

Else

strRecogerCadena(Val(txtCodigo.Text)) = txtCodigo.Text & "," & txtNombre.Text & "," & txtApellidos.Text & "," & txtFecha.Text & "," & txtImporte.Text

End If


Close #1
Open archivo For Output As #1

For i = 1 To UBound(strRecogerCadena)
Print #1, strRecogerCadena(i)
Next i
MsgBox "Registro guardado con éxito", vbInformation + vbOKOnly, "Guardado"



Gracias por tu ayuda, sin ti no hubiera tenido la idea
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 00:11.