Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 03-05-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 03-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
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é )

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!
Responder Con Cita
  #4  
Antiguo 03-05-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
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...
Responder Con Cita
  #5  
Antiguo 03-05-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
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.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 03-05-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 03-05-2007
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 03-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
Hola y muchas gracias a todos!!!
Voy ahora mismo a probar vuestras sugerencias y os comento

Saludos!
Responder Con Cita
  #9  
Antiguo 03-05-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Cool

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

Última edición por karlaoax fecha: 03-05-2007 a las 22:40:40.
Responder Con Cita
  #10  
Antiguo 03-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 03-05-2007
Stilgar Stilgar is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
Stilgar Va por buen camino
Gracias karlaoax, no habia visto tu post antes de responder pero mañana lo probaré igualmente para ver si funciona.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
AYUDA para enlistar tablas en sql, soy novato ayreon SQL 2 16-04-2007 23:06:39
Ayuda Novato jorgito.crazy PHP 3 26-07-2006 23:24:23
ayuda para novato Pensa2r MySQL 1 05-06-2006 19:04:21
Ayuda Urgente para una consulta!!!! EfrainSanmiguel SQL 6 02-11-2005 23:10:31
novato, ayuda para usar aplicacion en otro ordenador zastilla Conexión con bases de datos 2 25-07-2005 12:41:47


La franja horaria es GMT +2. Ahora son las 03:22:08.


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