Recent

Author Topic: Zaos Transliteration on linux  (Read 127 times)

hamacker

  • Jr. Member
  • **
  • Posts: 59
Zaos Transliteration on linux
« on: December 03, 2024, 11:12:53 pm »
Using zeos8, lazarus 3.6 and Ubuntu LTS.
I make my connection using zeos as:
Code: Pascal  [Select][+][-]
  1. function TLogin.ApplyConnection(
  2.   ADestConnection: TZAbstractConnection;
  3.   ADisconectIfConnected:Boolean=true;
  4.   ADestConnectionReqOpen:Boolean=true): String;
  5. begin
  6.   Result:=emptyStr;
  7.   if ADestConnection.Connected then
  8.   begin
  9.     if ADisconectIfConnected then
  10.     begin
  11.       if ADestConnection.InTransaction then
  12.          ADestConnection.Commit;
  13.       ADestConnection.Disconnect;
  14.     end
  15.     else
  16.     begin
  17.       Exit;
  18.     end;
  19.   end;
  20.   if (ADestConnectionReqOpen) and (not ADestConnection.Connected) then
  21.   begin
  22.     ADestConnection.Protocol:='firebird';
  23.     ADestConnection.SQLHourGlass:=true;
  24.     ADestConnection.RaiseWarningMessages:=true;
  25.     ADestConnection.LoginPrompt:=false;
  26.     ADestConnection.AutoCommit:=false;
  27.     ADestConnection.HostName:=DB_HOSTNAME;
  28.     ADestConnection.Port:=DB_PORT;
  29.     ADestConnection.Database:=DB_DATABASE;
  30.     ADestConnection.User:=DB_USER_NAME;
  31.     ADestConnection.Password:=DB_PASSWORD;
  32.     ADestConnection.ClientCodepage:=DB_CharacterSet; // UTF8, WIN1252, ISO8859_1
  33.     if SameText(ADestConnection.ClientCodepage, 'WIN1252') or
  34.        SameText(ADestConnection.ClientCodepage, 'ISO8859_1') then
  35.     begin
  36.       {$IFDEF WINDOWS}
  37.         ADestConnection.RawCharacterTransliterateOptions.Encoding:=encDefaultSystemCodePage;
  38.         ADestConnection.RawCharacterTransliterateOptions.Fields:=true;               // true
  39.         ADestConnection.RawCharacterTransliterateOptions.Params:=true;               // true
  40.         ADestConnection.RawCharacterTransliterateOptions.SQL := True;
  41.       {$ELSE}
  42.         ADestConnection.ControlsCodePage := cGET_ACP; // Using WIN1252 in client side
  43.         ADestConnection.RawCharacterTransliterateOptions.SQL := False; // Avoid transliteratin
  44.         //ADestConnection.RawCharacterTransliterateOptions.Fields := True;
  45.         //ADestConnection.RawCharacterTransliterateOptions.Params := True;
  46.         ADestConnection.RawCharacterTransliterateOptions.Encoding := encDB_CP;
  47.       {$ENDIF}
  48.     end
  49.     else
  50.     begin
  51.       // UTF
  52.       ADestConnection.ControlsCodePage:=cCP_UTF8;
  53.       ADestConnection.RawCharacterTransliterateOptions.Encoding:=encDefaultSystemCodePage;
  54.     end;
  55.  
  56.     if DB_RoleName<>'' then
  57.     begin
  58.       ADestConnection.Properties.Values[Properties_RoleName]:=DB_RoleName;
  59.     end;
  60.     try
  61.        ADestConnection.Connect;
  62.     except
  63.       on e:exception do
  64.       Result:=
  65.         'Erro "'+e.message+'": '+sLineBreak+
  66.         'Unidade: '+{$I %FILE%}+sLineBreak+
  67.         'Linha: '+{$INCLUDE %LINE%}+sLineBreak+
  68.         'Método: '+{$I %CURRENTROUTINE%};
  69.     end;
  70.   end;
  71. end;


It's runfine on windows, but using linux, this query has a transliteration 'pç' was written 'p?', in debug mode, there is not transliteration inside programa, just after execute query with params:

