Jueves 14 de Noviembre de 2024, 16:46
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Archivos Secuenciales
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Archivos Secuenciales (Leído 2435 veces)
sircuit
Miembro activo
Mensajes: 31
Archivos Secuenciales
«
en:
Domingo 6 de Febrero de 2005, 17:44 »
0
Si yo de nuevo
hehe
saben que estaba aprendiendo a como hacer una mini agenda de manera que lea, escriba y borre (traspase) datos...
en fin... todo bien salvo la parte de lea o buscar datos por que al principio no hubo problema pero quise ponerle unos msgox para que se vea mejor que creo que tengo un problema con la estruccturacion de codigo ya que despues de leer los datos, si el text correspondiente a buscar es igual aa la variable que me ponga los datos, de lo contrario que me salga otro msgbox que me diga que no fueron encontrado... resulta que, apesar de que los encontro igual me tira la estrucctura del else lo cual no debiera ocurrir
miren:
Código: Text
Private Sub Command1_Click()
Dim conf As Integer
Open App.Path & "\datos.dat" For Input As 1
Do While Not EOF(1)
Input #1, namec
Input #1, direc
Input #1, telc
Input #1, emc
Input #1, comc
If Text6.Text = namec Then
Text1.Text = namec
Text2.Text = direc
Text3.Text = telc
Text4.Text = emc
Text5.Text = comc
MsgBox "La ficha de " & Text6.Text & " ha sido encontrada", vbInformation + vbOKOnly, "Información"
Else
Call huhu
End If
Loop
Close #1
End Sub
Private Sub huhu()
conf = MsgBox("La ficha de " & Text6.Text & " no ha sido encontrada." + vbCrLf + "Desea realizar una nueva busqueda ?", vbQuestion + vbYesNo, "Información")
If conf = vbYes Then
Text6.Text = ""
Text6.SetFocus
End If
End Sub
espero que me puedan ayudar a identificar la parte erronea.
salu2
Tweet
Jose Arriagada
Miembro MUY activo
Mensajes: 373
Re: Archivos Secuenciales
«
Respuesta #1 en:
Lunes 7 de Febrero de 2005, 13:37 »
0
Lo que ocurre es que tienes un loop sin una condicion de termino en caso que encuentres lo que buscas.
Private Sub Command1_Click()
Dim conf As Integer
DIM FLAG AS INTEGER
FLAG=1
Open App.Path & "\datos.dat" For Input As 1
Do While Not EOF(1) AND FLAG=1
Input #1, namec
Input #1, direc
Input #1, telc
Input #1, emc
Input #1, comc
If Text6.Text = namec Then
FLAG=0
Text1.Text = namec
Text2.Text = direc
Text3.Text = telc
Text4.Text = emc
Text5.Text = comc
MsgBox "La ficha de " & Text6.Text & " ha sido encontrada", vbInformation + vbOKOnly, "Información"
Else
Call huhu
End If
Loop
Close #1
End Sub
sircuit
Miembro activo
Mensajes: 31
Re: Archivos Secuenciales
«
Respuesta #2 en:
Lunes 7 de Febrero de 2005, 16:53 »
0
mmm la verdad amigo es que eso no me soluciono el problema...
igual seria interesante que explicaras por que solo agregaste flag=1 y luego flag=0
lo que me ocurre es que si encuentra la ficha escrita dentro de las primeras lineas me la tira como ha sido encontrada ytodo bien... PERO si busco otra ficha me tira como que esa no ha sido encontrada y me sale DOS VECES ese msgbox y luego me dice que la encontro...
tambien si una ficha no esta en datos.dat me tira dos veces el mismo msgbox... por que sera esto ?
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Archivos Secuenciales
«
Respuesta #3 en:
Martes 8 de Febrero de 2005, 15:24 »
0
Hola.
Visto así por encima, creo que lo que debes hacer es eliminar el aviso de que no se ha encontrado coincidencia fuera del bucle: tal como está el mensaje aparecerá por cada uno de los registros que no coinciden.
La cosa quedaría asín:
Código: Text
Private Sub Command1_Click()
Dim iCanal As Integer, sPath As String
Dim bEncontrado As Boolean
sPath = App.Path
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
iCanal = FreeFile
Open sPath & "datos.dat" For Input As #iCanal
Do Until bEncontrado Or EOF(iCanal)
Input #iCanal, namec
Input #iCanal, direc
Input #iCanal, telc
Input #iCanal, emc
Input #iCanal, comc
If Text6.Text = namec Then
Text1.Text = namec
Text2.Text = direc
Text3.Text = telc
Text4.Text = emc
Text5.Text = comc
MsgBox "La ficha de " & Text6.Text & " ha sido encontrada", vbInformation + vbOKOnly, "Información"
bEncontrado = True
End If
Loop
if Not bEncontrado Then huhu
Close #iCanal
End Sub
Private Sub huhu()
If MsgBox("La ficha de " & Text6.Text _
& " no ha sido encontrada." & vbCrLf _
& "Desea realizar una nueva busqueda ?" _
, vbQuestion + vbYesNo, "Información") = vbYes Then
Text6.Text = ""
Text6.SetFocus
End If
End Sub
Chau.
sircuit
Miembro activo
Mensajes: 31
Re: Archivos Secuenciales
«
Respuesta #4 en:
Martes 8 de Febrero de 2005, 16:36 »
0
mmm interesante la forma que tomo pero dime una cosa
para que sirve la instruccion If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
salu2
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Archivos Secuenciales
«
Respuesta #5 en:
Martes 8 de Febrero de 2005, 16:41 »
0
Hola sircuit.
Normalmente App.Path devuelve la vía de acceso de la aplicación sin el carácter "\" al final, pero... si resulta que la vía de acceso de la aplicación coincide con la raíz de una unidad, entonces devuelve C:\ o D:\ o lo que sea, es decir, con el carácter "\" al final. De ahí el interés de realizar siempre esa comprobación para evitar posibles errores si se da el caso.
Chao.
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: Archivos Secuenciales
«
Respuesta #6 en:
Martes 8 de Febrero de 2005, 16:43 »
0
Esta observando si el ultimo caracter es un contraslash, sino lo es, 'tonces le asigna a la variable el "\"
El pasado son solo recuerdos, el futuro son solo sueños
sircuit
Miembro activo
Mensajes: 31
Re: Archivos Secuenciales
«
Respuesta #7 en:
Martes 8 de Febrero de 2005, 19:23 »
0
que bien...
muchas gracias muhachos
pero...
tengo una duda mas:
por que la nececidad de declarar bEncontrado As Boolean y poner la sentencia Do Until bEncontrado Or EOF(iCanal), no seria maa conveniente como estaba el original osea
do while not eof(iCanal) ?
salu2
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Archivos Secuenciales
«
Respuesta #8 en:
Miércoles 9 de Febrero de 2005, 14:32 »
0
Porque así te ahorras recorrer el resto del archivo una vez que ya has encontrado una coincidencia.
Adeus.
sircuit
Miembro activo
Mensajes: 31
Re: Archivos Secuenciales
«
Respuesta #9 en:
Miércoles 9 de Febrero de 2005, 16:51 »
0
muchas gracias
salu2
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Archivos Secuenciales