Imprimir página | Cerrar ventana

Visual Basic 6 y archivos aleatorios

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=87092
Fecha de impresión: 26/Marzo/2026 a las 13:27


Tema: Visual Basic 6 y archivos aleatorios
Publicado por: Edge
Asunto: Visual Basic 6 y archivos aleatorios
Fecha de publicación: 31/Agosto/2025 a las 05:03
Buenas!!! como andan?? disculpen las molestias pero les hago la siguiente consulta. Estoy haciendo un proyecto en Visual Basic 6 y archivos aleatorios. Cuestion de que, a la hora de hacer una busqueda, me figura que no existe el registro y se que esta dicho registro. Adjunto el codigo que estoy usando, son 6 datos: documento, nombre, apellido, direccion, telefonos y notas. La idea es que busque por documento!! desde ya, muchisimas gracias.

Codigo usado de busqueda:
Dim Encontrado As Boolean, PosReg As Long
  
If Txtbuscar = "" Then Txtnombre.SetFocus: Exit Sub
  
Encontrado = False
  
'Recorremos desde el primer hasta el último en busca del registro a buscar
  
For PosReg = 1 To RegUltimo
  
'Leemos el registro
Get #1, PosReg, contacto
  
'Si es el dato es igual salimos del bucle
If UCase(Txtbuscar) = UCase(Trim(T_contacto)) Then
    Encontrado = True
    Exit For
End If
  
Next
  
If Encontrado Then
      
    RegActual = PosReg
    'Cargamos los datos en los text
    VisualizarDatos
  
Else
    MsgBox "DNI: " & Txtbuscar & " No se ha encontrado el registro"
End If
Txtnombre.SetFocus
  
End Sub

Private Sub VisualizarDatos()
  
'Lee del fichero en el registro posicionado y almacena los datos_ _
en la la variable UDT
Get #1, RegActual, contacto
  
' Mostramos los datos en las cajas de texto
With Datos
    Txtdocumento = Trim(.Documento)
    Txtnombre = Trim(.Nombre)
    Txtapellido = Trim(.Apellido)
    Txtdireccion = Trim(.Direccion)
    Txttelefono = Trim(.Telefono)
    Txtnotas.Text = Trim(.Notas)
End With
  
'Mostramos en el control Label la posición del registro actual _
y la cantidad  o Total de registros que hay en el archivo
LblStatus.Caption = "Registro Actual: " & CStr(RegActual) & vbNewLine _
                    & " Total de registros: " & CStr(RegUltimo)
  
End Sub



-------------
JME



Respuestas:
Publicado por: xavi
Fecha de publicación: 04/Septiembre/2025 a las 09:34
Hola,

Y el problema, exactamente, ¿Cuál es?

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Edge
Fecha de publicación: 05/Septiembre/2025 a las 00:52
Hola, si lees bien, el problema radica en que usando ese codigo para que busque un registro existente y lo cargue en el textbox correspondiente, me aparece un msgbox diciendo que no existe el registro cuando se que esta cargado. Saludos

-------------
JME


Publicado por: xavi
Fecha de publicación: 05/Septiembre/2025 a las 10:54
Hola,

He leído bien el mensaje y varias veces, gracias. Lo que me costó de pillar fue la expresión "me figura que no existe el registro y se que esta dicho registro". Tal como lo has explicado ahora está mucho más claro.

La única forma de que aparezca el mensaje es cuando la variable Encontrado es False. 
Para que sea False la condición dónde comparas el Txtbuscar con t_contacto debe ser falso
Para que se ejecute esa condición debe estar dentro del bucle For..Next
Para que se entre en ese bucle la variable RegUltimo debe tener valor (cosa que no veo)

Te recomiendo poner un punto de interrupción y ejecutar paso a paso por instrucciones para ver si cada línea hace lo que esperas que haga.

Mis sospechas son:
- RegUltimo no tiene valor --> no ejecuta bucle --> Encontrado = False --> MsgBox
- El valor que buscas no existe en realidad
- El valor está escrito de forma ligeramente distintas (acentos, espacios)

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Edge
Fecha de publicación: 05/Septiembre/2025 a las 19:15
Hola Xavi, mil disculpas por mi forma de hablar. Te explico, tenemos una forma (pesima diria) de hablar en la que creemos (soberbia pura) que esta por sobreentendido como nos expersamos nosotros por todo aquel de habla española/latina/neutra o como quieras denominarla, cuando en realidad nos deberíamos poner primero en el lugar del otro. Mas aún por una "locura" interna que me tiene a mal traer desde hace tiempo sin poder solucionar que el botón o comando de busqueda funcione, siendo el único que me falta para terminar. Asi que, me disculpo de antemano por mi exabrupto. Intentare de la forma que decis. Desde ya, mil disculpas por todo, muchas gracias por tu tiempo, por tu respuesta y un abrazo enorme

-------------
JME



Imprimir página | Cerrar ventana