Autor Téma: FireDAC Stored Procedury  (Přečteno 3076 krát)

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
FireDAC Stored Procedury
« kdy: 22-08-2016, 18:29:34 »
Zdar,
Ucim sa pracovat s FireDACom ked uz je tak preferovany a vytvoril som si jednoduchu stored proceduru zabezpecujucu overenie hesla a prihlasenie. V SQL Managment Studio sa chova korektne ale prinutit FireDAC k spolupraci je zjavne problem vid screenshot:

Kde robím chybu ?



Dakujem za rady  :)

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #1 kdy: 22-08-2016, 18:44:19 »
ako to ze hodi na prazdny dataset AVcko by som pochopil, ale meno a heslo je zadane spravne, ale i ta vrati ako RETURN 1

Online mjseven

  • Mladík
  • **
  • Příspěvků: 64
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:FireDAC Stored Procedury
« Odpověď #2 kdy: 22-08-2016, 19:21:26 »
Firedac nepouzívám, ale zkus to .ParamByName bez těch @
FDCommand1 předpokládám máš položený na tom formu  a nevytváříš ho někde za běhu.

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #3 kdy: 22-08-2016, 19:30:12 »
ano command je na Forme,  command kind  je skStoredProc  parametre su nastavene

bez @ hodi chybu parameter not found.


Offline PetrH

  • Nováček
  • *
  • Příspěvků: 7
  • Karma: 0
    • Verze Delphi: 10 Seattle
Re:FireDAC Stored Procedury
« Odpověď #4 kdy: 23-08-2016, 09:35:44 »
Dobrý den,
FDCommand lze použít jen pro příkazy, které nevrací výsledkovou sadu (resultset). Pro volání uložených procedur je k dispozici komponenta FDStoredProc.
Podívejte se na http://petrhouf.blogspot.cz/2014/04/DBApp5.html, případně i předchozí příspěvky věnované technologii FireDAC.
PetrH

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #5 kdy: 23-08-2016, 22:24:55 »
dik, prestudujem si ... ale aj napriek tomu by minimalne malo vratit korektnu navratovu hodnotu tej storky, teda result 0 v danom modelovom priklade, no vracia 1 ...

koniec koncov pri return 1 ta storka nevracia dataset, select zbehne az pri return 0
« Poslední změna: 23-08-2016, 22:59:06 od dee »

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #6 kdy: 24-08-2016, 09:24:45 »
A este ako mam z komponenty FDStoredProc vytiahnut dataset a pristupovat k nemu ?



Da sa sice cez DataSource nalinkovat na DBGrid ale to nechcem a ani nepotrebujem, potrebujem len priamo pristupovat k jednotlivým fieldom tak ako je to mozne u FDCommand, FDQuerry ...

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1891
  • Karma: 96
    • Verze Delphi: D2007, XE3, DX10
Re:FireDAC Stored Procedury
« Odpověď #7 kdy: 24-08-2016, 15:41:55 »
A este ako mam z komponenty FDStoredProc vytiahnut dataset a pristupovat k nemu ?
Precist si dokumentaci http://docwiki.embarcadero.com/RADStudio/XE7/en/Executing_Stored_Procedures_(FireDAC)  >:(


Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #8 kdy: 24-08-2016, 16:56:15 »
A este ako mam z komponenty FDStoredProc vytiahnut dataset a pristupovat k nemu ?
Precist si dokumentaci http://docwiki.embarcadero.com/RADStudio/XE7/en/Executing_Stored_Procedures_(FireDAC)  >:(


tento clanok som cital este vcera ... ako sa dostat k datasetu z FDStoredProc s toho neviem pochopit, akurat na konci tam pisu ze sa ta storka da spustat aj cez FDCommand.

Chcel by som Vas poziadat, o kusok kodu pre ten moj konkretny pripad, s tymto problemom uz bojujem niekolko dni a neviem najst uspokojive riesenie.

pre vysvetlenie preco taketo riešenie:
Ono rozhodol som sa celu logiku aplikacie implementovat na strane databazoveho serveru, kedze by som okrem FireMonkey (android) aplikacie chcel urobit aj Web aplikáciu (PHP) ktora bude pristupovat k tejto databaze a mat uplne rovnaku funkcionalitu.
Pride mi teda vyhodne pouzivat stored procedury ako tuto pre "Login"  ktora bud vrati dataset z udajmi pouzivatela v pripade spravneho mena a hesla alebo vráti navratovu hodnotu cez RETURN 1 alebo 2 (neexistujuci login alebo nesprávne heslo)


