Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ferlucas en 6 Julio 2005, 22:20 pm



Título: Recordset y DataGrid?
Publicado por: ferlucas en 6 Julio 2005, 22:20 pm
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?.


Título: Re: Recordset y DataGrid?
Publicado por: soplo en 7 Julio 2005, 14:47 pm
Hola
La verdad es que no veo que te pasa.

Prueba a comentar esta línea
Código:
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


Título: Re: Recordset y DataGrid?
Publicado por: ferlucas en 7 Julio 2005, 18:21 pm
La comente y funciona todo bien.


Título: Re: Recordset y DataGrid?
Publicado por: soplo en 7 Julio 2005, 20:57 pm
bien, pues entonces antes de cerrar el recordset haces
Código:
set DataGrid1.DataSource=""

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

Un saludo


Título: Re: Recordset y DataGrid?
Publicado por: ferlucas en 7 Julio 2005, 22:45 pm
Set grdDatos.DataSource = Nothing
rs.Close ---> aca salta el error
rs.Source = sql
rs.Open
Set grdDatos.DataSource = rs


Título: Re: Recordset y DataGrid?
Publicado por: soplo en 11 Julio 2005, 14:39 pm
Hola
Te falta hacerle un refresh al datagrid, pues le has cambiado el datasource

Un saludo