Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2007
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Cool Crear una Consulta Tquey con parámetros

Hola a todos

Estoy intentando crear un consulta que maneja parámetros, para el efecto empleo el siguiente codigo:

Código:
 QDisponibilidades:= Tquery.Create(self);
 with QDisponibilidades do
   begin
     DatabaseName:= 'DBMilenium';
     close;
      sql.Clear;
      sql.Add(' SELECT Disponibilidad.CodigoDisponibilidad,  Disponibilidad.FechaExpedicion, Disponibilidad.Objeto, Disponibilidad.Valor, AnteproyectoGastos.CodigoPresupuestal '+
              ' FROM (Recurso INNER JOIN (AnteproyectoGastos INNER JOIN GastosRecursos ON AnteproyectoGastos.CodigoPresupuestal = GastosRecursos.CodigoPresupuestal) ON Recurso.CodigoRecurso = GastosRecursos.CodigoRecurso) INNER JOIN '+
              ' (Disponibilidad INNER JOIN DisponibilidadRubro ON Disponibilidad.CodigoDisponibilidad = DisponibilidadRubro.CodigoDisponibilidad) ON (AnteproyectoGastos.CodigoPresupuestal = DisponibilidadRubro.CodigoPresupuestal) AND '+
              ' (Recurso.CodigoRecurso = DisponibilidadRubro.CodigoRecurso) '+
              ' WHERE AnteproyectoGastos.CodigoPresupuestal=:CodigoPresupuestal'
              ' order by Disponibilidad.CodigoDisponibilidad');
      try
        ParamaByName('CodigoPresupuestal').Value:= ECodigoPresupuestal.Text;
        Open;
       if RecordCount < 1 then
           MessageDlg('No existen dispobilidades con este rubro',MTInformation,[MbOk],0);
      Except
      end;
end;
Bien el caso en concreto es el siguiente:

Cuando ejecuto el código, me envia una error, por que no existe el párametro, entonces como puedo crear el parametro antes de ejecutar la consulta?


Gracías de Antemano

GertorresM
Colombia
Responder Con Cita
  #2  
Antiguo 06-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Sin saber que base de datos usas, que componentes es un poco dificil, ya que en access pasan cosas diferentes que en sql u firebird en cuanto a parametros.
Por curiosidad coloca la sentencia sql en el sql string del query, esto creara el parametro, ejecutalo de nuevo, tal vez camine.
Saludos
Responder Con Cita
  #3  
Antiguo 06-08-2007
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Wink Re.

En la actualidad estoy utilizando lo siguiente

Delphi 6 Enterprise
Conexion Mediante BDE
Base de Datos MS Access

y aprovecho para preguntarte lo mismo cuando uso PostGreSQL, mediante el empleo de herramientas Zeos
Responder Con Cita
  #4  
Antiguo 06-08-2007
egbaquela egbaquela is offline
Miembro
 
Registrado: jul 2007
Posts: 21
Poder: 0
egbaquela Va por buen camino
Crear una Consulta Tquey con parámetros

Posiblemente sea un error al copiar el código, pero la propiedad "ParamByName" la escribiste mal, quizas sea eso.
Igual trata de usar espacios entre el '=' y el ':' en la sentencia SQL (donde referencias al parámetro), a veces lo interpreta mal.
Saludos, Gabriel.
Responder Con Cita
  #5  
Antiguo 06-08-2007
Amos Amos is offline
Miembro
 
Registrado: ago 2007
Ubicación: mexico
Posts: 19
Poder: 0
Amos Va por buen camino
Hola GerTorresM cuando yo uso este tipo de parametros lo que hago es definir el tipo de dato, dependiendo de la columna en tu BD.

Supongo que tu columna CodigoPresupuestal es de tipo String entonces la columna es como String, por lo tanto sería:

Código Delphi [-]
ParamaByName('CodigoPresupuestal').AsString:= ECodigoPresupuestal.Text;

Espero te ayude.
__________________
"... cuando Dios venga a la tierra
y mire a los hombres llorar,
él preferirá la muerte para ti..."(Especimen)
Responder Con Cita
  #6  
Antiguo 06-08-2007
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Wink Tema Concluido

Gracias por toda la colaboración dada, al parecer era un error al digitar el código, lo he corregido y funciona de las mil maravillas, aprovecho para lanzar otra pregunta:

cuando se ejecuta la consulta ésta llena un DBGrid, un de los campos es de fecha y se la llenado previamente con un DateTimePicker, por lo tanto el registro guarda la hora y fecha, bien en el grilla de datos (DBGrid) aprece en este campo tanto hora como fecha, como podría establer una mascara para la fecha si los campos que llenan el dbgrid propienen de la consulta que estaba creando anteriormente.


