[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]
Q: How do I pass a variable to a query?
A: First, you must write a query that uses a variable.
Select Test."FName", Test."Salary Of Employee"
From Test
Where Test."Salary of Employee" > :val
Note: If you just write the field name as
"Salary of Employee" you will get a Capability Not
Supported error. It must be Test."Salary of Employee".
In this can the variable name is "val", but it can be whatever
you want (of course). Then, you go to the TQuery's params
property and set the "val" parameter to whatever the
appropriate type is. In our example here we will call it an
integer.
Next, you write the code that sets the parameter's value.
We will be setting the value from a TEdit box.
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1 do
begin
Close;
ParamByName('val').AsInteger := StrToInt(Edit1.Text);
Open;
end;
end;
Note: you may want to place this code in a try..except
block as a safety precaution.
If you want to use a LIKE in your query, you can do
it this way:
Note: This next section uses the customer table from
the \delphi\demos\data directory. It can also be
referenced by using the DBDEMOS alias.
SQL code within the TQuery.SQL property:
SELECT * FROM CUSTOMER
WHERE Company LIKE :CompanyName
Delphi code:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1 do
begin
Close;
ParamByName('CompanyName').AsString := Edit1.Text + '%';
Open;
end;
end;
An alternate way of referencing a parameter
(other then ParamByName) is params[TheParameterNumber].
The way that this line:
ParamByName('CompanyName').AsString := Edit1.Text + '%';
can be alternately written is:
Params[0].AsString := Edit1.Text + '%';
The trick to the wildcard is in the concatenating of the
percentage sign at the end of the parameter.
[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]