PDA

Ver la Versión Completa : Mostrar resultados query SQL


aikai
17-10-2007, 21:00:52
Hola a todos, soy nueva y apenas he usado delphi para acceso a bbdd, solo aplicaciones muy sencillitas. Lo que necesito tb será sencillo, pero no para mí :D

Se trata de lo siguiente: tengo una bbdd access y una consulta en SQL y quiero hacer una aplicación en la que, al clicar un botón, muestre el resultado de la query.

Bueno, después de pelearme con los copmponentes database y query no he conseguido nada de nada.

help!

jhonny
17-10-2007, 21:14:35
¿Que componentes de conexion a base de datos usas?

Caral
17-10-2007, 21:15:37
Hola aikai
Bienvenida al club, por favor lee la guia de estilo, te sera util por aqui.
Con relacion a tu pregunta:
1-Me parece que estas usando los componentes de la paleta BDE, te aconsejo que utilices los componentes de la paleta ADO, te simplificaran mucho todo.
2-No indicas si la sentenciq sql la tienes en el query o si la haces via ejecucion, eso variaria un poco el como hacer la consulta, en tal caso una consulta sencilla seria:
Con ADOQuery que es el que te recomiendo;

ADOQuery1.SQL.Text:= ' Select * from tutabla ';
ADOQuery1.Open;

Esta consulta tambien puede estar en el string del query, siendo casi lo mismo.
Ahora para visualizar los datos de esta consulta:
1-coloca por ejemplo un BDGrid en el form
2-Coloca un DataSource y lo relaciones en su propiedad Dataset con el query.
3-Relaciona el dbgrid con el datasource en su propiedad dataSource.
Y listo.
Espero te sirva, si no entiendes algo, con gusto te ayudamos.
Saludos

aikai
18-10-2007, 01:04:53
OK, gracias a ambos por la rapidez.

Sí, estaba utilizando BDE. He intentado hacer lo que me comentas, Caral.

Lo explico lo mejor que pueda...

1. Creo el AdoConnection y lo enlazo con el alias que tiene la bbdd. La prueba de conexión es satisfactoria.
2. Creo el ADOQuery. En su propiedad "SQL" escribo la sentencia (ya que siempre será la misma).
3. Creo un botón con ADOQuery1.Open;
4. Por último establezco todas las relaciones que me indicas en tus pasos (datasource, dbgrid...)

Al ejecutar y pulsar el botón me pide el login de la base de datos (ADOConnection), si le doy a OK en blanco me salta error :confused:

Gracias de nuevo y perdonad el desconocimiento.

Caral
18-10-2007, 03:28:10
Hola
Aqui (http://wiki.clubdelphi.com/wiki/index.php/Especial:Popularpages) en el wiki del club hay varios ejemplos de lo que necesitas hacer.
Aqui (http://wiki.clubdelphi.com/wiki/index.php/Tutorial_Conectar_a_Access_con_ADO_%28Ejemplo_Visual%2C_Wink%29) uno especifico en wink.
Aqui (http://wiki.clubdelphi.com/wiki/index.php/Tutorial_Programa_Ejemplo_Ado%2C_MsAccess_%28Novatos%29) hay otro.
Espero te ayuden, esta muy completos.
Saludos

aikai
18-10-2007, 10:29:02
Muchas gracias, ya conseguí solucionar el primer problema, se debía a la propiedad LoginPrompt del ADOConnection que por defecto está a true.

El error que me da ahora estoy casi segura de que es por la sentencia SQL, la he probado dentro de Access y sin problemas. ¿Será que no interpreta el INNER JOIN? Os la pongo aquí a ver si me podéis echar otra manita ;)

SELECT Sum(IIf(IsNull(g.exrate),gp.total_inv,(gp.total_inv)/g.exrate)) AS INVERSION,
Sum(IIf(IsNull(g.exrate),gp.total_ganado-gp.total_inv,(gp.total_ganado-gp.total_inv)/g.exrate)) AS BENEFICIO, (BENEFICIO/INVERSION)*100 AS MARGEN, Format(g.date'yyyy') & ", " & Format(g.date,'mm') AS meses
FROM tabla1 AS g INNER JOIN tabla2 AS gp ON g.id = gp.id
WHERE gp.id = (select prefer_valot from prefs where pref_key = 'PRIN')
GROUP BY Format(g.date,'yyyy') & ", " & Format(g.date,'mm')
ORDER BY Min(g.date);

kakarotv5
15-11-2007, 15:16:51
Aqui (http://wiki.clubdelphi.com/wiki/index.php/Tutorial_Conectar_a_Access_con_ADO_%28Ejemplo_Visual%2C_Wink%29) uno especifico en wink.


Hola, he seguido el magnífico tutorial hecho en Flash, es una pasada, he comprendido muy bien como hacer una aplicación sencilla rápidamente.

Mi duda es, ¿cómo podría hacer lo que se explica en el tutorial pero si mi base de datos estuviera en un equipo remoto?

Me interesa mucho ese aspecto pero no encuentro nada.

Gracias de nuevo y un saludo.