Visual Basic - problema archivo random!

Life is soft - evento anual de software empresarial
 
Vista:

problema archivo random!

Publicado por Rexixtente (10 intervenciones) el 27/07/2007 17:51:04
buenas, estoy empezando a manejar archivos y tengo algunos problemas con el manejo de archivos aleatorios...

lo que pasa es que no se realmente si el archivo me guarda o tengo problemas al querer visualizarlo...

de todas maneras dejaré el code y ojala puedan ver que problemas puedo tener....

Option Explicit
Dim k As Integer

Private Type registro
nombre As String
telefono As String
End Type
Private andres As registro

Private Sub cmdGuardar_Click()
k = k + 1
Dim size, mensaje As String
size = Len(andres)
Open "C:\registro.txt" For Random As #1 Len = size
Put #1, k, size
Close #1
txtNombre.Text = ""
txtTel.Text = ""
txtNombre.SetFocus
mensaje = MsgBox("REGISTRO GUARDADO CORRECTAMENTE", 0 + 0 + vbInformation)
End Sub

Private Sub cmdVer_Click()
Dim size As String
size = Len(andres)
Open "C:\registro.txt" For Random As #1 Len = size
Get #1, 1, size
With andres
txtVerRegistro.Text = "nombre: " & .nombre & vbCrLf & "telefono: " & .telefono
End With
Close #1
End Sub

Private Sub Form_Load()
k = 0
End Sub

Private Sub txtNombre_LostFocus()
With andres
.nombre = txtNombre.Text
End With
End Sub

Private Sub txtTel_LostFocus()
With andres
.telefono = txtTel.Text
End With
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema archivo random!

Publicado por Malandrin (2 intervenciones) el 27/07/2007 18:49:35
Mira, en el evento Load tienes
K = 0
Cuando grabas, tienes: k = k + 1
Y veo que usas la variable K en la instrucción Put para indicarle qué registro guardar. Aquí en este momento la variable K tendrá el valor 1, la siguiente vez que grabes será 2, y así, HASTA QUE CIERRES EL FORMULARIO.

Cuando lo vuelvas a abrir, otra vez se inicializará en 0 ( k = 0), y volverá a empezar.
Si lo que quieres es que se vayan agregando registros, la manera en que lo haces está mal, porque siempre volverá a grabar en los primeros registros, no respetará los que ya están.
Si quieres que se vayan agregando, podrías hacer algo así, como obtener cuantos registros ya están grabados y sumarle uno a este valor.
El tamaño del archivo entre el tamaño de tu registro, más 1.
k = LOF(1) / Len(andres) +1

Y en el procedimiento para ver el registro, tienes:
Get #1, 1, size
O sea, que SIEMPRE LEES EL REGISTRO 1, nada más. ¿cuál es la razón?
Supongo que aquí deberías leer el registro que se solicite, y para ello podrías usar una variable que contenga el número pedido:
Get #1, NumeroDeRegistro, size
o algo así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema archivo random!

Publicado por Rexixtente (10 intervenciones) el 27/07/2007 20:09:44
bueno, te agradezco mucho por tu respuesta...

la verdad es que cuando utilizo el Get #1, 1,size

es que realmente quiero leer el primer registro de forma manual.... pero no lo HACE!!! no me aparece absolutamente nada

y esto: k = LOF(1) / Len(andres) +1 realmente que no lo sabia hacer y me sera muy util cuando logre al fin guardar o visualizar algun registro porque como ya dije no se si tengo problemas al guardar o al visualizar.

porque como lo ven aunque no esta bien programado por el problema que tu mencionas al menos deberia guardar un registro.

un saludo y espero mas recomendaciones..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema archivo random!

Publicado por Malandrin (2 intervenciones) el 27/07/2007 20:36:01
Acabo de ver otro detalle, así estás tratando de grabar:
Put #1, k, size
pero "size" tiene la longitud de tu registro o tipo definido, en este caso deberías usar "andres" (siempre y cuando te asegures de que tenga datos ya):
Put #1, k, andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar