Cita:
Empezado por bulc
Por cierto, las subpropiedades de la Prop. Params del Query me dejan un poco al pairo. ¿Se pueden explicar aqui?
|
Hola bulc.
A ver si puedo aclarar un poco el asunto...
Los parámetros se definen en la consulta y siempre se escriben precedidos por dos puntos ':'. La consulta se puede asignar en tiempo de diseño o en tiempo de ejecución.
Si en tiempo de diseño, desde el
Object Inspector, asignamos a la propiedad
SQL el valor:
Código SQL
[-]
SELECT *
FROM TABLA
WHERE NAME = :PNAME
Se habrá creado un parámetro llamado "PNAME", cosa que podes comprobar desde el mismo
Object Inspector haciendo click sobre los '...' de la propiedad
Params.
Habiendo sido creada la consulta y su parámetro, se puede llamar bién por su propiedad vectorial
Params:
Código Delphi
[-]
with IBQuery1 do
begin
Close;
Params[0].AsString := Edit1.Text;
Open;
end;
O bién mediante el método
ParamByName:
Código Delphi
[-]
with IBQuery1 do
begin
Close;
ParamByName('PNAME').AsString := Edit1.Text;
Open;
end;
De otro modo, si consulta y parámetro son creados en tiempo de ejecución, se deben especificar ámbos.
Mediante la propiedad vectorial
Params:
Código Delphi
[-]
with IBQuery1 do
begin
Close;
SQL.Text := 'SELECT * FROM TABLA WHERE NAME = :PNAME';
Params[0].AsString := Edit1.Text;
Open;
end;
Mediante el método
ParamByName:
Código Delphi
[-]
with IBQuery1 do
begin
Close;
SQL.Text := 'SELECT * FROM TABLA WHERE NAME = :PNAME';
ParamByName('PNAME').AsString := Edit1.Text;
Open;
end;
Existe un tercer modo de acceso a los parámetros y es mediante la propiedad
ParamValue:
Código Delphi
[-]
with IBQuery1 do
begin
Close;
SQL.Text := 'SELECT * FROM TABLA WHERE NAME = :PNAME';
Params.ParamValues['PNAME'] := Edit1.Text;
Open;
end;
Por último cabe acotar que si existe una definición de consulta/parámetros en tiempo de diseño, al asignar una nueva definición de consulta/parámetros en tiempo de ejecución, se sobreescribirá lo realizado en tiempo de diseño.
Saludos.
