Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta unidireccional (https://www.clubdelphi.com/foros/showthread.php?t=34727)

beatriz g 18-08-2006 20:50:16

consulta unidireccional
 
Hola hola, tengo un problema con un select, estoy programando una aplicacion para acceder a una base de datos mysql y en añadido un componete TSQLQuery para realizar una consulta, tengo el siguinete codigo para ejecutar la consulta:

query_pe.SQL.Clear;
query_pe.SQL.Add('select * from personas p, prestaciones_economicas pe');
query_pe.SQL.Add('where (p.expediente=:p1 and p.id_p=pe.id_p)');
query_pe.ParamByName('p1').AsString:=e_e.Text;
query_pe.Active:=True;
query_pe.Open;


Hasta aqui bien, pero ahora quiero ir avanzando y retrocediendo en la consulta y que me muestre los distinitos datos devueltos. Para avanzar no hay problema ( con query_pe.Next) pero al retroceder utilizo la siguiente instruccion:
query_pe.Prior;
Aqui viene el problema, tengo el siguiente error al ejecutar esta instruccion:

query_pe: Operation not allowed on a unidirectional dataset

vamos que me dice que la consulta es unidirecciona y no puedo ir para atras.
Gracias

Casimiro Noteví 18-08-2006 21:54:12

Debe tener alguna propiedad unidirectional, la pones a true o false;

roman 18-08-2006 22:26:08

De hecho no es posible y quizá este fragmento de la ayuda de Delphi clarifique:

Cita:

TSQLQuery is a unidirectional dataset. Unlike other datasets, unidirectional datasets do not buffer multiple records in memory. Because of this, you can only navigate using the First and Next methods. There is no built-in editing support: you can only edit the data in an SQL query by explicitly creating an SQL UPDATE command or by connecting the dataset to a client dataset using a provider. Features that require buffering multiple records, such as filters or lookup fields, are not available.filters or lookup fields, are not available.
Y aunque no lo diga explícitamente, no se puede conectar una de estas componentes a un DBGrid ni cualquier control que invlucre múltiples registros al mismo tiempo.

Tendrás que usar un ClientDataSet para poder navegar en ambas direciones y editar.

// Saludos

Casimiro Noteví 18-08-2006 22:48:46

Cita:

Empezado por roman
De hecho no es posible y quizá este fragmento de la ayuda de Delphi clarifique:
Y aunque no lo diga explícitamente, no se puede conectar una de estas componentes a un DBGrid ni cualquier control que invlucre múltiples registros al mismo tiempo.

Tendrás que usar un ClientDataSet para poder navegar en ambas direciones y editar.

// Saludos

Entonces, imagino que ese TSQLQuery para MySql debe ser el homólogo en IBX=TIBsql, en FIBplus=TpFIBquery o en MDO=TMDOsql


roman 18-08-2006 22:53:17

Cita:

Empezado por Casimiro Notevi
Entonces, imagino que ese TSQLQuery para MySql debe ser el homólogo en IBX=TIBsql, en FIBplus=TpFIBquery o en MDO=TMDOsql


Posiblemente así sea. Pero TSQLQuery no es realmente de MySql sino de dbExpress, así que te permite conectar a diversos motores.

// Saludos

anghell77 23-08-2006 07:45:50

Una cuestión encaminada con el componente TSQLQuery.....
No hay un componente denominado MySQL...o MyDac?....algo así que no lo recuerdo bien, pero que todos los componentes de ese elemento(paquete) se denominan "MyQuery", "MySQLConnection", "My....etc"???

Digo, es sólo para despejar la duda....yo creo haberlo conocido, o ando tan errado que es del mismo que hablan??

{Saludos}

roman 23-08-2006 16:21:00

Son dos cosas distintas. El TSQLQuery es parte de dbExpress y dbExpress te permite conectar a varios motores, un poco al estilo de ODBC. Las componentes MyDac son exclusivas para MySQl.

// Saludos

avmm2004 24-08-2006 18:59:42

Prueba a utilizar componentes para acceder a base de datos que contengan la posibilidad de poner a true or false la propiedad unidireccional.
Por ejemplo en www.crlab.com tienes unos componentes para mysql que si lo hacen. No son gratuitos pero son buenos y funcionan bien y son rápidos.
Por cierto, no me llevo comision. Yo utilizo los de Oracle y estoy muy contento con ellos.

sakuragi 13-09-2006 12:07:48

hola que tal.

entonses quiere decir que con los componentes de FIBplus no se puede conectar a DBgrid? para mostrar una consulta?



saludos

Casimiro Noteví 13-09-2006 13:54:38

Cita:

Empezado por sakuragi
hola que tal.

entonses quiere decir que con los componentes de FIBplus no se puede conectar a DBgrid? para mostrar una consulta?

saludos

¿Dónde pone eso?, por supuesto que se puede.


La franja horaria es GMT +2. Ahora son las 20:30:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi