Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2006
ercrizeporta ercrizeporta is offline
Miembro
 
Registrado: jun 2005
Posts: 131
Poder: 19
ercrizeporta Va por buen camino
Question problemas con TQUERY

hola, estoy un poco pegado en el uso de los TQUERY, y tenía unas cuantas dudas en cuanto a su funcionamiento, ahi van mis preguntas:

1º al definir un tipo TQUERY debo definirle tambien un tdatasource??

2º la consulta sobre lo que kiero visualizar en este tquery donde y como la realizo??en el apartado sql??si es así, puedo usar ahi variables que haya creado en algún form de mi proyecto??

MUCHAS GRACIAS!!!
Responder Con Cita
  #2  
Antiguo 21-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
1 el query ejecuta la sentencia sql, el datasorce enlaza con el componente.
2 la consulta se puede realizar en un reporte, un dbgrid, dbedit, ect., se pueden usar variables de locales o generales, desconozco si se pueden usar variables de otro form que no sea el de uso, en tal caso creo no seria necesario, tal vez creando un tipo y usarlo en tu programa completo.
Saludos
Responder Con Cita
  #3  
Antiguo 21-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por lo general, sólo necesitas el DataSource si quieres presentar los registros que devuelva el Query en controles de edición de datos (TDBEdit, TDBGrid, etc.) o para establecer una relación maestro-detalle con algún otro dataset.

La sentencia SQL, en efecto, la colocas en la propiedad SQL del Query. Esta propiedad es de tipo TStrings, o sea que puedes poner la sentencia en varias líneas.

En cuanto al uso de variables, primero que nada tienes que entender que el código delphi y el código sql son mundos aparte. El código sql lo interpreta el servidor de datos, el cuál es ajeno a tu aplicación. Tú simplemente usas delphi para mandarle sentencias a dicho servidor, pero éste no reconocerá ningún símbolo (variables, constantes, etc.) que uses en tu programa.

Lo anterior no significa que no puedas pasar valores de variables en delphi a las sentencias sql, pero observa la diferencia entre la variable X y el valor de X.

Digamos que tienes una sentencia del tipo:

Código SQL [-]
select * from usuarios where id = 84

pero quieres poder especificar ese id según el valor de alguna variable en tu aplicación, digamos UsuarioId.

No puedes escribir la sentencia

Código SQL [-]
select * from usuarios where id = UsuarioId

porque el servidor de datos no reconocerá el término UsuarioId. En cambio, si escribes algo como:

Código Delphi [-]
Query1.SQL.Add('select * from usuarios where id = ' + IntToStr(UsuarioId));

delphi evaluará el valor de la variable UsuarioId (digamos que es 84), lo convertirá a una cadena (función IntToStr) y el resultado, '84', lo concatenará a la cadena 'select * from usuarios where id = '. De esta forma, el parámetro que finalmente se pasa al método Add es

Código Delphi [-]
'select * from usuarios where id = ' + '84'

esto es,

Código Delphi [-]
'select * from usuarios where id = 84'

que ya es entendible perfectamente para el servidor de datos.

Ahora bien, lo más recomendable para el paso de valores es el uso de parámetros. Los parámetros en un Query son indicadores especiales en el cuerpo de la sentencia que se llenan posteriormente pero antes de la ejecución de la consulta.

Siguiendo el ejemplo anterior, puedes escribir la sentencia:

Código SQL [-]
select * from usuarios where id = :usuario_id

en el SQL del Query. Los dos puntos que preceden al término usuario_id, indican a la componente Query, que se trata de una parámetro cuyo valor debe proporcionarse antes de la ejecución. De no hecerlo así, la componente indicaria un error.

Para llenar el parámetro usas el método ParamByName:

Código Delphi [-]
Query1.ParamByName('usuario_id').AsInteger := UsuarioId;

Con esto, la componente busca en la sentencia sql un parámetro llamado usuario_id y lo sustituye por el valor que se le asigne en ParamByName; en este caso, el valor de la variable UsuarioId.

El uso de parámetros te da un código mucho más limpio que la concatenación de valores al momento de formar la sentencia sql.

// Saludos

Última edición por roman fecha: 21-09-2006 a las 17:42:38.
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
Problemas con TQuery lucero_chivas C++ Builder 3 16-08-2006 05:32:41
Problemas con Tquery Coco_jac Varios 4 26-12-2005 18:43:33
Problemas con componente TQUERY mateamargo SQL 1 21-02-2004 02:49:23
Tquery con problemas jobapi Conexión con bases de datos 13 28-08-2003 19:56:50
Problemas TQuery Hozkar Conexión con bases de datos 2 01-07-2003 10:19:37


La franja horaria es GMT +2. Ahora son las 22:05:57.


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