• Viernes 8 de Noviembre de 2024, 07:58

Autor Tema:  Ayuda Con Este Codigo  (Leído 1434 veces)

arrebiato

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Ayuda Con Este Codigo
« en: Martes 26 de Octubre de 2004, 16:20 »
0
:rolleyes: Hola amigos, como comprenderan soy nuevo en esto .....y estoy comprobando lo duro que es ser autodidacta.....bueno ahi les va ..quisiera saber como puedo mejorar este codigo, pues me consigue solo el primer registro de la tabla pero los posteriores no....ah y si pueden darme un ejemplo en codigo de como se usa el metodo FIND del Recordset de un control Adoc se los agradeceria en el alma ......Bye espero me puedan ayudar. :rolleyes:

Private Sub Buscador_LostFocus()
Dim rs As Recordset
Dim VarX As String
Dim Encontrado As Integer
Set rs = AdocClientes.Recordset
txtCedula.Text = rs!cedula
Encontrado = 1
VarX = Buscador.Text
rs.MoveFirst
If (rs!cedula = VarX) Then
Encontrado = 1
MsgBox ("Hayado 1 registro")
Else
Encontrado = 0
MsgBox ("No Hayado")
End If

If Encontrado = 1 Then
txtCedula.Text = rs!cedula
txtNombreCliente.Text = rs!NombreCliente
txtNroCuenta.Text = rs!NroCuenta
txtTpoNomi.Text = rs!TpoNomi
txtTpoCuenta.Text = rs!TpoCuenta
txtDireccionHabt.Text = rs!DireccionHabt
txtTelfHabt.Text = rs!TelfHabt
txtTelfMovil.Text = rs!TelfMovil
txtDirecTrbjo.Text = rs!DireccionTrbjo
txtTelfTrbjo.Text = rs!TelfTrbjo
txtRefciaFamiliar.Text = rs!RefciaFamiliar
Else
If Encontrado = 0 Then
rs.AddNew
txtCedula.Text = Buscador.Text
txtCedula.SetFocus
End If


End If
End Sub

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Ayuda Con Este Codigo
« Respuesta #1 en: Martes 26 de Octubre de 2004, 19:09 »
0
Salu2.
No estoy seguro de lo que es control Adoc, soy un poco nulo con los términos.

   Primeramente te dire que me parece escesivo codigo para lo que necesitas.

Pareces querer conprobar una introducción de user con una tabla, y si no existe lo añades., si es eso, conprueba sin el recordset, no te hace falta. ábrelo con una select.

VarString="SELECT * FROM AdocClientes WHERE Celula=" & TuVar
set VarRecordSet= Base.openrecordset(VarString,DbOpendynaset);

Si te da eof no existe. y lo añades.

Te dire en segundo lugar que creo pienso que tu codigo hace lo que le dices que compruebe un registro y continue, normalmente tendrias que hacer un bucle con un WHILE NOT "final del recordset" por ejemplo.

Bueno espero haberme explicado.
Mi mujer tiene un físico bárbaro!!!. Einstein.

rocky

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Ayuda Con Este Codigo
« Respuesta #2 en: Miércoles 27 de Octubre de 2004, 13:32 »
0
sería mas o menos algo asi
Código: Text
  1.  
  2. Private Sub Buscador_LostFocus()
  3. Dim rs As Recordset
  4. Dim VarX As String
  5. Dim Encontrado As Integer
  6. Set rs = AdocClientes.Recordset
  7. txtCedula.Text = rs!cedula
  8. Encontrado = 1
  9. VarX = Buscador.Text
  10. rs.MoveFirst
  11. while (encontrado=1 or rs.eof=true)
  12. If (rs!cedula = VarX) Then
  13. Encontrado = 1
  14. End If
  15. If (Encontrado = 0) Then
  16. rs.MoveNext()
  17. End If
  18. Loop
  19. If Encontrado = 1 Then
  20.    msgbox("Registro encontrado")
  21. Else
  22. msgbox("Registro no encontrado")
  23. End If
  24. txtCedula.Text = rs!cedula
  25. txtNombreCliente.Text = rs!NombreCliente
  26. txtNroCuenta.Text = rs!NroCuenta
  27. txtTpoNomi.Text = rs!TpoNomi
  28. txtTpoCuenta.Text = rs!TpoCuenta
  29. txtDireccionHabt.Text = rs!DireccionHabt
  30. txtTelfHabt.Text = rs!TelfHabt
  31. txtTelfMovil.Text = rs!TelfMovil
  32. txtDirecTrbjo.Text = rs!DireccionTrbjo
  33. txtTelfTrbjo.Text = rs!TelfTrbjo
  34. txtRefciaFamiliar.Text = rs!RefciaFamiliar
  35. Else
  36. If Encontrado = 0 Then
  37. rs.AddNew
  38. txtCedula.Text = Buscador.Text
  39. txtCedula.SetFocus
  40. End If
  41. End Sub
  42.  
  43.  

LUKER

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Ayuda Con Este Codigo
« Respuesta #3 en: Miércoles 27 de Octubre de 2004, 15:37 »
0
B)  Hola amigo creo igual que el que te ayudo que el codigo es demasiado grande, puedes provar con este framento es mucho mas util

Sub BUS3()
  Dim aux As String
  Dim encontro as integer  
  encontro = 0
  rs.MoveFirst
  aux = UCase(InputBox$("Buscar cedual:", "Buscando cliente"))
Do
  If (rs!Cedula = aux) Then
      txtCedula.Text = rs!cedula
      txtNombreCliente.Text = rs!NombreCliente
      txtNroCuenta.Text = rs!NroCuenta
      txtTpoNomi.Text = rs!TpoNomi
      txtTpoCuenta.Text = rs!TpoCuenta
      txtDireccionHabt.Text = rs!DireccionHabt
      txtTelfHabt.Text = rs!TelfHabt
      txtTelfMovil.Text = rs!TelfMovil
      txtDirecTrbjo.Text = rs!DireccionTrbjo
      txtTelfTrbjo.Text = rs!TelfTrbjo
      txtRefciaFamiliar.Text = rs!RefciaFamiliar
      MsgBox "Este es un cliente presione clic para continuar",       vbExclamation, "Resultado"
     Encontro = 0  
  End If
  rs.MoveNext
Loop Until (rs.EOF)
If encontro = 1 Then
    MsgBox "No se encontro el dato", vbExclamation, "Resultado"
End If
End Sub

Amigo como puedes observar la gran diferencia radica en el msgbox
que detiene la busqueda para observar los datos y al precionar aceptar
el programa continua con la busqueda del siguiente registro.
Espero haber podio ayudarte, por favor informanos como te fue.
Y NO ES TANTO CODIGO! hace lo mismo
Ah! en cuanto al ado te lo quedo debiendo, pero si encuentro algo te aviso. :kicking:
Los limites estan en los ojos del hombre, los triunfos en sus mentes, de el es la decision de ser un ciego con fe o un vidente sin futuro