Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con consulta SQL para un novato (https://www.clubdelphi.com/foros/showthread.php?t=43170)

Stilgar 03-05-2007 21:26:16

Ayuda con consulta SQL para un novato
 
Hola,
primero presentarme, este es mi primer post ;) !!!
soy recien llegado a delphi y tengo problema con una consulta en sql, no logro que me muestre en un DBGrid los resultados de la consulta... Cierro la consulta, le hago un Add con el SELECT y intento meter los resultados en el DbGrid con DBGrid1.Datasource := Consulta (a ver la burrada que hago :P) pero no hay manera, me da un error de EAccessViolation. Alguien me puede ayudar???

Utilizo Delphi 7 y Oracle...

P.D: muchas gracias de antemano y por la dudas que he resuelto sin necesidad de escribir una pregunta.

Caral 03-05-2007 21:40:58

Hola Stilgar
Bienvenido al club.
Pra hacer este tipo de consultas siempre es bueno saber mas detalles:
Que estas usando:
Cual Base de datos?
Con que componentes enlazas las tablas?

Cuanto mas clara la consulta, mas claro tendremos la manera de ayudar, si es posible.
Nos comentas esto?.
Saludos

Stilgar 03-05-2007 21:54:09

Hola Caral, gracias por la rapidisima respuesta!
Pues la base de datos que utilizo es Oracle con el componente Oracle Data Access y hago algo de este estilo: (pido perdon por si es una burrada demasiado bestia, pero no encontré nada de este estilo por la red así que improvisé :p)

CONSULTA.Close;
CONSULTA.SQL.Clear;
CONSULTA.SQL.Add('SELECT * FROM CUOTAS WHERE DEFINICION=Y)';
CONSULTA.Open;
OraDataSource1.DataSet.Active := True;
OraDataSource1.DataSet := CONSULTA;
DBGrid1.Datasource := OraDataSource1;
CONSULTA.Close;

¿que estoy haciendo mal?

gracias!:):)

natalinuyo 03-05-2007 22:00:43

Close
 
Hola y bienvenido:

Cita:

Empezado por Stilgar
CONSULTA.Close;

Una pregunta, ya intentaste no cerrar la consulta?, toda la asignación está bien, sin embargo si cierras la consulta pues no habrá datos que mostrar...

egostar 03-05-2007 22:01:17

Pues no se mucho de Oracle, pero imagino que es porque cierras al final CONSULTAS.

La otra cosa que veo y no me checa muy bien es como estas asignando los componentes.

Código Delphi [-]
   
OraDataSource1.DataSet := CONSULTA;
DBGrid1.Datasource := OraDataSource1;
CONSULTA.Close;
CONSULTA.SQL.Clear;
CONSULTA.SQL.Add('SELECT * FROM CUOTAS WHERE DEFINICION=Y)';
CONSULTA.Open;

Salud OS.

Caral 03-05-2007 22:04:45

Hola Stilgar
De base de datos oracle, no se nada, pero hay que ver un poco lo que estas haciendo:
Normalmente cuando se quiere accesar una base de datos hay varios componentes que interactuan, por ejemplo.
Un conector, en mi caso uso adoconnection, este hace un enlace con la base de datos.
Un query, , en mi caso un adoQuery, este es el que se usa para analizar la consulta sql, sea en el mismo o como en tu caso por codigo, da igual.
Un datasource, este se usa para conetar otros componentes como el dbgrid.
En conclusion, que yo sepa se necesitan varios componentes para hacer lo que quieres, repito, no se en oracle, supongo que tambien.
Asi las cosas, veriamos que a tu codigo, supongo, le faltan varios componentes, para que te des una idea, seria algo asi:
Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM CUOTAS WHERE DEFINICION=Y');
Query1.Open;
// OraDataSource1.DataSet.Active := True;// aqui no se para que
//OraDataSource1.DataSet := CONSULTA;// aqui no se para que
//DBGrid1.Datasource := OraDataSource1;// aqui no se para que
//CONSULTA.Close;// aqui estas cerrando la consulta despues de abrirla, no es logico.
Bueno mas o menos es asi.
Saludos

lgarcia 03-05-2007 22:05:57

Consulta en SQL
 
Hola:

Dado que estas trabajando con D7 y Oracle te recomendaria que utilizaras para llenar el DBGrid un ADOStoredProcedure que obtendria los datos de un SP que tu definas en Oracle, y despues asociaria el DBGrid con un datasource que enlazaria al AdoSP, despues lo ejecutarias y no tendrias problemas.

Saludos
Luis Garcia

Stilgar 03-05-2007 22:18:58

Hola y muchas gracias a todos!!!
Voy ahora mismo a probar vuestras sugerencias y os comento

Saludos!

karlaoax 03-05-2007 22:36:26

mmm casi no he manejado Oracle, pero trata de implementar lo siguiente:
en un Query:
SELECT tus campos
FROM tu tabla
WHERE codigo=codigo // si deseas hacer un filtro en especifico

Y lo complementas quiza con un boton u otro componente, como explico Caral:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM CUOTAS WHERE DEFINICION=Y');
Query1.Open;

y en tu DBGRID en su propiedad DATASOURCE seleccionas el datasource que esta apuntando hacia la Propiedad DATASET, normalmente deberia ser tu componente query para que te muestre el resultado deseado.

Esper ote sirva

Stilgar 03-05-2007 22:59:27

Hola de nuevo!!!

Haciendo pruebas con la query (de tipo TORAquery) no he obtenido ningun resultado, he probado lo que me comentabais de no cerrar la consulta (no se de donde lo habré sacado) y tampoco, asi que he optado por probar lo que comentaba Luis Garcia pero en vez de utilizar el ADOStoredProc he utilizado un ORAStoredProc que me proporciona el componente Oracle Data Access y funciona de maravilla!!!! :):):)

Gracias de nuevo a todos por la inestimable ayuda!!
Saludos

Stilgar 03-05-2007 23:01:45

Gracias karlaoax, no habia visto tu post antes de responder pero mañana lo probaré igualmente para ver si funciona.

Saludos


La franja horaria es GMT +2. Ahora son las 08:41:35.

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