[fpc-pascal] Create dynamic SQL according to available params

Michael Thompson mike.cornflake at gmail.com
Thu Apr 7 14:25:34 CEST 2016


On 7 April 2016 at 20:00, Luiz Americo Pereira Camara <
luizamericop at gmail.com> wrote:
> Is there any code that given a SQL Template would generate the second
filter when paramy is available and keep blank when not available?

Nope, or at least I don't think so.  I've spent a long time looking as
well.  Been meaning to bring up the discussion either here or in the forum

I ended up implementing my own "Macro" functionality.  Unfortunately I've
broken a few rules and tied the functionality to the UI, making it hard to
share.
I need this all the time.  My primary usage is in Master-Detail
relationships, where I always want the Master to contain an "ALL" option.
To achieve I write SQL's like...

   Select Incident_Type As "Incident_Type",
           Description As "Description",
           'Where Incident_Type=''' || Incident_Type || '''' As "Filter_ID"
    From PIG
    Union
    Select
         '(ALL)' As "Incident_Type",
         'All Types' As "Description",
         '' As "Filter_ID"
    From DUAL

The first Select returns the Master Table, the second Select appends my
ALL.  Note that "Filter_ID" contains my full SQL Where clause.

Over in my Detail SQL, I can write stuff like

    Select *
    From Incident
    :Filter_ID
    Order By Incident_Type, Incident

I implement the detail refresh myself (easy), and I implement the Macro
substitution myself before executing the Detail SQL.  (Any SQL field ending
in _ID is automatically hidden in my code)

I use this so often, and in so many different ways (Macro's don't have to
contain Where clauses, they can be any SQL elements, including simple
data), that I cannot consider SQL development without it.  And as such,
I've often wondered how do others deal with this...

Mike
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20160407/0c241323/attachment.html>


More information about the fpc-pascal mailing list