Recordset y DataGrid?

Iniciado por ferlucas, 6 Julio 2005, 22:20 PM

0 Miembros y 1 Visitante están viendo este tema.

ferlucas

A ver si pueden ayudarme.
Tengo 3 tablas.
tabla1 (id_factura, id_cliente y otros que no hay historia)
tabla2 (id_factura, id_producto)
tabla3 (id_producto, descripcion)


El DataGrid debe mostrar los las facturas.
'Abro la conexion
cn.ConnectionString="PROVIDER=MSDASQL.1;DRIVER={MySQL ODBC 3.51.06 Driver};SERVER=localhost;DATABASE=datadb;UID=userid;PWD=userpwd;OPTION=16427;"
cn..CursorLocation = adUseClient
cn.Open
Set rs.ActiveConnection = cn
rs.CursorLocation
rs.CursorType = 3
rs.LockType = 3
rs.Source = "SELECT * FROM tabla1"
rs.Open
Set DataGrid1.DataSource = rs

Hasta aca... todo bien.
Tengo un TextBox y lo que hago es buscar todas las facturas con determinados productos cuya descripcion contenga lo que intege en el TextBox. La consulta la hago asi:
sql = "SELECT facturas.* FROM " & _
        "(tabla1 INNER JOIN tabla2 ON tabla1.id_factura=tabla2.id_factura) " & _
        "INNER JOIN tabla3 ON tabla3.id_producto=tabla2.id_producto " & _
        "WHERE LIKE '%" & TextBox.Text & "%';"

rs.Close
rs.Source = sql
rs.Open
'Refresco el DataGrid

En la linea rs.Close... me salta un error 3219 - "Operacion no permitida en este contexto".
Como lo puedo solucionar?. Omiti algun paso?.

- "Si no eres parte de la solución... eres parte del problema."

soplo

Hola
La verdad es que no veo que te pasa.

Prueba a comentar esta línea
Set DataGrid1.DataSource = rs
y ejecutas. Obviamente no funcionará el datagrid, pero se trata de saber si tienes un error al cerrar el recordset.

Un saludo
Callar es asentir ¡No te dejes llevar!

ferlucas

La comente y funciona todo bien.

- "Si no eres parte de la solución... eres parte del problema."

soplo

bien, pues entonces antes de cerrar el recordset haces
set DataGrid1.DataSource=""

Ahora cierras el recordset y luego vuelves a asignar cuando lo abras lo vuelves a asignar al datagrid

Un saludo
Callar es asentir ¡No te dejes llevar!

ferlucas

Set grdDatos.DataSource = Nothing
rs.Close ---> aca salta el error
rs.Source = sql
rs.Open
Set grdDatos.DataSource = rs

- "Si no eres parte de la solución... eres parte del problema."

soplo

Hola
Te falta hacerle un refresh al datagrid, pues le has cambiado el datasource

Un saludo
Callar es asentir ¡No te dejes llevar!