Online mjseven

  • Mladík
  • **
  • Příspěvků: 64
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:FireDAC Stored Procedury
« Odpověď #9 kdy: 24-08-2016, 17:27:42 »
TFDStoreProc je potomek TDataSet (http://docwiki.embarcadero.com/Libraries/XE7/en/FireDAC.Comp.Client.TFDStoredProc)
A tuším, že je na něm v případě kdy je třeba pracovat s vrácenou datovou sadou použít místo ExecuteProc jen nastavení property Active na True
(to by se ale podle informací uvedených zde: http://petrhouf.blogspot.cz/2014/04/DBApp5.html , mělo týkat jen Interbase Firebird).



 

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #10 kdy: 24-08-2016, 18:07:13 »
TFDStoreProc je potomek TDataSet (http://docwiki.embarcadero.com/Libraries/XE7/en/FireDAC.Comp.Client.TFDStoredProc)
A tuším, že je na něm v případě kdy je třeba pracovat s vrácenou datovou sadou použít místo ExecuteProc jen nastavení property Active na True
(to by se ale podle informací uvedených zde: http://petrhouf.blogspot.cz/2014/04/DBApp5.html , mělo týkat jen Interbase Firebird).


Ďakujem za nasmerovanie ...
Prerobil som to z FDCommand na FDStoredProc a je to všetko OK  ;)



Skoda ze som nevedel skor ze FDStoredProc je potomkom DataSetu a ze staci dat rovno .FieldByName ..... mohol som si usetrit 2dni hladania riesenia  >:(
No hold Storky som doteraz týmto sposobom nepoužíval naviac prechádzam z VCLka na FireMonkey a z ADOdb na FireDAC ... potom tazko rozmyslat ze co clovek robi blbo  :-[

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #11 kdy: 24-08-2016, 18:19:04 »
este mensi tip... namiesto FDStoredProc.Active je potrebne pouzit .ExecProc  inak to dopadne takto pri neexistujucom logine, blbe je to ze to padne uz na tom active a vobec nedojde k pokusu o pristup k neexistujucemu fieldu datasetu .... ach jaj  ???


Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1891
  • Karma: 96
    • Verze Delphi: D2007, XE3, DX10
Re:FireDAC Stored Procedury
« Odpověď #12 kdy: 24-08-2016, 19:07:34 »
tento clanok som cital este vcera ... ako sa dostat k datasetu z FDStoredProc s toho neviem pochopit, akurat na konci tam pisu ze sa ta storka da spustat aj cez FDCommand.
Hmmm... Ono jim to dneska leze ze srovnavacich testu, ze studenti neumi porozumet psanemu textu, ale ze se to tyka i nekoho, kdo se pousti do programovani  :o

Odstavec: Executing the Stored Procedure
To execute a stored procedure that does not return a result set, use the ExecProc method...
To execute a stored procedure, returning a result set and open this result set, use the Open methods...

 >:(

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1891
  • Karma: 96
    • Verze Delphi: D2007, XE3, DX10
Re:FireDAC Stored Procedury
« Odpověď #13 kdy: 24-08-2016, 19:12:10 »
Skoda ze som nevedel skor ze FDStoredProc je potomkom DataSetu a ze staci dat rovno .FieldByName ..... mohol som si usetrit 2dni hladania riesenia  >:(
A co jsi ty 2 dnyu hledal  :o http://docwiki.embarcadero.com/Libraries/XE7/en/FireDAC.Comp.Client.TFDStoredProc

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 117
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:FireDAC Stored Procedury
« Odpověď #14 kdy: 24-08-2016, 19:38:00 »
tento clanok som cital este vcera ... ako sa dostat k datasetu z FDStoredProc s toho neviem pochopit, akurat na konci tam pisu ze sa ta storka da spustat aj cez FDCommand.
Hmmm... Ono jim to dneska leze ze srovnavacich testu, ze studenti neumi porozumet psanemu textu, ale ze se to tyka i nekoho, kdo se pousti do programovani  :o

Odstavec: Executing the Stored Procedure
To execute a stored procedure that does not return a result set, use the ExecProc method...
To execute a stored procedure, returning a result set and open this result set, use the Open methods...

 >:(


 :-[ no ano preletel som ocami clanok a tie dva vety sa na prvy pohlad nezdali az tak dolezite ...

nakoniec som musel este riesenie upravit aby pracovalo korektne



bez toho Close tam aj napriek novemu spusteniu storky zostaval povodny dataset !
a finalne ten problem riesi OpenOrExecute kedze ta storka pri nespravnom logine alebo hesle nevracia dataset .... clovek si chce zjednodusit zivot a ...  >:(

 

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):