Gracias de Antemano


GerTorresM
Colombia
Responder Con Cita
  #7  
Antiguo 06-08-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Un comentario nada más. Como supongo ya sabes, puedes agregar una sentencia SQL a un TQuery utilizando la propiedad Text, o en tu caso, utilizando la función Add, la diferencia entre uno y otro, es que Text te lo pone todo en una sola línea de texto y utilizando Add, la instrucción estará dividida en líneas.

En tu caso, estas utilizando Add como se utilizaría Text, perdiendo así la ventaja que tiene Add sobre Text, vamos, que es como tener un coche y nunca usarlo.

Yo te recomendaría que utilizaras Add en cada línea de la instrucción SQL:
Código Delphi [-]
  

sql.Add(' SELECT Disponibilidad.CodigoDisponibilidad,  Disponibilidad.FechaExpedicion, Disponibilidad.Objeto, Disponibilidad.Valor, AnteproyectoGastos.CodigoPresupuestal ');
sql.Add(' FROM (Recurso INNER JOIN (AnteproyectoGastos INNER JOIN GastosRecursos ON AnteproyectoGastos.CodigoPresupuestal = GastosRecursos.CodigoPresupuestal) ON Recurso.CodigoRecurso = GastosRecursos.CodigoRecurso) ');
SQL.Add(' INNER JOIN (Disponibilidad INNER JOIN DisponibilidadRubro ON Disponibilidad.CodigoDisponibilidad = DisponibilidadRubro.CodigoDisponibilidad) ON (AnteproyectoGastos.CodigoPresupuestal = DisponibilidadRubro.CodigoPresupuestal) ');
SQL.Add(' AND (Recurso.CodigoRecurso = DisponibilidadRubro.CodigoRecurso) ');
sql.Add(' WHERE AnteproyectoGastos.CodigoPresupuestal=:CodigoPresupuestal');
sql.Add(' order by Disponibilidad.CodigoDisponibilidad');
__________________

Responder Con Cita
  #8  
Antiguo 06-08-2007
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Smile Gracias por el consejo

Muchas gracias por tu consejo, estoy seguro que esto facilitara el manetnimiento del código


GerTorresM
Responder Con Cita
  #9  
Antiguo 07-08-2007
Amos Amos is offline
Miembro
 
Registrado: ago 2007
Ubicación: mexico
Posts: 19
Poder: 0
Amos Va por buen camino
Post

Si quieres mostrar solo la fecha en una columna en el DBGrid entonces:

Tienes que agregar las columnas a tu Query para conseguir modificar la forma en que se muestran las columnas, esto se consigue realizando un doble-clic en el TQuery

Despues con el botón derecho en el dialogo que se muestra utilizar "Add fields...". Seleccionas las columnas que desees.

Entonces edita la propiedad "DisplayFormat" y le colocas una mascara como esta :"dd/mmm/yyyy", con esto consigo que se muestra la columna fecha como "12/May/2007"

Espero que te sirva y que me entiendas
__________________
"... cuando Dios venga a la tierra
y mire a los hombres llorar,
él preferirá la muerte para ti..."(Especimen)
Responder Con Cita
  #10  
Antiguo 08-08-2007
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Talking Gracias por las respuestas

Gracías por tu tiempo y por la respuesta, si cuando trabajas bajando los componentes de las barra de herramientas, es muy funcional la aplicación de lo escrito en tu respuesta, pero cuando estas creando el objeto en tiempo de ejecución resulta poco aplicable.

Lo que sucede en este caso es que la consulta puede llegar a variar ya que la escribe el usuario, entonces como te das cuenta no sabes los nombres de los campos resultantes y muchos menos los tipos de datos que te devuleve.

Desde este punto de vista es que pregunto si puedo de alguna manera agregar los campos y establecer de acuerdo al tipo de dato manejado algún tipo de formato de datos.
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
consulta con parametros fecha didier MySQL 2 02-08-2006 15:58:25
Parametros integer en consulta php jgutti PHP 2 14-06-2006 21:16:20
Parametros en Consulta SQL joi Varios 2 31-10-2005 19:36:49
ayuda con parametros en consulta ronimaxh Varios 3 10-03-2005 20:04:33
consulta con parametros en blanco merlin SQL 2 02-12-2003 16:13:20


La franja horaria es GMT +2. Ahora son las 18:58:25.


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