Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   query con parametros ayudenme? (https://www.clubdelphi.com/foros/showthread.php?t=47384)

juangabriel1786 26-08-2007 16:31:57

query con parametros ayudenme?
 
Alguien ayudeme como hacer una consulta con un adoquery pasandole un parametro que se lee de un edit1, osea que mientras se baya digitando algo en el edit se balla filrtando en un dbgrid abajo que esta asociado al query en el evento onkey press yo tengo este codigo

consulta,s : String;
begin
s:='';
consulta:='';
//seleccionamos el campo activo o inactivo
if RadioGroup1.ItemIndex = 0 then
begin
s:='cod_unidad';
with Myquery do
begin
Myquery.Close;
Myquery.Parameters.ParamByName('parametro').Value := s;
Myquery.Parameters.ParamByName('parametro1').Value := criterio.text;
//Myquery.SQL.Add('select cod_unidad,descripcion,nota from unidad where cod_unidad =:parametro1');
Myquery.Open;

// DBgrid1.DataSource:=DSMyquery;
end;
end
else
begin
s:='descripcion';
with Myquery do
begin
Myquery.Close;
Myquery.Parameters.ParamByName('parametro').Value := s;
Myquery.Parameters.ParamByName('parametro1').Value := criterio.text;
Myquery.Open;

//DBgrid1.DataSource:=DSMyquery;
end;

y en la propiedad sql del query tengo esto:


select cod_unidad,descripcion,notas from unidad where :parametro like :parametro1;

droguerman 27-08-2007 03:10:04

sin parametros podria ser algo asi:

Código Delphi [-]
  with dataset do
  begin
     filtered := false;
     filter := 'cod_unidad LIKE '+quotedStr(edit1.text+'%');
     filtered := true;
  end;

ContraVeneno 27-08-2007 18:22:18

¿para que utilizas "With" si de todos modos estas escribiendo todo el componente?

Es como ponerte zapatos deportivos y no hacer ejercicio...

Si utilizas:
Código Delphi [-]
with MyQuery do begin

No es necesario que pongas el componente otra vez:
Código Delphi [-]
with MyQuery do begin
 MyQuery.Open; //esto no es lógico
end; //with


Lo correcto sería:
Código Delphi [-]
with MyQuery do begin
  Open; 
end; //with

ramonc 29-08-2007 13:15:12

A mi me gusta montar las queries dinámicamente dentro del código, por ejemplo

Código Delphi [-]
 
    q.SQL.Add('SELECT  a.PUMPID, a.CABNOM, a.MAXFRE, a.TIP, B.MAXVOL, B.STA, B.ENA');
    q.SQL.Add('from TCALPUMP a, TTNK b');
    q.SQL.Add('WHERE A.PUMPID = ' + vPumpId; //numero de bomba
    q.SQL.Add('ORDER BY 1');

y si te fijas, el parámetro lo concatenas.

Saludos

basti 29-08-2007 14:48:49

El problema creo que es que estás intentando utilizar un parámetro como nombre de campo. Los parámetros sólo valen para valores. Tendrías que hacer una combinación entre crear la consulta y el parámetro. Algo así:

Código Delphi [-]
Myquery.Close;
Myquery.SQL.Clear;
Myquery.SQL.Add('select cod_unidad,descripcion,notas from unidad ');
Myquery.SQL.ADD('where '  + s + ' like : parametro1');
Myquery.Parameters.ParamByName('parametro1').Value := criterio.text;
Myquery.Open;


La franja horaria es GMT +2. Ahora son las 09:40:12.

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