Code: Pascal  [Select][+][-]
  1. var
  2.   q1:TZQuery;
  3.   MyUUID: TGUID;
  4.   bm:TBookmark;
  5.   sSQL:String;
  6.   vResto:Double;
  7.   bResultado:Boolean;
  8.   p_id_rm:String;
  9.   p_id_processo:Cardinal;
  10.   p_id_cv:Cardinal;
  11.   p_codtipo_cv:String;
  12.   //p_tag_name:String;
  13.   p_criacao_dt:TDateTime;
  14.   p_criacao_por:String;
  15.   p_criacao_grupo:String;
  16.   p_necessidade_dt:TDateTime;
  17.   p_id_rm_urgente:Cardinal;
  18.   p_aprovacao_req:Boolean;
  19.   p_coditem_almox:String;
  20.   p_qtde_solicitada:Double;
  21.   p_unidade:String;
  22.   p_descricao:String;
  23.   p_observacao:String;
  24.   p_reserva_sn:Boolean;
  25.   p_servico_sn:Boolean;
  26.   p_retirada_disponivel:Boolean;
  27.   p_fab_propria_req:Boolean;
  28.   p_consumo_tipo:Cardinal;
  29.   p_cvi_coditem:String;
  30.   p_sub1_coditem:String;
  31.   p_sub2_coditem:String;
  32.   p_qtde_min:Double;
  33.   p_almox_qtde_min_consumo:Double;
  34.   p_almox_qtde_max_consumo:Double;
  35.   p_almox_qtde_mult_consumo:Double;
  36.   p_last_update:TDateTime;
  37.   p_last_owner:String;
  38.   p_status:String;
  39.   p_qtde_rm:Double;
  40.   p_qtde_cv:Double;
  41. begin  
  42.   (...)
  43.     q1.sql.clear;
  44.     q1.sql.add('insert into rm_itens ( ');
  45.     q1.sql.add('  id_rm, ');
  46.     q1.sql.add('  id_processo, ');
  47.     q1.sql.add('  criacao_dt, ');
  48.     q1.sql.add('  criacao_por, ');
  49.     q1.sql.add('  criacao_grupo, ');
  50.     q1.sql.add('  necessidade_dt, ');
  51.     q1.sql.add('  envio_dt, ');
  52.     q1.sql.add('  envio_por, ');
  53.     q1.sql.add('  fab_propria_req, ');
  54.     q1.sql.add('  id_rm_urgente, ');
  55.     q1.sql.add('  aprovacao_req, ');
  56.     q1.sql.add('  aprovacao_dt, ');
  57.     q1.sql.add('  aprovacao_por, ');
  58.     q1.sql.add('  entrega_dt, ');
  59.     q1.sql.add('  entrega_por, ');
  60.     q1.sql.add('  entrega_cesto, ');
  61.     q1.sql.add('  doca_id_item, ');
  62.     q1.sql.add('  doca_conferido_por, ');
  63.     q1.sql.add('  pcc_item, ');
  64.     q1.sql.add('  coditem_almox, ');
  65.     q1.sql.add('  qtde_solicitada, ');
  66.     q1.sql.add('  qtde_entregue, ');
  67.     q1.sql.add('  unidade, ');
  68.     q1.sql.add('  descricao, ');
  69.     q1.sql.add('  observacao, ');
  70.     q1.sql.add('  reserva_sn, ');
  71.     q1.sql.add('  servico_sn, ');
  72.     q1.sql.add('  retirada_disponivel, ');
  73.     q1.sql.add('  consumo_tipo, ');
  74.     q1.sql.add('  cvi_coditem, ');
  75.     q1.sql.add('  sub1_coditem, ');
  76.     q1.sql.add('  sub2_coditem, ');
  77.     q1.sql.add('  status, ');
  78.     q1.sql.add('  last_update, ');
  79.     q1.sql.add('  last_owner) ');
  80.     q1.sql.add('values ( ');
  81.     q1.sql.add('  :p_id_rm, ');
  82.     q1.sql.add('  :p_id_processo, ');
  83.     q1.sql.add('  :p_criacao_dt, ');
  84.     q1.sql.add('  :p_criacao_por, ');
  85.     q1.sql.add('  :p_criacao_grupo, ');
  86.     q1.sql.add('  :p_necessidade_dt, ');
  87.     q1.sql.add('  null, --:p_envio_dt, ');
  88.     q1.sql.add('  null, --:p_envio_por, ');
  89.     q1.sql.add('  :p_fab_propria_req, ');
  90.     q1.sql.add('  :p_id_rm_urgente, --:p_id_rm_urgente, ');
  91.     q1.sql.add('  :p_aprovacao_req, --:p_aprovacao_req, ');
  92.     q1.sql.add('  null, --:p_aprovacao_dt, ');
  93.     q1.sql.add('  null, --:p_aprovacao_por, ');
  94.     q1.sql.add('  null, --:p_entrega_dt, ');
  95.     q1.sql.add('  null, --:p_entrega_por, ');
  96.     q1.sql.add('  null, --:p_ENTREGA_CESTO, ');
  97.     q1.sql.add('  null, --:p_doca_id_item, ');
  98.     q1.sql.add('  null,  --:p_doca_conferido_por, ');
  99.     q1.sql.add('  null, --:p_pcc_item, ');
  100.     q1.sql.add('  :p_coditem_almox, ');
  101.     q1.sql.add('  :p_qtde_solicitada, ');
  102.     q1.sql.add('  0, --:p_qtde_entregue, ');
  103.     q1.sql.add('  :p_unidade, ');
  104.     q1.sql.add('  :p_descricao, ');
  105.     q1.sql.add('  :p_observacao, ');
  106.     q1.sql.add('  :p_reserva_sn, ');
  107.     q1.sql.add('  :p_servico_sn, ');
  108.     q1.sql.add('  :p_retirada_disponivel, ');
  109.     q1.sql.add('  :p_consumo_tipo, ');
  110.     q1.sql.add('  :p_cvi_coditem, ');
  111.     q1.sql.add('  :p_sub1_coditem, ');
  112.     q1.sql.add('  :p_sub2_coditem, ');
  113.     q1.sql.add('  :p_status, ');
  114.     q1.sql.add('  :p_last_update, ');
  115.     q1.sql.add('  :p_last_owner) ');
  116.     q1.sql.add('returning id_rm ; ');
  117.     try
  118.       if not q1.Prepared then
  119.         q1.prepare;
  120.       q1.ParamByName('p_id_rm').AsString:=p_id_rm;
  121.       q1.ParamByName('p_id_processo').AsLargeInt:=p_id_processo;
  122.       q1.ParamByName('p_criacao_dt').AsDateTime:=p_criacao_dt;
  123.       q1.ParamByName('p_criacao_por').AsAnsiString:=p_criacao_por;
  124.       q1.ParamByName('p_coditem_almox').AsAnsiString:=p_coditem_almox;
  125.       q1.ParamByName('p_criacao_grupo').AsAnsiString:=p_criacao_grupo;
  126.       q1.ParamByName('p_necessidade_dt').AsDateTime:=p_necessidade_dt;
  127.       q1.ParamByName('p_fab_propria_req').AsBoolean:=p_fab_propria_req;
  128.       q1.ParamByName('p_id_rm_urgente').AsInteger:=p_id_rm_urgente;
  129.       q1.ParamByName('p_aprovacao_req').AsBoolean:=p_aprovacao_req;
  130.       q1.ParamByName('p_qtde_solicitada').AsFloat:=p_qtde_solicitada;
  131.       q1.ParamByName('p_unidade').AsAnsiString:=p_unidade;
  132.       q1.ParamByName('p_descricao').AsAnsiString:=p_descricao;
  133.       q1.ParamByName('p_observacao').AsAnsiString:=p_observacao;
  134.       q1.ParamByName('p_reserva_sn').AsBoolean:=p_reserva_sn;
  135.       q1.ParamByName('p_servico_sn').AsBoolean:=p_servico_sn;
  136.       q1.ParamByName('p_retirada_disponivel').AsBoolean:=p_retirada_disponivel;
  137.       q1.ParamByName('p_consumo_tipo').AsInteger:=p_consumo_tipo;
  138.       q1.ParamByName('p_fab_propria_req').AsBoolean:=p_fab_propria_req;
  139.  
  140.       q1.ParamByName('p_cvi_coditem').AsAnsiString:=p_cvi_coditem;
  141.       q1.ParamByName('p_sub1_coditem').AsAnsiString:=p_sub1_coditem;
  142.       q1.ParamByName('p_sub2_coditem').AsAnsiString:=p_sub2_coditem;
  143.  
  144.       q1.ParamByName('p_last_update').AsDateTime:=p_last_update;
  145.       q1.ParamByName('p_last_owner').AsAnsiString:=p_last_owner;
  146.       q1.ParamByName('p_status').AsString:=p_status;
  147.       q1.Open;
  148. (...)

I can not change my database(firebird) to unicode now, but will try in future. But now, how can I fixed to avoid transliteration in linux?

 

TinyPortal © 2005-2018