Delphi > FireDAC

Firedac Unicode v roznych verziach Delphi

(1/3) > >>

Hannibal:
Zdravim

Delphi 10.2.3
ms sql db 2019
Firedac
    TFDquery ,TFDStoredProc -  vsetky ParamByName('').asString  - funguju ako unicode. 

updatli sme na Delphi 10.4.2
    TFDquery , TFDStoredProc -  vsetky ParamByName('').asString  - funguju ako ANSI.  !!!
Data nacitane z DB ako unicode. pri zapise spat su vsetky unicode znaky skonvertovane na '?????' >:(

Preco ? Stretol sa s tym niekto?





 

Radek Červinka:
Hmm, je pravda ze je zmena v TFDParam.SetAsStrings proti 10.2.x (predtim tam bylo FDataType := ftWideString ) viz FireDAC.Stan.Param.pas


--- Kód: ---procedure TFDParam.SetAsStrings(AIndex: Integer; const AValue: String);
begin
  if not (FDataType in [ftString, ftFixedChar, ftWideString, ftFixedWideChar]) then
    FDataType := {$IFDEF NEXTGEN} ftWideString {$ELSE} ftString {$ENDIF};
  Values[AIndex] := AValue;
end;

--- Konec kódu ---
ale to je jen v pripade ze parametr neni daneho typu. Jakeho typu je ten parametr?

Radek Červinka:
Pripadne  kdyz das .AsWideString v tech pripadech kdy neni jasny typ?

Hannibal:
CustomQuery.Create(AOwner: TComponent);
begin
  inherited;
  UniDirectional := False;
  FClearEmptyParams := True;
  FormatOptions.DefaultParamDataType := ftWideString;   << toto tam mame. ale je to ignorovane. v priradeni sa vo firedac vyhodnoti NEXTGEN direktiva
  a prepise typ na ftString
end;

Hannibal:
Spravili sme replaceall asString >> asWideString.
Problem odstraneny.

Zial na stratu dat nas upozornil zakaznik. A je to velmi nemile prekvapenie, nieco funguje bez problemov X rokov, v delfi release notes 10.4 ani tuk o zmene vo firedacu, a zrazu sup a data v prdeli. Stacilo k tomu len skompilovat v novej verzii delfi.
 :(


Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi