Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Problema com associação de três classes
#1
Boa noite, estou enfrentando um problema com o framework, que faz uns quantos dias tento solução e nada, o usuario Lucas colocou aqui no fórum e também não obtive sucesso.
Vejo que tem muitas pessoas utilizando o framework em produção o que me leva a acreditar que a ferramenta seja realmente boa. Achei muito fácil e simples de trabalhar com o ORMBr,   e  até comecei a migrar meus projetos para trabalhar com ele, mas me deparei com este problema que não consegui solucionar e fui obrigado a voltar atrás.
Tentarei explicar de uma maneira diferente para ver se consigo ser mais claro, tenho três classes TAtendimento, TExame e TProcedimento associadas entre si, que estão definidas de seguinte forma:
  TAtendimento = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FExames: TObjectList<TExame>;
—-------------------------------------------------------------------------------------
  TExame = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FCorrel: Integer;
    FProcedimento: TProcedimento;
—----------------------------------------------------------------------------------------
  TProcedimento = class
  private
    FProcedimento: Double;
    FNome: String;
    FMmnemonico: String;
—-------------------------------------------------------------------------------------------

PROBLEMA: Quando carrego os dados de um determinado atendimento, a carga ocorre sem problemas assim como a carga dos exames, porém os dados da classe TProcedimentos que está associada a TExames não carrega e o atributo FProcedimento da classe TExame fica nulo.

 
Código:
 LContainerAtendimentos  := TContainerObjectSet<TAtendimento>.Create(FConn, 10);
   LListaAtendimentos     := LContainerAtendimentos.FindWhere('POSTO = 0 AND    
                                                                                                                     ATENDIMENTO = 1');

        LListaAtendimentos[0].Atendimento    => OK
        LListaAtendimentos[0]. Exames[0].Mnemonico   => OK
        LListaAtendimentos[0]. Exames[0].Procedimento   => ERROR

        
•  No constructor da Class TExame estou instanciando o atributo FProcedimento, porem NÃO está passando por este constructor, nem quando cria o container nem quando exacuta o Find. Somente executa o contructor do TAtendimento.

Este comportamento é normal, é uma limitação do framework ou estou fazendo alguma coisa errada. ??? 
Procurei nos exemplos tanto da instalação quanto na internet e não achei nenhum exemplo com associação de tres classes.
Se alguém puder me dar uma luz será bem vinda, desde já agradeço e peço desculpas pela insistência;

Posso enviar um breve exemplo inteiro para testar se for necessário;


Arquivo(s) anexado(s)
.zip   exemplo_ormbr-master.zip (Tamanho: 62.46 KB / Downloads: 83)
Responder
#2
(20-03-2018, 11:45 PM)Jose Varela Escreveu: Boa noite, estou enfrentando um problema com o framework, que faz uns quantos dias tento solução e nada, o usuario Lucas colocou aqui no fórum e também não obtive sucesso.
Vejo que tem muitas pessoas utilizando o framework em produção o que me leva a acreditar que a ferramenta seja realmente boa. Achei muito fácil e simples de trabalhar com o ORMBr,   e  até comecei a migrar meus projetos para trabalhar com ele, mas me deparei com este problema que não consegui solucionar e fui obrigado a voltar atrás.
Tentarei explicar de uma maneira diferente para ver se consigo ser mais claro, tenho três classes TAtendimento, TExame e TProcedimento associadas entre si, que estão definidas de seguinte forma:
  TAtendimento = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FExames: TObjectList<TExame>;
—-------------------------------------------------------------------------------------
  TExame = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FCorrel: Integer;
    FProcedimento: TProcedimento;
—----------------------------------------------------------------------------------------
  TProcedimento = class
  private
    FProcedimento: Double;
    FNome: String;
    FMmnemonico: String;
—-------------------------------------------------------------------------------------------

PROBLEMA: Quando carrego os dados de um determinado atendimento, a carga ocorre sem problemas assim como a carga dos exames, porém os dados da classe TProcedimentos que está associada a TExames não carrega e o atributo FProcedimento da classe TExame fica nulo.

 
Código:
 LContainerAtendimentos  := TContainerObjectSet<TAtendimento>.Create(FConn, 10);
   LListaAtendimentos     := LContainerAtendimentos.FindWhere('POSTO = 0 AND    
                                                                                                                     ATENDIMENTO = 1');

        LListaAtendimentos[0].Atendimento    => OK
        LListaAtendimentos[0]. Exames[0].Mnemonico   => OK
        LListaAtendimentos[0]. Exames[0].Procedimento   => ERROR

        
•  No constructor da Class TExame estou instanciando o atributo FProcedimento, porem NÃO está passando por este constructor, nem quando cria o container nem quando exacuta o Find. Somente executa o contructor do TAtendimento.

Este comportamento é normal, é uma limitação do framework ou estou fazendo alguma coisa errada. ??? 
Procurei nos exemplos tanto da instalação quanto na internet e não achei nenhum exemplo com associação de tres classes.
Se alguém puder me dar uma luz será bem vinda, desde já agradeço e peço desculpas pela insistência;

Posso enviar um breve exemplo inteiro para testar se for necessário;

Bug Corrigido e já disponivel no repositório, segue em anexo seu exemplo tb corrigido, testado e funcionando.


Arquivo(s) anexado(s)
.zip   exemplo_ormbr-master.zip (Tamanho: 105.4 KB / Downloads: 84)

  Isaque Pinheiro
  Fundador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

Responder
#3
(21-03-2018, 09:00 AM)Isaque Pinheiro Escreveu:
(20-03-2018, 11:45 PM)Jose Varela Escreveu: Boa noite, estou enfrentando um problema com o framework, que faz uns quantos dias tento solução e nada, o usuario Lucas colocou aqui no fórum e também não obtive sucesso.
Vejo que tem muitas pessoas utilizando o framework em produção o que me leva a acreditar que a ferramenta seja realmente boa. Achei muito fácil e simples de trabalhar com o ORMBr,   e  até comecei a migrar meus projetos para trabalhar com ele, mas me deparei com este problema que não consegui solucionar e fui obrigado a voltar atrás.
Tentarei explicar de uma maneira diferente para ver se consigo ser mais claro, tenho três classes TAtendimento, TExame e TProcedimento associadas entre si, que estão definidas de seguinte forma:
  TAtendimento = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FExames: TObjectList<TExame>;
—-------------------------------------------------------------------------------------
  TExame = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FCorrel: Integer;
    FProcedimento: TProcedimento;
—----------------------------------------------------------------------------------------
  TProcedimento = class
  private
    FProcedimento: Double;
    FNome: String;
    FMmnemonico: String;
—-------------------------------------------------------------------------------------------

PROBLEMA: Quando carrego os dados de um determinado atendimento, a carga ocorre sem problemas assim como a carga dos exames, porém os dados da classe TProcedimentos que está associada a TExames não carrega e o atributo FProcedimento da classe TExame fica nulo.

 
Código:
 LContainerAtendimentos  := TContainerObjectSet<TAtendimento>.Create(FConn, 10);
   LListaAtendimentos     := LContainerAtendimentos.FindWhere('POSTO = 0 AND    
                                                                                                                     ATENDIMENTO = 1');

        LListaAtendimentos[0].Atendimento    => OK
        LListaAtendimentos[0]. Exames[0].Mnemonico   => OK
        LListaAtendimentos[0]. Exames[0].Procedimento   => ERROR

        
•  No constructor da Class TExame estou instanciando o atributo FProcedimento, porem NÃO está passando por este constructor, nem quando cria o container nem quando exacuta o Find. Somente executa o contructor do TAtendimento.

Este comportamento é normal, é uma limitação do framework ou estou fazendo alguma coisa errada. ??? 
Procurei nos exemplos tanto da instalação quanto na internet e não achei nenhum exemplo com associação de tres classes.
Se alguém puder me dar uma luz será bem vinda, desde já agradeço e peço desculpas pela insistência;

Posso enviar um breve exemplo inteiro para testar se for necessário;

Bug Corrigido e já disponivel no repositório, segue em anexo seu exemplo tb corrigido, testado e funcionando.

Bom dia Isaque, conforme combinado testei e a alteração funcionou perfeitamente com 3 camadas, porém adicionei mais uma camada e nao funcionou, adicionei um atributo Setor dentro de TProcedimento do tipo TSetor, ou seja agora teriamos 4 camadas, e desta maneira a ultima camada nao foi carregada.
Em Anexo o exemplo.

Pergunto, esta seria a melhor maneira da trabalhar ??? minha duvida surge pq como falei, vejo muitas pessoas utilizando o framework em produção e aparentemente nunca se depararam com esta situação ??? o que vc me recomendaria ???
Estou ciente de que nao seria bom utilizar muitos níveis de associação, pois isso implicaria numa queda da performance para carregar todos os objetos, talvez estabelecer um limite ??

Isaque, mais uma vez peco desculpas pelas minhas chatices, imagino que estejas dedicado a outros projetos e com pouco tempo, mas é porque achei a ferramenta fantástica e fiquei meio frustrado ao não poder utilizar nos meus projetos, fico aguardando uma resposta e muito obrigado pela sua  dedicação.
Parabéns pelo trabalho.


Arquivo(s) anexado(s)
.zip   exemplo_ormbr-master - 4 camadas.zip (Tamanho: 110.16 KB / Downloads: 81)
Responder
#4
(22-03-2018, 11:26 AM)Jose Varela Escreveu:
(21-03-2018, 09:00 AM)Isaque Pinheiro Escreveu:
(20-03-2018, 11:45 PM)Jose Varela Escreveu: Boa noite, estou enfrentando um problema com o framework, que faz uns quantos dias tento solução e nada, o usuario Lucas colocou aqui no fórum e também não obtive sucesso.
Vejo que tem muitas pessoas utilizando o framework em produção o que me leva a acreditar que a ferramenta seja realmente boa. Achei muito fácil e simples de trabalhar com o ORMBr,   e  até comecei a migrar meus projetos para trabalhar com ele, mas me deparei com este problema que não consegui solucionar e fui obrigado a voltar atrás.
Tentarei explicar de uma maneira diferente para ver se consigo ser mais claro, tenho três classes TAtendimento, TExame e TProcedimento associadas entre si, que estão definidas de seguinte forma:
  TAtendimento = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FExames: TObjectList<TExame>;
—-------------------------------------------------------------------------------------
  TExame = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FCorrel: Integer;
    FProcedimento: TProcedimento;
—----------------------------------------------------------------------------------------
  TProcedimento = class
  private
    FProcedimento: Double;
    FNome: String;
    FMmnemonico: String;
—-------------------------------------------------------------------------------------------

PROBLEMA: Quando carrego os dados de um determinado atendimento, a carga ocorre sem problemas assim como a carga dos exames, porém os dados da classe TProcedimentos que está associada a TExames não carrega e o atributo FProcedimento da classe TExame fica nulo.

 
Código:
 LContainerAtendimentos  := TContainerObjectSet<TAtendimento>.Create(FConn, 10);
   LListaAtendimentos     := LContainerAtendimentos.FindWhere('POSTO = 0 AND    
                                                                                                                     ATENDIMENTO = 1');

        LListaAtendimentos[0].Atendimento    => OK
        LListaAtendimentos[0]. Exames[0].Mnemonico   => OK
        LListaAtendimentos[0]. Exames[0].Procedimento   => ERROR

        
•  No constructor da Class TExame estou instanciando o atributo FProcedimento, porem NÃO está passando por este constructor, nem quando cria o container nem quando exacuta o Find. Somente executa o contructor do TAtendimento.

Este comportamento é normal, é uma limitação do framework ou estou fazendo alguma coisa errada. ??? 
Procurei nos exemplos tanto da instalação quanto na internet e não achei nenhum exemplo com associação de tres classes.
Se alguém puder me dar uma luz será bem vinda, desde já agradeço e peço desculpas pela insistência;

Posso enviar um breve exemplo inteiro para testar se for necessário;

Bug Corrigido e já disponivel no repositório, segue em anexo seu exemplo tb corrigido, testado e funcionando.

Bom dia Isaque, conforme combinado testei e a alteração funcionou perfeitamente com 3 camadas, porém adicionei mais uma camada e nao funcionou, adicionei um atributo Setor dentro de TProcedimento do tipo TSetor, ou seja agora teriamos 4 camadas, e desta maneira a ultima camada nao foi carregada.
Em Anexo o exemplo.

Pergunto, esta seria a melhor maneira da trabalhar ??? minha duvida surge pq como falei, vejo muitas pessoas utilizando o framework em produção e aparentemente nunca se depararam com esta situação ??? o que vc me recomendaria ???
Estou ciente de que nao seria bom utilizar muitos níveis de associação, pois isso implicaria numa queda da performance para carregar todos os objetos, talvez estabelecer um limite ??

Isaque, mais uma vez peco desculpas pelas minhas chatices, imagino que estejas dedicado a outros projetos e com pouco tempo, mas é porque achei a ferramenta fantástica e fiquei meio frustrado ao não poder utilizar nos meus projetos, fico aguardando uma resposta e muito obrigado pela sua  dedicação.
Parabéns pelo trabalho.

Correção disponível no repositório.

  Isaque Pinheiro
  Fundador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

Responder
#5
(22-03-2018, 01:02 PM)Isaque Pinheiro Escreveu:
(22-03-2018, 11:26 AM)Jose Varela Escreveu:
(21-03-2018, 09:00 AM)Isaque Pinheiro Escreveu:
(20-03-2018, 11:45 PM)Jose Varela Escreveu: Boa noite, estou enfrentando um problema com o framework, que faz uns quantos dias tento solução e nada, o usuario Lucas colocou aqui no fórum e também não obtive sucesso.
Vejo que tem muitas pessoas utilizando o framework em produção o que me leva a acreditar que a ferramenta seja realmente boa. Achei muito fácil e simples de trabalhar com o ORMBr,   e  até comecei a migrar meus projetos para trabalhar com ele, mas me deparei com este problema que não consegui solucionar e fui obrigado a voltar atrás.
Tentarei explicar de uma maneira diferente para ver se consigo ser mais claro, tenho três classes TAtendimento, TExame e TProcedimento associadas entre si, que estão definidas de seguinte forma:
  TAtendimento = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FExames: TObjectList<TExame>;
—-------------------------------------------------------------------------------------
  TExame = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FCorrel: Integer;
    FProcedimento: TProcedimento;
—----------------------------------------------------------------------------------------
  TProcedimento = class
  private
    FProcedimento: Double;
    FNome: String;
    FMmnemonico: String;
—-------------------------------------------------------------------------------------------

PROBLEMA: Quando carrego os dados de um determinado atendimento, a carga ocorre sem problemas assim como a carga dos exames, porém os dados da classe TProcedimentos que está associada a TExames não carrega e o atributo FProcedimento da classe TExame fica nulo.

 
Código:
 LContainerAtendimentos  := TContainerObjectSet<TAtendimento>.Create(FConn, 10);
   LListaAtendimentos     := LContainerAtendimentos.FindWhere('POSTO = 0 AND    
                                                                                                                     ATENDIMENTO = 1');

        LListaAtendimentos[0].Atendimento    => OK
        LListaAtendimentos[0]. Exames[0].Mnemonico   => OK
        LListaAtendimentos[0]. Exames[0].Procedimento   => ERROR

        
•  No constructor da Class TExame estou instanciando o atributo FProcedimento, porem NÃO está passando por este constructor, nem quando cria o container nem quando exacuta o Find. Somente executa o contructor do TAtendimento.

Este comportamento é normal, é uma limitação do framework ou estou fazendo alguma coisa errada. ??? 
Procurei nos exemplos tanto da instalação quanto na internet e não achei nenhum exemplo com associação de tres classes.
Se alguém puder me dar uma luz será bem vinda, desde já agradeço e peço desculpas pela insistência;

Posso enviar um breve exemplo inteiro para testar se for necessário;

Bug Corrigido e já disponivel no repositório, segue em anexo seu exemplo tb corrigido, testado e funcionando.

Bom dia Isaque, conforme combinado testei e a alteração funcionou perfeitamente com 3 camadas, porém adicionei mais uma camada e nao funcionou, adicionei um atributo Setor dentro de TProcedimento do tipo TSetor, ou seja agora teriamos 4 camadas, e desta maneira a ultima camada nao foi carregada.
Em Anexo o exemplo.

Pergunto, esta seria a melhor maneira da trabalhar ??? minha duvida surge pq como falei, vejo muitas pessoas utilizando o framework em produção e aparentemente nunca se depararam com esta situação ??? o que vc me recomendaria ???
Estou ciente de que nao seria bom utilizar muitos níveis de associação, pois isso implicaria numa queda da performance para carregar todos os objetos, talvez estabelecer um limite ??

Isaque, mais uma vez peco desculpas pelas minhas chatices, imagino que estejas dedicado a outros projetos e com pouco tempo, mas é porque achei a ferramenta fantástica e fiquei meio frustrado ao não poder utilizar nos meus projetos, fico aguardando uma resposta e muito obrigado pela sua  dedicação.
Parabéns pelo trabalho.

Correção disponível no repositório.

Boa noite Isaque, desculpas nao ter dado um retorno imediato, a semana foi meia corrida, hoje que consegui testar o exemplo com 4 camadas na versao atualizada do respositorio e esta dando erro de "Expressão não encontrada", ate o mesmo exemplo de 3 camadas que funcionava com a versao anterior nao esta mais funcionando, apresenta o error de expressão nao encontrada, já revisei as definicoes das classes e nao foi mudado nada esta do jeito que estava funcionando anteriormente.

Em anexo o exemplo;

Fico aguardando uma resposta de possível, um grande abraco


Arquivo(s) anexado(s)
.zip   exemplo_ormbr-master 4 Camadas.zip (Tamanho: 105.21 KB / Downloads: 75)
Responder
#6
(26-03-2018, 11:19 PM)Jose Varela Escreveu:
(22-03-2018, 01:02 PM)Isaque Pinheiro Escreveu:
(22-03-2018, 11:26 AM)Jose Varela Escreveu:
(21-03-2018, 09:00 AM)Isaque Pinheiro Escreveu:
(20-03-2018, 11:45 PM)Jose Varela Escreveu: Boa noite, estou enfrentando um problema com o framework, que faz uns quantos dias tento solução e nada, o usuario Lucas colocou aqui no fórum e também não obtive sucesso.
Vejo que tem muitas pessoas utilizando o framework em produção o que me leva a acreditar que a ferramenta seja realmente boa. Achei muito fácil e simples de trabalhar com o ORMBr,   e  até comecei a migrar meus projetos para trabalhar com ele, mas me deparei com este problema que não consegui solucionar e fui obrigado a voltar atrás.
Tentarei explicar de uma maneira diferente para ver se consigo ser mais claro, tenho três classes TAtendimento, TExame e TProcedimento associadas entre si, que estão definidas de seguinte forma:
  TAtendimento = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FExames: TObjectList<TExame>;
—-------------------------------------------------------------------------------------
  TExame = class
  private
    FPosto: Integer;
    FAtendimento: Integer;
    FCorrel: Integer;
    FProcedimento: TProcedimento;
—----------------------------------------------------------------------------------------
  TProcedimento = class
  private
    FProcedimento: Double;
    FNome: String;
    FMmnemonico: String;
—-------------------------------------------------------------------------------------------

PROBLEMA: Quando carrego os dados de um determinado atendimento, a carga ocorre sem problemas assim como a carga dos exames, porém os dados da classe TProcedimentos que está associada a TExames não carrega e o atributo FProcedimento da classe TExame fica nulo.

 
Código:
 LContainerAtendimentos  := TContainerObjectSet<TAtendimento>.Create(FConn, 10);
   LListaAtendimentos     := LContainerAtendimentos.FindWhere('POSTO = 0 AND    
                                                                                                                     ATENDIMENTO = 1');

        LListaAtendimentos[0].Atendimento    => OK
        LListaAtendimentos[0]. Exames[0].Mnemonico   => OK
        LListaAtendimentos[0]. Exames[0].Procedimento   => ERROR

        
•  No constructor da Class TExame estou instanciando o atributo FProcedimento, porem NÃO está passando por este constructor, nem quando cria o container nem quando exacuta o Find. Somente executa o contructor do TAtendimento.

Este comportamento é normal, é uma limitação do framework ou estou fazendo alguma coisa errada. ??? 
Procurei nos exemplos tanto da instalação quanto na internet e não achei nenhum exemplo com associação de tres classes.
Se alguém puder me dar uma luz será bem vinda, desde já agradeço e peço desculpas pela insistência;

Posso enviar um breve exemplo inteiro para testar se for necessário;

Bug Corrigido e já disponivel no repositório, segue em anexo seu exemplo tb corrigido, testado e funcionando.

Bom dia Isaque, conforme combinado testei e a alteração funcionou perfeitamente com 3 camadas, porém adicionei mais uma camada e nao funcionou, adicionei um atributo Setor dentro de TProcedimento do tipo TSetor, ou seja agora teriamos 4 camadas, e desta maneira a ultima camada nao foi carregada.
Em Anexo o exemplo.

Pergunto, esta seria a melhor maneira da trabalhar ??? minha duvida surge pq como falei, vejo muitas pessoas utilizando o framework em produção e aparentemente nunca se depararam com esta situação ??? o que vc me recomendaria ???
Estou ciente de que nao seria bom utilizar muitos níveis de associação, pois isso implicaria numa queda da performance para carregar todos os objetos, talvez estabelecer um limite ??

Isaque, mais uma vez peco desculpas pelas minhas chatices, imagino que estejas dedicado a outros projetos e com pouco tempo, mas é porque achei a ferramenta fantástica e fiquei meio frustrado ao não poder utilizar nos meus projetos, fico aguardando uma resposta e muito obrigado pela sua  dedicação.
Parabéns pelo trabalho.

Correção disponível no repositório.

Boa noite Isaque, desculpas nao ter dado um retorno imediato, a semana foi meia corrida, hoje que consegui testar o exemplo com 4 camadas na versao atualizada do respositorio e esta dando erro de "Expressão não encontrada", ate o mesmo exemplo de 3 camadas que funcionava com a versao anterior nao esta mais funcionando, apresenta o error de expressão nao encontrada, já revisei as definicoes das classes e nao foi mudado nada esta do jeito que estava funcionando anteriormente.

Em anexo o exemplo;

Fico aguardando uma resposta de possível, um grande abraco

Acredito que esteja fazendo confusão com integridade relacional, não tem como funcionar mesmo pois o modelo da entidade PROCEDIMENTO não tem o campo ID da tabela SETORES.

Estude com mais calma os fontes exemplos.

  Isaque Pinheiro
  Fundador do Projeto ORM Brasil
  ORMBr SAC - Assine e faça parte dessa história ajudando o projeto a crescer.

Responder


Saltar Fórum:


usuários a ver este tópico: 1 Visitante(s)