Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Query Wizard

edited May 2002 in General
Hi, I want to use the RB Query Wizard to create my queries. My question is:
How can I deliver variables to my query ? For example:
Select *
from orders
where CustNo = "variable"

Thanks in advance
Andreas

Comments

  • edited May 2002
    See the Criteria object handling in this article:

    -------------------------------------------------
    Tech Tip: How to access the SQL object associated
    with a Report created using DADE
    -------------------------------------------------

    TdaSQL is a class defined in daSQL.pas.
    TdaSQL has a run-time interface for adding search Criteria,
    etc. For an example see the EndUser\Custom DataViews example.

    OR you can assign its SQLText property. Please note that
    once you directly assign the SQLText property the Query tool
    buttons such as Sort, Search can no longer be used.



    uses
    daDataModule;


    function GetSQLObject(aReport: TppReport; var aSQL: TdaSQL): Boolean;
    var
    lDataModule: TdaDataModule;
    lDataView: TdaDataView;
    begin

    aSQL := nil;

    {get the datamodule}
    lDataModule := daGetDataModule(aReport);

    if (lDataModule <> nil) then
    begin
    lDataView := lDataModule.DataViews[0];

    if (lDataView <> nil) and (lDataView is TdaQueryDataView) then
    aSQL := TdaQueryDataView(lDataView).SQL;

    end;

    Result := (aSQL <> nil);

    end;


    Once you have the SQL object, you can do useful operations on it, such as
    creating search criteria:


    procedure CreateCriteria;
    var
    lSQL: TdaSQL;
    lFields: TStringList;
    lCriteria: TdaCriteria;
    liIndex: Integer;
    begin

    {get SQL object}
    GetSQLObject(ppReport1, lSQL);

    {if criteria have not been created, then add them}
    if (lSQL.CriteriaCount = 0) then
    begin
    {get all available criteria fields}
    lFields := TStringList.Create;

    lSQL.AvailableCriteriaList(lFields);

    {set string list entries to field names}
    for liIndex := 0 to lFields.Count - 1 do
    lFields[liIndex] := TdaField(lFields.Objects[liIndex]).FieldName;

    {create order no criteria}
    liIndex := lFields.IndexOf('CustNo');

    if (liIndex <> -1) then
    begin
    lCriteria := lSQL.SelectCriteria(liIndex);
    lCriteria.Operator := dacoEqual;
    end;

    {create art code criteria}
    liIndex := lFields.IndexOf('Paymentmethod');

    if (liIndex <> -1) then
    begin
    lCriteria := lSQL.SelectCriteria(liIndex);
    lCriteria.Operator := dacoLike;
    end;

    {create begin/end date criteria}
    liIndex := lFields.IndexOf('SaleDate');

    if (liIndex <> -1) then
    begin
    lCriteria := lSQL.SelectCriteria(liIndex);
    lCriteria.Operator := dacoBetween;
    end;

    lFields.Free;
    end;

    {set order no. search value}
    lSQL.Criteria[0].Value := '1221';

    {set payment method search value}
    lSQL.Criteria[1].Value := 'Visa';

    {set order date search value}
    lSQL.Criteria[2].Value := '12/31/1990,12/31/1999';

    end;

    --
    Tech Support mailto:support@digital-metaphors.com
    Digital Metaphors http://www.digital-metaphors.com
This discussion has been closed.