Ir para conteúdo
  • Cadastre-se

dev botao

Função para conversão de STRING para Tipos


  • Este tópico foi criado há 4467 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá Colegas

Já existem funções no componente do ACBR para PIS e COFINS que faz a conversão de string´s para os tipos. Por exemplo o campo CST_PIS, eu armazeno no banco de dados 01, 02, 03, etc. Porém ao colocar no componente preciso informar stpisValorAliquotaNormal onde a CST for 01. Procurei nos fontes do componente mais não consegui encontrar uma função que faça a conversão. Gostaria de saber se ela já existe? E caso não exista eu irei criá-las para usar no meu sistema e se for de vosso interesse disponibilizo elas para o componente.

_________________

Ronaldo Lazarin

RSis Gestão Empresarial©

RSis Software

Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá,

Desde que o Delphi incluiu RTTI, dá pra fazer isso usando os métodos GetEnumName e GetEnumValue. Não sei se funciona no Lazarus...

Mas é algo como:

uses TypeInfo

//......
var
aTACBrSituacaoTribPIS : TACBrSituacaoTribPIS;
campodoBD: string;
begin
//imagine que campodoBD é o campo do BD... então salvar seria como
campodoBD := GetEnumName(TypeInfo(TACBrSituacaoTribPIS), integer(stpisValorAliquotaNormal)) ;

//imagine que aTACBrSituacaoTribPIS é o campo do componte que você está lendo do BD. Pra simplificar vou usar a mesma variável campodoBD
aTACBrSituacaoTribPIS := TACBrSituacaoTribPIS(GetEnumValue(TypeInfo(TACBrSituacaoTribPIS), campodoBD);
// Mas poderia ser o abaixo
// aTACBrSituacaoTribPIS := TACBrSituacaoTribPIS(GetEnumValue(TypeInfo(TACBrSituacaoTribPIS), 'stpisValorAliquotaNormal');

[/code]

Como não sei se o Lazarus faz isso, talvez seja uma boa ideia implementar outros métodos.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Funcionou no Lazarus também porém há problema que não consegui resolver. A função GetTypeValue me retorna a posição do Nome dentro do conjunto. Por exemplo para um conjunto (tipo1, tipo2, tipo3...) ela retorna 1 para tipo1, 2 para tipo2, 3 para tipo3, etc. Só que eu armazeno no banco de dados os códigos das CSTs 01, 02, 03, 04, 05, 06, 07, 08, 09, 49, 50... Aí é que encontrei o problema, quando trago 49 do banco de dados a GetTypeValue busca o valor que está na posição 49 do conjunto e na verdade ele está na posição 10.

A menos que eu tenha entendido errado a forma de usar esse recurso.

_________________

Ronaldo Lazarin

RSis Gestão Empresarial©

RSis Software

Link para o comentário
Compartilhar em outros sites

  • Consultores

Não sei o porquê, mas não tinha visto essa mensagem... :?:

Bem, você não entendeu o método errado não. É isso mesmo. Achei que você queria retornar o valor do tipo e não o valor do campo SPED.

Na verdade, no momento penso que a melhor opção pra armazenar esse tipo de campo é armazenando a string do tipo (ex. stpisValorAliquotaNormal). Isso impede o problema de quando o SPED muda os valores por ventura de uma nova versão, como já aconteceu com alguns campos.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Olá Elton

Eu entendi o funcionamento das funções, GetTypeValue te retorna a posição do tipo e GetTypeName te retorna o nome do tipo. Acho interessante essa idéia de armazenar a string do tipo no banco de dados, mais no meu caso acho que inviável eu fazer agora pois já tenho muitos clientes usuários do sistema e o trabalho seria maior e considerando os prós e contras e o tempo curto preferi criar as funções. Já estou criando elas e caso queira posso disponibilizá-las para você analisar a incorporar no componente para que outros colegas também possam aproveitar.

_________________

Ronaldo Lazarin

RSis Gestão Empresarial©

RSis Software

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4467 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...