Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Problemas al abrir y cerrar un recordset (http://www.forosdelweb.com/f69/problemas-abrir-cerrar-recordset-368545/)

Stickmaster2004 03/02/2006 14:49

Problemas al abrir y cerrar un recordset
 
miren tengo un error y la verdad no se por que rayos sale, el error es el 3705 en tiempo de ejecucion, y dice "la operacion no esta permitida si el objeto esta abierto".
la idea es que tengo un text1, alli meto la razon social, presiono un commandbutton y se me despliega en un datagrid dependiendo el numero de razon social que halla ingresado en el text1,entonces si meto un numero de razon social que existe el me muestra los datos, pero al borrar este numero y colocar otro y presiono otra vez el commandbutton me sale ese error le doy depurar y me sale el error cuando cierro el recordset Rs, si le quito la parte de cerrar el recordset Rs.close, no me sale ningun dato ya sea que este se encuentre en la base de datos.

bueno miren mi codigo y a ver en que me pueden ayudar les estaria muy agradecido.

Private Sub Command5_Click()
If Text1.Text = "" And Text2.Text = "" Then
MsgBox ("Digite la Razon Social o un Nombre")
Text1.SetFocus
Else
Rs.Open "Select * From cliente where razon=" & Text1.Text, conn, adOpenStatic, adLockOptimistic ' abrimos el recordset"

Set DataGrid1.DataSource = Rs

'Rs.close de ninguna de las dos formas me sale, ni cerrandolo aqui

End If
'Rs.close de ninguna de las dos formas me sale, ni cerrandolo aqui
End Sub

Frehley 03/02/2006 15:04

Probá usando un Find en lugar de abrir el Rs con esos datos, cuando termina el evento devolvé el Rs a la posición de inicio.

Salu2!

Stickmaster2004 03/02/2006 15:13

como utilizo find
 
bueno como lo incorporarias a mi programa pues la funcion de busqueda find??????, para que busque lo mismo pero sin abrir el Rs??, podrias ayudarme!!!!

Frehley 03/02/2006 16:04

En el Initialize del Form1:

Cita:

Set rs = New ADODB.Recordset
rs.Open "DataBase", cn, adOpenDynamic, adLockOptimistic
En el evento:

Cita:

Rs.Find "cliente =" & "'" & Text1.Text & "'"
Set DataGrid1.DataSource = Rs
DataGrid1.Refresh
Rs.MoveFirst
Rs.Update
Si no podes usar Filter:

Cita:

Rs.Filter = "cliente = " & "'" & Text1.Text & "'"
Set DataGrid1.DataSource = Rs
DataGrid1.Refresh
Rs.MoveFirst
Rs.Update
Fijate, lo hice en el aire, si no funciona así buscale la vuelta hasta que ande.

Stickmaster2004 03/02/2006 22:06

Voy a ver
 
bueno gracias a ver voy a probar y ya te digo como me va

Stickmaster2004 04/02/2006 00:36

muchisimas gracias fue una respuesta de 10 puntos de 1o posibles, maestro felicitaciones por que acerto en buena hora con la respuesta a mi pregunta, gracias, me quedo el codigo de la siguiente forma::-) :-) :-)

en general

Dim conn As New ADODB.Connection ' declaramos la conexion
Dim Rs As New ADODB.Recordset 'declaramos el recordset

en el evento onclick del boton

Private Sub Command5_Click()
Set Rs = New ADODB.Recordset

Rs.Open "select * from cliente", conn, dbOpenDynaset, adLockOptimistic ' abrimos el recordset


Rs.Filter = "razon = " & "'" & Text1.Text & "'"
If (Rs.EOF = False) Then


Set DataGrid1.DataSource = Rs
DataGrid1.Refresh
Rs.MoveFirst
Rs.Update

y en el evento onload del formulario

Private Sub Form_Load()
conn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\clientes.mdb" & ";Uid=Admin;Pwd=;"
conn.CursorLocation = adUseClient
conn.Open
End Sub

Frehley 04/02/2006 04:35

Buenisimo entonces!

Salu2!


La zona horaria es GMT -6. Ahora son las 07:30.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.