Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problemas al abrir y cerrar un recordset

Estas en el tema de Problemas al abrir y cerrar un recordset en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/02/2006, 14:49
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
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
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #2 (permalink)  
Antiguo 03/02/2006, 15:04
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
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!
__________________
diegoz.com.ar
  #3 (permalink)  
Antiguo 03/02/2006, 15:13
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
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!!!!
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #4 (permalink)  
Antiguo 03/02/2006, 16:04
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
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.
__________________
diegoz.com.ar
  #5 (permalink)  
Antiguo 03/02/2006, 22:06
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
Voy a ver

bueno gracias a ver voy a probar y ya te digo como me va
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #6 (permalink)  
Antiguo 04/02/2006, 00:36
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
Sonrisa

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
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #7 (permalink)  
Antiguo 04/02/2006, 04:35
Avatar de Frehley  
Fecha de Ingreso: junio-2005
Ubicación: Somewhere between Heaven and Hell
Mensajes: 415
Antigüedad: 18 años, 10 meses
Puntos: 0
Buenisimo entonces!

Salu2!
__________________
diegoz.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:42.