[firebase-br] Chave primaria Guid

Marcelo - MK Softwares marcelo em mksoftwares.com.br
Sexta Março 12 20:57:15 -03 2021


Nessa questão de leitura o C# faz bem tranquilo, usando a dll 
FirebirdSql.Data.FirebirdClient. É só declarar uma propriedade em uma 
class com o tipo Guid e fazer a leitura/gravação no banco sem problemas 
algum.

Agora se usar em string como o Cantu sugeriu, retorna erro de leitura 
gravação. Tentamos dessa forma mas sem sucesso, e só conseguimos 
solucionar quando mudamos o field para esse domain que compartilhei 
anteriormente.


Em 12/03/2021 20:32, Carlos H. Cantu via lista escreveu:
> Acredito que você tenha que usar um string e não TBytes.
>
> []s
> Carlos H. Cantu
> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>
> CWvl> Criei desse mesmo jeito no banco, a questão é na aplicação pra ler esse
> CWvl> dado.
>
>
> CWvl> []'s
> CWvl> Carlos Wilson
> CWvl> Formosystem
> CWvl> Informática e Automação Comercial
>
> CWvl> Em 12/03/2021 15:57, Marcelo - MK Softwares via lista escreveu:
>>> Aqui usamos C# e para resolver os problemas com guid, criamos esse
>>> domain, e funciona bem tranquilo.
>>>
>>> CREATE DOMAIN UUID AS CHAR(16) CHARACTER SET OCTETS COLLATE OCTETS;
>>>
>>>
>>> Em 12/03/2021 15:44, Carlos Wilson via lista escreveu:
>>>> Boa tarde a todos,
>>>>
>>>> Atravessei a madrugada pesquisando e não achei solução para o meu
>>>> problema. Utilizo o Unidac.
>>>>
>>>> Devido a tantos problemas com replicação e outros em sincronizar
>>>> bancos de várias filiais estou tentando migrar minhas PK para GUID
>>>>
>>>> depois de estudar em alguns lugares vi que a pk tem que ser criada
>>>> como Char(16) Octates. Dessa maneira a pk é gravada como bytes
>>>> binarios e o desempenho fica melhor ao indexar e usar como FK.
>>>>
>>>> No delphi fiz essa função para preenchimento da chave.
>>>>
>>>> function Tdm.IncUUID: TBytes;
>>>> var
>>>>    qry: TUniQuery;
>>>> begin
>>>>    qry := TUniQuery.Create(Self);
>>>>    qry.Connection := DBConn1;
>>>>    qry.SQL.Clear;
>>>>    qry.SQL.Add('select GEN_UUID() from RDB$DATABASE');
>>>>    qry.Open;
>>>>    Result := qry.Fields[0].AsBytes;
>>>>    qry.Free;
>>>> end;
>>>>
>>>> Ao fazer o append ele chama essa função e parece que está
>>>> preenchendo. porém ao dar um post, acontece a excessao:
>>>>
>>>> Could not convert variant of type (array byte) into type (integer).
>>>>
>>>> Atualizei o Unidac mas o erro persiste, mas não sei mais o que posso
>>>> fazer. Alguém, por favor, pode me dar uma luz?
>>>>
>>>> Grato.
>>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas:
>>> http://www.firebase.com.br/pesquisa_lista.html
> CWvl> ______________________________________________
> CWvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> CWvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
> CWvl> http://www.firebase.com.br/fb/artigo.php?id=1107
> CWvl> Para consultar mensagens antigas:
> CWvl> http://www.firebase.com.br/pesquisa_lista.html
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html


Mais detalhes sobre a lista de discussão lista