Forum Delphi.cz

Delphi => FireDAC => Téma založeno: miroB 24-06-2018, 18:33:42

Název: Re:Clanky ohledne FireDAC?
Přispěvatel: miroB 24-06-2018, 18:33:42
Je zjavne ťažké nájsť z voleja "super" tému. Je to tá, ktorá aktuálne tlačí. Momentálne neriešim FireDAC ( používam ho, ale práve sa venujem iným veciam ).
Napriek tomu by som bol sklamaný, ak by táto ponuka zostala zabudnutá.
Zakladám si odkaz do Bookmarks.
Len námatkovo, oblasti z môjho pohľadu:
- FireDAC a SQLite
- FireDAC a rôzne optimalizácie
- FireDAC a často kladené otázky..

Možno zverejniť zo dve konkrétne ukážky. Alebo aspoň jednu.. Verím, že následne vznikne diskusia.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: Stanislav Hruška 24-06-2018, 21:23:36
Určite by sa pridali. Mne s mizernou angličtinou určite. Ale keď človek o niečom nevie, tak to nemôže ani nadhodiť ako námet. Niečo by mohlo vyplynúť z diskusií. Osobne skúsim spätne prebehnúť tie svoje. V niektorých bola ponúknutá pomoc a nebola vyžiadaná/dodaná ;) V iných ostali otvorené otázky.
Mne sa to síce zdá zložité, ale určite by bolo zaujímavé napísať niečo o nižšej úrovni používania FireDAC. Mám na mysli vynechanie datasetov a podobne. Pre mňa osobne to je španielska (u nás sa tak hovorí, nemá to nič s Tvojím miestom pobytu) dedina. Ale bolo to viackrát odporúčané.
Teraz mi napadla konkrétna téma - výnimky. Z tých som jeleň. To som si pomýlil s FireBird
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 25-06-2018, 09:59:11
Byl jsem prinucen po letech se vratit do Delphi na vypomoc a temer na kazdem kroku jsem zakopaval o FireDac - s nalezenim ODBC driveru jsi mi tu pomohl, ale podle me by stalo za podrobne zdokumentovani, ze
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 25-06-2018, 10:06:36
Jinak pojem spanelska vesnice se pouziva i v Cesku
No nemci zase pouzivaji „böhmische Dörfer“, polaci „czeski film“ :-)
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: Radek Červinka 25-06-2018, 13:06:16
FireDAC neumi najit novejsi ODBC driver nez existoval v dobe jeho vydani - je treba zapomenout na automatickou instalaci

Chapu ze jde nejspis o tu fixni metodu TFDPhysMSSQLDriver.InternalLoad jenz hleda nejlepsi driver ze sady konstantne definovanych nazvu. Tady to muze byt slozitejsi protoze byt by FireDAC mohl podporovat zatim nevydane ovladace, nikdo nemuze garantovat jejich kompatibilitu. Kdyby se hypoteticky MS rozhodl vydat napr. ovladac s ODBC API v.5 (jenz zatim neexistuje) ktery by nebyl nekompatibilni se starsimi verzemi API (coz je samozrejme velmi nepravdepodobne), FireDAC by prestal API rozumet.


Podle mne je to správné chování, a jak jsem již jednou psal, je to schválně protože někdy se stalo, že nový driver byl v takovém stavu, že to prostě nefungovalo. A navíc je to podle mne neřešitelné, i vzhledem k tomu jak s tím MS čaruje.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: Radek Červinka 25-06-2018, 13:47:46
Podle mne je to správné chování, a jak jsem již jednou psal, je to schválně protože někdy se stalo, že nový driver byl v takovém stavu, že to prostě nefungovalo. A navíc je to podle mne neřešitelné, i vzhledem k tomu jak s tím MS čaruje.

Nejen to. MS konci s SNAC a vydava se cestou MSOLEDBSQL (https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-2017), kde si soucasny FireDAC moc neuzije.

No podle LifeTime Support - https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/ (https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/) končí podpora 2021, resp. 2026. Dost času, aby MS ještě 4x změnil myšlení.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: Radek Červinka 25-06-2018, 13:55:50
A ještě je tu 'ODBC DRIVER 13 FOR SQL SERVER', který je hledán jako druhý v pořadí, a ODBC MS tvrdí, že bude dál podporován a rozvíjen (nebo to aspon říkal před půl rokem - nemůžu to teď dohledat).
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: miroB 25-06-2018, 14:05:24
..
Nejen to. MS konci s SNAC a vydava se cestou MSOLEDBSQL (https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-2017), kde si soucasny FireDAC moc neuzije.
Dobre rozumiem, že OLDB je teraz UNDEPRECATED /reinkarnované/ a tým pádom to v Delphi všetko zase pekne pobeží nad ADOConnection a spol?
Aj tak som zmätený s prístupu MS, tu je nový driver pre MSOLEDBSQL:
https://docs.microsoft.com/en-us/sql/connect/oledb/applications/updating-an-application-to-oledb-driver-for-sql-server-from-mdac?view=sql-server-2017 (https://docs.microsoft.com/en-us/sql/connect/oledb/applications/updating-an-application-to-oledb-driver-for-sql-server-from-mdac?view=sql-server-2017)
Sú tam aj pokecy k téme OLE DB/ODBC. No neviem, ako to dopadne..
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: miroB 25-06-2018, 14:10:29
A ještě je tu 'ODBC DRIVER 13 FOR SQL SERVER', který je hledán jako druhý v pořadí, a ODBC MS tvrdí, že bude dál podporován a rozvíjen (nebo to aspon říkal před půl rokem - nemůžu to teď dohledat).
Nie je to prekryté novými verziami? Tu je ODBC Driver 17 for SQL server
https://docs.microsoft.com/sk-sk/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017 (https://docs.microsoft.com/sk-sk/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017)
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 25-06-2018, 15:25:35
O tom nevim. Kdyby se nasel cas
Cas se v dohledne dobe hned tak nenajde :-(
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 25-06-2018, 20:14:22
Podle mne je to správné chování, a jak jsem již jednou psal, je to schválně
Souhlasim, ale pak je z meho pohledu pic*vina neco takoveho vubec implementovat, protoze musim rict, ze to kolegy notne zaskocilo, protoze na vsech pocitacich, kde se to vyvijelo a testovalo to fungovalo a pri instalaci u zakaznika ne, navic se to chovalo pekne debilne, protoze to naslo nejaky stary ovladac, ktery napr. zprasil casy a datumy do stringu a pak to havarovalo na formatech pri konverzich, o vykonu ani nemluve. A kdyz jsem hledal pricinu, tak toho kolem spravne instalace FireDAC moc pouzitelneho a podorbneho nebylo. A tohle by zrovna stalo za zdokumentovani, protoze jsem to poslal jako namet.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 25-06-2018, 20:32:14
se FireDAC sice tvari, ze pracuje s vice transakcemi, ale ve skutecnosti dela buhvi co, takze jde napr. commitnout data i v RO txn

Nevim presne o jaky pripad se jedna (vnorene transakce?). Nicmene to by se dit urcite nemelo. Transakce s nastavenym ReadOnly (http://docwiki.embarcadero.com/Libraries/en/FireDAC.Stan.Option.TFDTxOptions.ReadOnly) priznakem by urcite nemela mit pravo menit data (uz na strane klienta bych ocekaval vyjimku). Pokud tomu tak je, napisu bug report.
Jen v rychlosti pri veceri :-(
Tohle nevim uplne presne, protoze jsem to na MSSQL nemigroval na Interbase/FB se to nevyskytuje. Nejedna se o nested transakce, ale o Multiple Active Transactions viz napr. http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Managing_Transactions_(FireDAC) (http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Managing_Transactions_(FireDAC)) dole. A problemy byly zrejme s tim sdilenim vice instanci TFDTransaction, jak o tom pisou v poznamce: Note: You can use more than one TFDTransaction for other database management systems. Then, all TFDTransaction components share the same transaction.

A projevovalo se to v situaci, kdy kolegove pouzili obvykle schema tj. v jednom DB spojeni:
1. jedna trvale zahajena RO transakce
2. na kazdy zapis do DB zahajena extra transakce (s ruznym stupnem izolace, podle toho, co se dela), ktera se explicitne commituje

A jak mi to licili, tak se to chovalo naprosto zhovadile, ze to menilo obsah DB, i kdyz RW transakci commitnuli a instanci uvolnili atd. Myslim, ze na tom nic nevynalezali, proste preklopili fungujici aplikaci pro FB a narazili. Ale skutecne ted nemame cas se tomu venovat. Jen tema, ze tam jsou nejake pitfalls, ktere nuti cloveka vyvarovat se urcitym technikam.


Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 26-06-2018, 08:47:55
Monitorovani - 2 dny jsem stravil tim, ze jsem hledal tragicky (vice nez o rad) spatny vykon DB operaci s MSSQL na nekterych (:-O Proc je na nekterych) pocitacich. V aplikaci mame inspekcni okno, ktere pri otevreni nastavi handler OnOutput pro odchytavani a zapne monitorovani. Kolekove monitorovani omylem zapnuli (bez prirazeneho handleru) pri startu aplikace, ze si FireDac berou MonitorBy z "MS" connection stringu apod.

Tomu nerozumim :-[
Tak pro zmenu pri snidani :-(

Jedna se o TFDMonitorCustomClientLink a nekolik veci s nim spojenych:

Takze si myslim, ze je to cast, o ktere by stalo za to napsat neco ucelenejsiho, nez je tech par prikladu a utrzku v EMBD dokumentaci.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 17-08-2018, 15:04:31
pracuje "divne" s DateTime tj. pole TSqlTimeStampField s nestandardnimi aditivnimi operacemi abs. cas +/- rel. cas
O tom nevim. Kdyby se nasel cas, mohli bychom se tomu v samostatnem vlakne venovat.
Jeste se vratim k tomuhle problemu ohledne kompatibility FireDAC, akorat se mi to nechtelo preformatovavat z HTML, tak jsem pribalil screen shot nasi isnterni dokumentace.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: miroB 17-08-2018, 20:10:55
Iba poznámka k poslednému riadku obrázku, kde sa tvrdí, že komponenty FireDAC nemajú metódu AsDate:
Práve s tým FireDAC "AsDate" pracujem. Ale v SQLite. Takže to bude zrejme závisieť od databázy.
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: pf1957 17-08-2018, 23:20:32
Iba poznámka k poslednému riadku obrázku, kde sa tvrdí, že komponenty FireDAC nemajú metódu AsDate:
Práve s tým FireDAC "AsDate" pracujem. Ale v SQLite. Takže to bude zrejme závisieť od databázy.
1. ta nase interni dokumentace je 5+ let stara a vztahuje se na migraci z FIB+ na FireDAC v dobe, kdy se FireDAC v Delphi objevily
2. ale ani soucasne komponenty FireDac nemaji TField.AsDate (protoze ho nema Data.DB.TField). FIB+ mely, protoze z duvodu rychlosti nebyly potomkem TDataset takze pole nebyly potomky TField, ale proprietarniho typu TFIBXSQLVAR
Název: Re:Clanky ohledne FireDAC?
Přispěvatel: miroB 17-08-2018, 23:39:34
Sorry, pravda TField.AsDate neexistuje. Som si neoveril.
Pracujem s týmto
Kód: Delphi [Vybrat]
  1. dm.FDQuery1.Params[ j ].AsDate := ..
Pre moje účely a polia typu ftDate stačí.