Forum Delphi.cz

Databáze => MS SQL => Téma založeno: salvamiroslav 04-05-2015, 13:24:01

Název: Datasnap Firedac FDStoredproc field boolean
Přispěvatel: salvamiroslav 04-05-2015, 13:24:01
Dobrý deň. Prosím o pomoc. Urobil som datasnap klient server aplikáciu s Firedac komponentami.

Na strane servera, ServerMethodsUnit1: 

Kód: Delphi [Vybrat]
  1. FDConnection   'DriverID=MSSQL;Server=127.0.0.1;Database=MyDatabase;OSAuthent=Yes'
  2.  
  3. procedure TServerMethods1.MyTable(out ADataSet: TDataSet);
  4. begin
  5.   FDQuery1.Open('SELECT * FROM MyTable');
  6.   ADataSet := FDQuery1;
  7. end;
Tabuľka MyTable má dva polia id [int] a idvalid [bit]. Má 300 riadkov kde id je naplnené vzostupne od 0 až 299 a pole idvalid má na všetkých riadkoch 0 (False).
Na strane klienta:

FDConnection 'DriverID=DataSnap;Port=212'

Kód: Delphi [Vybrat]
  1. procedure TForm3.Button1Click(Sender: TObject);
  2. begin
  3.   FDStoredProc1.Open('TServerMethods1.MyTable');
  4.   FDStoredProc1.FetchAll;
  5. end;

Po vyvolaní Button1Click sa do datasetu FDStoredProc1 prenesie všetkých 300 riadkov. Pole idvalid má správne hodnoty False iba v prvých 255 riadkoch. Ďaľšie riadky majú hodnotu True! Skúšal som to na rôznych tabuľkách. Polia bit majú správne hodnoty iba na prvých 256 riadkoch ďaľej sú naplnené True.
Název: Re:Datasnap Firedac FDStoredproc field boolean
Přispěvatel: Stanislav Hruška 04-05-2015, 14:48:54
Citace
Tabuľka MyTable má dva polia id [int] a idvalid [bit].
Tu predpokladám preklep bit <> Byte. A byte má dĺžku 256. Ale to nie je dôvod na takéto správanie.
Skúsil si nepoužiť FechAll, skočiť na koniec tabuľky a zistiť si hodnotu?

OT
Príčinu tohto správania nepoznám, ale iní na stav boolean používajú SamllInteger. Ja tiež. A to preto, že True môže mať aj hodnotu -1.
Název: Re:Datasnap Firedac FDStoredproc field boolean
Přispěvatel: pf1957 04-05-2015, 15:04:10
Tu predpokladám preklep bit <> Byte.

Ne nutne. Treba MSSQL ma datovy typ bit. Ale OP neuvadi typ RDBMS, takze nema smysl se dotazem zabyvat.
Název: Re:Datasnap Firedac FDStoredproc field boolean
Přispěvatel: Radek Červinka 04-05-2015, 15:29:43
Tu predpokladám preklep bit <> Byte.

Ne nutne. Treba MSSQL ma datovy typ bit. Ale OP neuvadi typ RDBMS, takze nema smysl se dotazem zabyvat.

No pise : FDConnection   'DriverID=MSSQL;
Název: Re:Datasnap Firedac FDStoredproc field boolean
Přispěvatel: Radek Červinka 04-05-2015, 15:35:30
To FDQuery1 na serveru to má předpokládám správně?
Název: Re:Datasnap Firedac FDStoredproc field boolean
Přispěvatel: pf1957 04-05-2015, 15:37:34
No pise : FDConnection   'DriverID=MSSQL;
Aha, to jsem si nevsim. Omlouvam se.
Název: Re:Datasnap Firedac FDStoredproc field boolean
Přispěvatel: salvamiroslav 04-05-2015, 16:15:26
Na FDQeuery je to spravne.