Programación General > Visual Basic 6.0 e inferiores
Archivos Secuenciales
sircuit:
Si yo de nuevo :D 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 IntegerOpen App.Path & "\datos.dat" For Input As 1Do While Not EOF(1)Input #1, namecInput #1, direcInput #1, telcInput #1, emcInput #1, comcIf Text6.Text = namec ThenText1.Text = namecText2.Text = direcText3.Text = telcText4.Text = emcText5.Text = comcMsgBox "La ficha de " & Text6.Text & " ha sido encontrada", vbInformation + vbOKOnly, "Información"ElseCall huhuEnd IfLoopClose #1End 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 ThenText6.Text = ""Text6.SetFocusEnd IfEnd Sub
espero que me puedan ayudar a identificar la parte erronea.
salu2
Jose Arriagada:
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:
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:
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 #iCanalEnd 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 IfEnd Sub
Chau.
sircuit:
mmm interesante la forma que tomo pero dime una cosa
para que sirve la instruccion If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
salu2
Navegación
[#] Página Siguiente
Ir a la versión completa