Visual Basic - consulta buscar

Life is soft - evento anual de software empresarial
 
Vista:

consulta buscar

Publicado por hector (67 intervenciones) el 31/01/2007 21:25:33
hola a todos, necesito ayuda, tngo una consulta para buscar es la siguiente:

busqueda = "select * from mafp where codigo_afp=" & Val(tcodafp.Text) & ""
Set rsafp_buscar = New ADODB.Recordset
With rsafp_buscar
.ActiveConnection = bd
.CursorLocation = adUseServer
.CursorType = adOpenStatic 'tipo de abrir
.LockType = adLockOptimistic 'candado optimista
.Source = busqueda
.Open
End With
If bill = "ingresado" Then
With rsafp_buscar
tcodafp.Text = .Fields("codigo_afp")
tnombre.Text = .Fields("nombre")
tcotizacion.Text = .Fields("cotizacion")
tadicional.Text = .Fields("adicional")
tcodformin.Text = .Fields("codigo_formin")
tcodprevired.Text = .Fields("codigo_previred")
tcodaut.Text = .Fields("codigo_aut/apv")
End With
End if

la bse la tngo definida asi:

dim bd As ADODB.Connection

Set bd = New ADODB.Connection
bd.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=remuneracion"


y me arroja un eror en tiempo de ejecucion que es el siguiente :

ERROR '3021' EN TIEMPO DE EJECUCION
EL VALOR DE BOF O EOF ES TRUE, O EL ACTUAL REGISTRO SE ELIMINO; LA OPERACION SOLICITADA REQUIERE UN REGISTRO ACTUAL

y tngo 7 registros ingresados y no he eliminado ninguno no se que pasa, porfavor ayudenme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta buscar

Publicado por ivan (1039 intervenciones) el 31/01/2007 21:42:34
Si acaso el campo codigo_afp es de tipo texto no le veo error alguno

tambien no le veo el caso de que agreges comillas " antes y depués del Val(...) y también pones doble comilla al final... eso no lo entiendo, creo que por ahí debe de estar el error

suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por hector (67 intervenciones) el 31/01/2007 21:48:36
le quite lasa comillas y tenias razon no hay para que ponerlas seque me envole donde no se que pasa, porque me sigue arrojando el mismo error y me lo arroja en la linea siguiente

tcodafp.Text = .Fields("codigo_afp")

si tu tienes un buscar con que trabaje con adod. y funcoine dime,
porfavor ayudame
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por ivan (1039 intervenciones) el 31/01/2007 22:10:31
Para buscar un registro yo hago esto... en ADODB

SQL = "SELECT * FROM tabla"
Rs1.Open SQL, RsConexion, adOpenKeyset, adLockOptimistic
Rs1.MoveFirst
Rs1.Find "campo1=" & Valor1
If Err.Number Or Rs1.EOF Or Rs1.BOF Then
'--> no se encontró
Else
'--> Si se encontró
End If

Antes de eso pongo On Error Resume Next y claro, después tengo que desactivar eso con On Error Goto 0

Rs1 es un RecordSet de tipo ADODB.RecordSet
RsConexion es un Connection de tipo ADODB.Connection
Campo1 es un campo del mismo tipo que es Valor1

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por lolo (67 intervenciones) el 31/01/2007 22:28:57
tu consulta esta bien solo le tienes que cambiar el cursor al lado del cliente. todo lo demas que te cuentan son mandangas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por hector (67 intervenciones) el 01/02/2007 14:24:22
lo intente pero me sigue arrojando el mismo error y cuento los registros y me dice si hay asike no se ke pasa
gracias de todas maneras
muxas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por hector (67 intervenciones) el 01/02/2007 15:54:45
hola ivan sabes ke valide de ke no fuera fin y principio de archivo y lo revise con F8 y lo pasa, osea me dice ke no son fin ni principio de archivo osea ke tienen registros pero cuando pasa ala otra parte del IF cuando empieza a buscar llega aki:

tcodafp.Text = .Fields("codigo_afp")

y me manda el error de eof o bof igual nu mas aunke antes me los paso y mando un mnsaje con recordcount y me dice ke estan los 7 registros asique nose
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por ivan (1039 intervenciones) el 01/02/2007 18:53:57
Haré el intento de ayudarte, pon el código de lo que ya corregiste, a ver si acaso alguien más te puede ayudar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por hector (67 intervenciones) el 01/02/2007 19:09:10
este es el codigo de buscar que tengo

Private Sub bbuscar_Click()
limpiar_textos
tcodafp.Enabled = True
tcodafp.SetFocus
bcancelar.Enabled = True

If rsafp.EOF = True Or rsafp.BOF = True Then
MsgBox ("No existen registros")
tcodafp.Enabled = False
Else
Dim busqueda As String
Set rsafp_buscar = New ADODB.Recordset
busqueda = ("select * from mafp where codafp='" & tcodafp.Text & "'")
With rsafp_buscar
.ActiveConnection = bd
.CursorLocation = adUseClient
.CursorType = adOpenKeyset 'tipo de abrir
.LockType = adLockOptimistic 'candado optimista
.Source = busqueda
.Open
Ebd With
With rsafp_buscar
tcodafp.Text = .Fields("codafp")
tnombre.Text = .Fields("nombre")
tcotizacion.Text = .Fields("cotizacion")
tadicional.Text = .Fields("adicional")
tcodformin.Text = .Fields("codigo_formin")
tcodprevired.Text = .Fields("codigo_previred")
tcodaut.Text = .Fields("codigo_autapv")
End With
End If
End Sub

y me arroja error en esta linea :

tcodafp.Text = .Fields("codafp")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por ivan (1039 intervenciones) el 01/02/2007 19:37:59
Otra forma de saber si un RecordSet tiene o no registros es por medio de la propiedad RecordCount.

Cuando haces tu consulta sobre el RecordSet --> rsafp_buscar
asumes que éste SI tiene registros, desconozco como se comporte pero creo que debieras de asegurarte que ese recordset tenga registros antes de hacer las asignaciones a los TextBox

With rsafp_buscar
.ActiveConnection = bd
.CursorLocation = adUseClient
.CursorType = adOpenKeyset 'tipo de abrir
.LockType = adLockOptimistic 'candado optimista
.Source = busqueda
.Open
End With
If rsafp_buscar.RecordCount <> 0 then
---> has las asignaciones, aunque no validas si acaso hay mas de un registro
Else
--> la consulta sobre el RecordSet NO arrojó registro alguno
End If

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por Malandrín (47 intervenciones) el 01/02/2007 20:20:46
Está mal la comparación del EOF o BOF, la pusiste ANTES de hacer la consulta:
Debería ser así:

'(LA ESTOY QUITANDO DE AQUÍ)
Dim busqueda As String
Set rsafp_buscar = New ADODB.Recordset
busqueda = ("select * from mafp where codafp='" & tcodafp.Text & "'")
With rsafp_buscar
.ActiveConnection = bd
.CursorLocation = adUseClient
.CursorType = adOpenKeyset 'tipo de abrir
.LockType = adLockOptimistic 'candado optimista
.Source = busqueda
.Open

'(AQUI VA, Y NO NECESITAS COMPARAR "= True" )
If .EOF Or .BOF Then ' Usamos el mismo "With"
MsgBox ("No existen registros")
tcodafp.Enabled = False
Else
tcodafp.Text = .Fields("codafp")
tnombre.Text = .Fields("nombre")
tcotizacion.Text = .Fields("cotizacion")
tadicional.Text = .Fields("adicional")
tcodformin.Text = .Fields("codigo_formin")
tcodprevired.Text = .Fields("codigo_previred")
tcodaut.Text = .Fields("codigo_autapv")
End If
End With

Checa, a ver si te funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta buscar

Publicado por hector (67 intervenciones) el 02/02/2007 15:04:01
sip funciona, gracias y ahora como valido para cuando se agregue un codigo a buscar que no exista y no se me caiga el programa, ya que no me resultan las sigtes comparacion:

if tcodigo.text <>rsafp.fields("codafp") then
.
.
.

if tcodigo.text <>rsafp!codafp theni
.
.
.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar