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
Ir a la versión completa