Programación General > Visual Basic 6.0 e inferiores

 Ayuda Con Este Codigo

(1/1)

arrebiato:
: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:
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.

rocky:
sería mas o menos algo asi

--- Código: Text --- Private Sub Buscador_LostFocus()Dim rs As RecordsetDim VarX As StringDim Encontrado As IntegerSet rs = AdocClientes.RecordsettxtCedula.Text = rs!cedulaEncontrado = 1VarX = Buscador.Textrs.MoveFirstwhile (encontrado=1 or rs.eof=true)If (rs!cedula = VarX) ThenEncontrado = 1End IfIf (Encontrado = 0) Thenrs.MoveNext()End IfLoopIf Encontrado = 1 Then   msgbox("Registro encontrado")Elsemsgbox("Registro no encontrado")End IftxtCedula.Text = rs!cedulatxtNombreCliente.Text = rs!NombreClientetxtNroCuenta.Text = rs!NroCuentatxtTpoNomi.Text = rs!TpoNomitxtTpoCuenta.Text = rs!TpoCuentatxtDireccionHabt.Text = rs!DireccionHabttxtTelfHabt.Text = rs!TelfHabttxtTelfMovil.Text = rs!TelfMoviltxtDirecTrbjo.Text = rs!DireccionTrbjotxtTelfTrbjo.Text = rs!TelfTrbjotxtRefciaFamiliar.Text = rs!RefciaFamiliarElseIf Encontrado = 0 Thenrs.AddNewtxtCedula.Text = Buscador.TexttxtCedula.SetFocusEnd IfEnd Sub  

LUKER:
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:

Navegación

[0] Índice de Mensajes

Ir a la versión completa