Programación General > Visual Basic 6.0 e inferiores

 Archivos Secuenciales

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa