Autor Téma: Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni  (Přečteno 2970 krát)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2479
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Ahoj vsichni,

kdyz necham konfiguraci FD jak je, jen specifikuju MSSQL jako BaseDriverId, tak si FD nejak vyberou z dostupnych driveru, ale na prvni pohled do zdrojovek se mi nevede zjistit, kde to delaji, ani jak si aspon zalogovat jmeno ODBCDriveru, ktery pouzil.

Nevi o tom nekdo neco?


Ď, pf


Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #1 kdy: 07-06-2018, 20:21:30 »
Excellent
Rated 1 time
Nevi o tom nekdo neco?

Ano, ale nevim co presne chces. Chces pro pripojeny TFDConnection objekt (vyuzivajici ODBC driver) vratit nazev ODBC driveru ktery pouziva? Pokud ano, zkus:

Kód: Delphi [Vybrat]
  1. uses
  2.   FireDAC.Phys.ODBCBase;
  3.  
  4. var
  5.   ODBCDriver: string;
  6. begin
  7.   ODBCDriver := (FDConnection1.ConnectionIntf.Driver as IFDPhysODBCDriver).ODBCDriver;
  8. end;

Ziskas napr. SQL Server Native Client 11.0. Pokud hledas neco jineho, zkus presneji popsat co ;)
« Poslední změna: 07-06-2018, 20:35:21 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2479
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #2 kdy: 07-06-2018, 20:59:17 »
Excellent
Rated 1 time
Ziskas napr. SQL Server Native Client 11.0. Pokud hledas neco jineho, zkus presneji popsat co ;)
Hledal jsem presne tohle!

Skoro bych rek, ze pri bkpt po connectu jsem v evaluate okne bubaku tohle takhle pretypovaval a marne, ale na bubak to svadet nemuzu, protoze kdyz jsem tam zadal Tvuj kod, tak funguje spravne.

Nesmirne ti dekuji, spravil jsi nam na konci 10h pracovniho dne naladu




Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #3 kdy: 07-06-2018, 21:10:02 »
Nesmirne ti dekuji, spravil jsi nam na konci 10h pracovniho dne naladu

Neni vubec zac! Jsem rad ze jsem se napoprve strefil a jeste navic nekomu udelal radost :)
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4104
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #4 kdy: 07-06-2018, 21:29:34 »
OT
Citace
Neni vubec zac!
Lepšie je hovoriť/písať "Rado sa stalo" To prvé negatívne programuje mozog. Nie je to z mojej hlavy, ale verím tomu.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2252
  • Karma: 100
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #5 kdy: 07-06-2018, 21:30:53 »
Excellent
Rated 1 time
Jinak ještě doplním, že ten driver obsahuje

Driver.Messages, což je nějaký následník TStrings a jsou tam informace typu

Kód: [Vybrat]
Loading driver MSSQL ...
  Loading odbc32.dll driver manager
  Creating ODBC environment handle
  Searching for ODBC driver ...
    Checking for ODBC driver [SQL SERVER NATIVE CLIENT 11.0] ...
      Found [SQL Server Native Client 11.0]

a jde vidět co zkoušel hledat.
Embarcadero MVP - Czech republic

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #6 kdy: 07-06-2018, 21:40:22 »
OT
Citace
Neni vubec zac!
Lepšie je hovoriť/písať "Rado sa stalo" To prvé negatívne programuje mozog. Nie je to z mojej hlavy, ale verím tomu.

Hmno, jak bys prelozil do cestiny You're very welcome!? Mam mysleni nastavene na anglictinu a casto mi dela problem psat spravne cesky. Rict neco ve stylu Moc rado se stalo! mi vsak zni o neco hur.
« Poslední změna: 07-06-2018, 21:42:39 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4104
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #7 kdy: 07-06-2018, 22:43:35 »
Po anglicky neviem. A stačí "Rádo se stalo". Nejde o to ako to znie, ale aký to má v sebe obsah, význam. Písal som programovaní mozgu. Doslovne.
Skús si niekde zohnať knižku "Trhák aneb 21 kapitol o vašem mozku - Jiří Vokáč Čmolík. Už minulý rok malo byť 6. vydanie a stále nič. Budeš vedieť o čo mi ide.
Dobrú noc 8)
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #8 kdy: 07-06-2018, 22:51:13 »
Po anglicky neviem. A stačí "Rádo se stalo". Nejde o to ako to znie, ale aký to má v sebe obsah, význam. Písal som programovaní mozgu. Doslovne.
Skús si niekde zohnať knižku "Trhák aneb 21 kapitol o vašem mozku - Jiří Vokáč Čmolík. Už minulý rok malo byť 6. vydanie a stále nič. Budeš vedieť o čo mi ide.
Dobrú noc 8)

Ja ano. Anglictina se stala mym nativnim jazykem. Jen cestinu zapominam :) Buenas noches y tu!
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #9 kdy: 07-06-2018, 23:23:54 »
Jinak ještě doplním, že ten driver obsahuje Driver.Messages

Coz je objekt urcen k logovani. Jen je Ti to k nicemu stejne tak jako metoda FindBestDriver objektu TFDPhysODBCDriverBase nebo iterace CliObj objektu ovladace TODBCEnvironment pomoci DriverFirst a DriverNext, protoze FireDAC na vstupu pouziva konstantni retezce v zavislosti na zvolenem typu DBMS.

Pomoci iterace CliObj objektu ovladace TODBCEnvironment pomoci DriverFirst a DriverNext se da ziskat seznam popisu a atributu vsech zaregistrovanych ODBC ovladacu (jenz FireDAC pouziva k porovnani s konstantnimi retezci jim podporovanych ODBC ovladacu).
« Poslední změna: 07-06-2018, 23:54:30 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2479
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #10 kdy: 08-06-2018, 07:24:56 »
Coz je objekt urcen k logovani. Jen je Ti to k nicemu stejne tak jako metoda FindBestDriver objektu TFDPhysODBCDriverBase nebo iterace CliObj objektu ovladace TODBCEnvironment pomoci DriverFirst a DriverNext, protoze FireDAC na vstupu pouziva konstantni retezce v zavislosti na zvolenem typu DBMS.

Pomoci iterace CliObj objektu ovladace TODBCEnvironment pomoci DriverFirst a DriverNext se da ziskat seznam popisu a atributu vsech zaregistrovanych ODBC ovladacu (jenz FireDAC pouziva k porovnani s konstantnimi retezci jim podporovanych ODBC ovladacu).
Ja si myslim, ze je to uzitecna informace - hned jsem ji zalogoval, stejne jako jsme si nechali vypsat seznam ODBC driveru, na ktery FireDAC vidi...

Ja se k tomu nachomejt ve stavu, kdy kolegove nebyly u zakaznika schopni nainstalovat nasi aplikaci, ktera jinak bezne funguje na rade pocitacu a byl docela problem zjistit, proc to nefunguje. Nakonec se jako zdroj problemu jevi ODBC driver, to kolegove overi az dneska.

Takze pro nas by byvalo bylo uzitecne, mit moznost rychle a jednoduse zjistit, co se tam vlastne deje a ze vhodny driver v pocitaci mozna (?) neexistuje. Ja tedy nepamatuju, ze bych nekdy potkal pocitac, na kterem vhodny ODBC driver nebyl, ale buhvi, kdo a jak to nainstaloval.

FireDac zkousi drivery v poradi Native 11, Odbc 13, Odbc 11, Native 10, ....  A na mem pocitaci, kam neinstaluju nic zbytecneho a nic jsem extra nedoinstalovavall, jsou k dispozici prvni 3 drivery a aplikace s nimi pracuje bez problemu.

Tak snad to podezreni na ODBC driver je opodstatnene. Stejnou chybu jsem u sebe vyvolal pri volbe driveru SQL Server.

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #11 kdy: 08-06-2018, 07:40:05 »
Ja si myslim, ze je to uzitecna informace - hned jsem ji zalogoval, stejne jako jsme si nechali vypsat seznam ODBC driveru, na ktery FireDAC vidi...

Vidi. Coz o to. On je vidi vsechny. Problem je v tom, ze pokud ODBCDriver explicitne nespecifikujes, nastoupi na radu metoda FindBestDriver pro jejiz volani pouziva FireDAC fixni poradi konstantne definovanych ovladacu, viz. TFDPhysMSSQLDriver.InternalLoad.

A prosty vypis vsech driveru je k nicemu proto, ze pokud vyda MS trebas SQL Server Native Client 12.0 a ten byt bude jedinym pouzitelnym ODBC driverem v systemu, FireDAC ho nepouzije. A to proto, ze ho nezna a jeho nazev tedy nepreda pri volani FindBestDriver. Bude vsak k videni v seznamu vsech driveru.

Podstatnejsi je spis jake FireDACem podporovane drivery system obsahuje.
« Poslední změna: 08-06-2018, 07:58:22 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2479
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #12 kdy: 08-06-2018, 07:59:13 »
nastoupi na radu metoda FindBestDriver pro jejiz volani pouziva FireDAC fixni poradi konstantne definovanych ovladacu
No vzdyt jsem je v predchozim prispevku vypsal, v jakem poradi je zkousi - proste z logu v Messages uvidis, ze se zastavil na necem obskurnim

Citace
A prosty vypis vsech driveru je k nicemu proto, ze pokud vyda MS trebas SQL Server Native Client 12.0
Neni, protoze uvidis, ze v systemu je Native 12 a z predchoziho logu vidis, ze ho FireDAC nezkousel, protoze podporuje max. Native 11, takze vis, ze musis z hrusky dolu a pro tu instalaci predepsat driver rucne  v konfiguraci

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1718
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #13 kdy: 08-06-2018, 08:05:47 »
No vzdyt jsem je v predchozim prispevku vypsal, v jakem poradi je zkousi - proste z logu v Messages uvidis, ze se zastavil na necem obskurnim

To je k videni i v Monitoru (resp. FireDAC trace logu).

Neni, protoze uvidis, ze v systemu je Native 12 a z predchoziho logu vidis, ze ho FireDAC nezkousel, protoze podporuje max. Native 11, takze vis, ze musis z hrusky dolu a pro tu instalaci predepsat driver rucne  v konfiguraci

Pravda. To by slo.
« Poslední změna: 08-06-2018, 08:18:39 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2479
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Jak vyloudit na FD jmeno ODBC driveru, ktery pouzil pro pripojeni
« Odpověď #14 kdy: 08-06-2018, 09:34:11 »
To je k videni i v Monitoru (resp. FireDAC trace logu).
No vidis, davno jsem zapomel, ze neco takoveho existuje, protoze s FD jsem prisel do styku, kdyz se objevil a kdyz jsem migroval rodinu aplikaci v FIB+ na FD tak, aby bezela s ruznymi DB connectivitami a pak jsem mel roky od Delphi pokoj. Ten monitor jsem tam zaintegroval, ale zrejme nikdy nepouzil, protoze mame vlastni celkem propracovany logovaci subsystem.
Nicmene si myslim, ze je to spis nastroj pro vyvoj nez pro monitorovani provoznich stavu, takze z meho pohledu bylo jednoduzsi si do naseho logu zapsat par radku.


Neni, protoze uvidis, ze v systemu je Native 12 a z predchoziho logu vidis, ze ho FireDAC nezkousel, protoze podporuje max. Native 11, takze vis, ze musis z hrusky dolu a pro tu instalaci predepsat driver rucne  v konfiguraci

Jinak ten zpusob hledani driveru natvrdo je docela zrada. Uznavam, ze z jejich pohledu je to nejjednoduzsi, nemusi se hrabat ve vlastnostech driveru a daji tam jen neco, co videli a mohli si odzkouset, ale...