Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Intercalar Variable en SQL... (https://www.clubdelphi.com/foros/showthread.php?t=45428)

foetus 03-07-2007 02:26:25

Intercalar Variable en SQL...
 
Necesito que alguien me diga como intercalar variables en una consulta SQL.
El objetivo de esto es que el usuario eliga la forma de la busqueda..
por ejemplo si temgo um comboBox, con Buscar por fecha, por ID , o por nombre, guardaré esto en una variable consulta...

Como pondria la variable aquy? :confused:
Por ej: Select * from ORDENES Where ....variable...... =" +Edit1.Text;

Saludos.....

Caro 03-07-2007 03:19:26

Hola foetus, tendrias que tener una variable donde almacenar el nombre del campo por el cual quieres hacer la busqueda y despues lo concatenas.

Código Delphi [-]
Var
 campo:String;
begin  
 Case ComboBox1.ItemIndex of
 0:campo:='fecha';
 1:campo:='id';
 2:campo:='nombre';
 end;
  ........
  Query1.Sql.Text:='Select * from ORDENES Where '+campo+'=' +Edit1.Text;
  ........

Saludos

ContraVeneno 03-07-2007 15:32:10

¿Para que declarar una variable tipo Cadena si con la propiedad "Text" del combo se puede realizar ?

Código Delphi [-]
with TuQuery do begin
 If active then close;
 SQL.Clear;
 SQL.Add('Select Campos');
 SQL.Add('From TuTabla');
 SQL.Add('Where :Campo = :Valor');
 ParamByName('Campo').AsString := TuCombo.Text;
 ParamByName('Valor').AsString := TuEdit.Text;
 Open;
 .......
end;

foetus 04-07-2007 03:26:00

gracias por ayudarme en esto ah Ambos.....

...saludos

foetus 05-07-2007 20:06:08

Código Delphi [-]
ADOQuery1.Close;
with ADOQuery1 do begin
If active then close;
SQL.Clear;
SQL.Add('Select *');
SQL.Add('From Ordenes');
SQL.Add('Where :Campo = :valor');
ParamByName('Campo').AsString := ComboBox1.Text;
ParamByName('valor').AsString:= Edit4.Text;
ADOQuery1.Open;

algo como esto trate de hacer. pero no me funciona, me da error en la parte del parametro:ParamByName('Campo').AsString := ComboBox1.Text;

Tambien traté: ADOQuery1.Paremeters.ParamByName('campo').AsString := ComboBox1.text;

no se que pueda ser??:cool:

ContraVeneno 05-07-2007 20:10:19

Si nos dices que error es el que te da, podríamos darte una idea... pero así adivianando cuál es el error pues no se me ocurre nada. :D


Código Delphi [-]
with ADOQuery1 do begin
 If active then close;
 SQL.Clear;
 SQL.Add('Select *');
 SQL.Add('From Ordenes');
 SQL.Add('Where '+ComboBox1.Text+' = :Valor');
 ParamByName('Valor').AsString := TuEdit.Text;
 Open;
 .......
end;

foetus 09-07-2007 01:38:13

bueno...
iva a incluir los errores, en el mensage anterior.. pero creí que los tenia en un USB, y no era asi... aquy estan los errores que me da......
Este es el Codigo:
Código SQL [-]
begin
ADOQuery1.Close;
with ADOQuery1 do begin
If active then close;
SQL.Clear;
SQL.Add('Select *');
SQL.Add('From Ordenes');
SQL.Add('Where :Campo = :valor');

ParamByName('Campo').AsString := ComboBox1.Text;

ParamByName('valor').AsString:= Edit4.Text;
ADOQuery1.Open;


end;


errores......
Código:


Undeclared identifier: 'ParamByName'

Missing operator or semicolon


jcarteagaf 09-07-2007 02:21:28

Parametros en ADO
 
Debes usar:

Código Delphi [-]
with ADOQuery1 do
begin
  Parameters.parambyname('PARAMETRO').Value := valor;
...
end;

Saludos


La franja horaria es GMT +2. Ahora son las 18:37:15.

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