Autor Téma: FireDAC vlastni makro  (Přečteno 275 krát)

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 706
  • Karma: 41
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
FireDAC vlastni makro
« kdy: 10-08-2017, 11:15:35 »
Muzu si nejak nadefinovat vlastni makro? http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Preprocessing_Command_Text_(FireDAC)
Nasel jsem: http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/FireDAC.IFDPhysCommand.Macros_Sample, ktere by mi pomohlo, ale to je pro kazde TFDQuery zvlast. Ja bych to potreboval globalne pro celou TFDConnection.
Embarcadero Technology Partner, juj. Člen Lazarus týmu, oj.

Online Delfin

  • Hrdina
  • ****
  • Příspěvků: 431
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:FireDAC vlastni makro
« Odpověď #1 kdy: 10-08-2017, 16:57:33 »
Co se tyce escape, ty jsou fixni, ale mam jen starsi verzi FireDAC takze je stale nejaka sance ze je ted preprocesor exponovany. Ten sample kod ukazuje jen tzv. substitucni promenne. A protoze preprocessor pouziva interni TFDPhysPreprocessor vytvareny v TFDCustomCommand.PreprocessSQL, sance jina nebude (myslim vytvoreni vlastniho escape jako treba {esc val}). Tedy nejspis bez obejiti toho hardcoded preprocesoru, escape jen per command objekt (at jde o query nebo podobne objekty) na urovni upravy hodnot substitucnich promennych (uvedenych ! nebo &).

Btw. neni treba delat ty low level opicarny. Staci pristup jako napr.

Kód: Delphi [Vybrat]
  1. FDQuery.SQL.Text := 'SELECT MyField FROM !MyTable WHERE MyValue !MySign :MyValue';
  2. FDQuery.MacroByName('MyTable').AsIdentifier := 'SomeTable';
  3. FDQuery.MacroByName('MySign').AsRaw := '>=';
  4. FDQuery.ParamByName('MyValue').AsInteger := 666;
  5. FDQuery.Open;

Co se tyce preprocesor funkci pouzitych v SQL prikazech (jako napr. {ATAN2(0, 1)}), tam je treba udelat preklad pro kazdy DBMS zvlast. Unit DBMS Meta, InternalEscapeFunction. Ani tam tedy neni moc duvodu k radosti.

Btw. @administrators, nechcete zvazit?
« Poslední změna: 10-08-2017, 17:14:39 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):