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 04-09-2012
wull wull is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 30
Poder: 0
wull Va por buen camino
Asignar una variable a la propiedad Parameters de ADOQuery

Veran estoy haciendo un reporte (en Fast Report 4) usando como DataSet un ADOQuery; pero el reporte debe depender de un variable que el usuario ha de elegir desde un ComboBox (tambien he tratado con un RadioGroup) utilizo el siguiente codigo sql para el ADOQuery
Código SQL [-]
SELECT * FROM mitabla WHERE año=:anio
Según yo así estoy pasando un parametro. anio es una variable de tipo String asi como el campo año es de tipo texto (Mi BD esta hecha en Acces 2010), en la propiedad parameter del Quey lo dejo vacio, por lo que al mostrar el reporte no contiene nada, si pongo un valor a parameters entonces si lo muestra pero solo de ese valor.
Se supone que anio debe cambiar dependiendo de la opcion que el usario ha seleccionado, para lo cual hago lo siguiente:
Código Delphi [-]
procedure TForm2.ComboBox1Click(Sender: TObject);
begin
anio:=ComboBox1.Text;
end;

Se supone que con esto estoy guardando en la variable anio la opcion que el usuario ha elegido y despues de esto la paso como parametro a la consulta en el ADOQuery, pero al hacerlo asi el reporte no me muestra nada... necesito de sus sugerencia por favor.
Responder Con Cita
  #2  
Antiguo 04-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola wull.

Proba de este modo:
Código Delphi [-]
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  with ADOQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM MITABLA WHERE ANIO = :PANIO';
    Parameters.ParamByName('PANIO').Value := ComboBox1.Items[ComboBox1.ItemIndex];
    Open;
  end;
end;
No trabajo con Access así que te consulto: ¿ Permite la 'ñ' en el nombre de un campo ? (año)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 05-09-2012
wull wull is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 30
Poder: 0
wull Va por buen camino
Error al pasar el parametro en el ADOQuery

Cita:
No trabajo con Access así que te consulto: ¿ Permite la 'ñ' en el nombre de un campo ? (año)
Acces si permite la 'ñ' , de hecho he realizado otras consultas con un valor constantes por ejemplo:
Código SQL [-]
SELECT * FROM mitabla WHERE año='2012'
El problema es cuando uso un parámetro que sea variable.

Por cierto tu sugerencia no funciono, me manda un error que dice que faltan algunos parametros... espero me puedas ayudar
Imágenes Adjuntas
Tipo de Archivo: jpg Imagen1.jpg (10,2 KB, 13 visitas)
Responder Con Cita
  #4  
Antiguo 05-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
var A: String;
begin
  A:= Combobox1.text;
  with ADOQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM MITABLA WHERE ANIO = :dato';
    Parameters[0].Value := QuotedStr(A);
    Open;
  end;
end;
o
Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
var A: String;
begin
  A:= QuotedStr(Combobox1.text);
  with ADOQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM MITABLA WHERE ANIO = :dato';
    Parameters[0].Value := A;
    Open;
  end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 05-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por wull Ver Mensaje
Por cierto tu sugerencia no funciono, me manda un error que dice que faltan algunos parametros...
Hola wull.

Es extraño... probé el código que te puse en el mensaje #2 con una tabla Access y funciona bién.

¿ Podrías poner exáctamente (copiar/pegar) el código que te está dando el error ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 05-09-2012
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
Cita:
Empezado por wull Ver Mensaje
en la propiedad parameter del Quey lo dejo vacio, por lo que al mostrar el reporte no contiene nada, si pongo un valor a parameters entonces si lo muestra pero solo de ese valor.
Se supone que anio debe cambiar dependiendo de la opcion que el usario ha seleccionado, para lo cual hago lo siguiente:
Código Delphi [-]
procedure TForm2.ComboBox1Click(Sender: TObject);
begin
anio:=ComboBox1.Text;
end;
Quizá me equivoco, pero me da la impresión de que piensas que el valor del parámetro debe cambiar automáticmente conforme cambias el elemento seleccionado del combo. De se así, es un error, cada vez que cambies el valor del cmbo, debes reasignar el valor del parámetro como ya te indicó ecfisa.

// Saludos
Responder Con Cita
  #7  
Antiguo 05-09-2012
wull wull is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 30
Poder: 0
wull Va por buen camino
Talking

Lo siento creo que los nervios me traicionaron, todo está bien solo que use el codigo que me sugirió ecfisa y me confundi, ya que puse
Código Delphi [-]
SQL.Text:= 'SELECT * FROM MITABLA WHERE ANIO = :PANIO';
    Parameters.ParamByName('PANIO').Value := ComboBox1.Items[ComboBox1.ItemIndex];
Y me mandaba error porque yo no tengo en mi tabla ningun campo llamado ANIO, ese fue mi error crei que era un parametro hasta que analice todo y me di cuenta que era el nombre del campo... lo único que tuve que hacer fue cambiar ANIO por AÑO.
Código Delphi [-]
SQL.Text:= 'SELECT * FROM MITABLA WHERE AÑO = :PANIO';
    Parameters.ParamByName('PANIO').Value := ComboBox1.Items[ComboBox1.ItemIndex];

Me funciona muy bien gracias por la ayuda brindada.

Por cierto Roman, tenias razón yo creía que los parámetros cambian automáticamente, pero gracias a tu comentario y al consejo de ecfisa, ahora todo esta bajo control, por el momento jaja ... muchas gracias también a ti [Caral]
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
MySQL, Problema con ADOQuery y parameters Sole_l SQL 8 21-03-2009 21:31:35
Copia de Parameters en ADOQuery hades2600 Conexión con bases de datos 4 22-11-2007 00:24:07
asignar el resultado de un sql a una variable Cañones SQL 2 14-04-2007 15:29:43
Asignar la propiedad de un DBLookupCombobox JoanKa Varios 2 23-05-2006 18:14:02
asignar un String a la propiedad Sql de un AdoQuery gulder Conexión con bases de datos 1 09-11-2005 16:23:31


La franja horaria es GMT +2. Ahora son las 09:41:53.


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