Ir para conteúdo
  • Cadastre-se

dev botao

Problema Com Procedure Set_Context No Firebird


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

Recommended Posts

ola a todos, uso a procedure set_context no firebird e em alguns clientes, acontece erro.

 

   V_APLICATIVO = RDB$GET_CONTEXT('USER_SESSION', 'APLICATIVO');
  IF (  NOT( V_APLICATIVO = 'teste' )  OR ( V_APLICATIVO IS NULL ) ) THEN
     BEGIN
        EXCEPTION ACESSONEGADO;
        EXIT;
     END
 
e sempre quando inicio o programa passo o valor correto para variavel V_APLICATIVO e em alguns clientes, cai na EXCEPTION, ou seja é como se o firebird nao tivesse recebendo a variavel passada, uso firebird 2.5.2 Delphi Xe6, se alguem tiver uma dica , agradeço.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Em que momento você faz isso ?

 

Uso técnica semelhante e nunca tive problemas...

 

Você pode ainda fazer um Loop até ter certeza que o Valor foi gravado... Ex:


           repeat
              SQL.Text := 'select RDB$SET_CONTEXT(''USER_SESSION'', ''APLICATIVO'', '''+SuaChave+ ''')'+
                          ' from rdb$database' ;
              Open;

              Close ;
              SQL.Text := 'select RDB$GET_CONTEXT(''USER_SESSION'', ''APLICATIVO'' ) as DJ_KEY from rdb$database';
              Open;
           until FieldByName('APLICATIVO').AsString = SuaChave;
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

estou usando Firedac TFDCOMMAND será esse o problema ou algo com o firebird 2.5.2, sempre executo o set context apos conectar o banco de dados, sera isso?

 

   try
     CONTEXTO.Close;
     CONTEXTO.ParamByName('USU').AsString := sNomeUsuario;
     CONTEXTO.ParamByName('EMP').AsInteger := iEmp;
     CONTEXTO.ParamByName('APP').AsString := 'teste';
     CONTEXTO.Execute();
   except on E: Exception do
     begin
       ShowMessage('Erro ao executar comando ' + E.Message );
     end;
   end;
Link para o comentário
Compartilhar em outros sites

  • Consultores

Será que você não fecha a conexão e abre ela novamente em alguma circunstância? Isso faria com que as variáveis de contexto fossem zeradas.

 

É possível que algumas de suas chamadas estejam sendo executadas ao mesmo tempo que você envia o comando para definir o valor da variável?

Já tentou fazer um log do momento exato onde isso acontece e verificar o código está realmente utilizando a mesma sessão que deveria?

[]'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

eu executo depois de conectar o database no datamodule, e na hora de gerar alguns arquivos que precisa eu executo ela novamente pra garantir que seja passado a variavel, será esse o problema, ou o firebird 2.5( versao ) ou talvez porque nao estou executando usando objeto FDSTOREDPROC e sim um FDCOMMAND?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Para funcionar corretamente em DELPHI o SET_CONTEXT você precisa utilizar algo que retorne algo como por exemplo um select (o Daniel postou um exemplo acima) caso contrário a variável não é gravada corretamente no BD.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Consultores

perdao, mais ja li todas, inclusive respondir acima, falando como faço o procedimento aqui, usando fdcommand e nao fdquery ou fdstoredproc, alguem de voces usam o firebird 2.5.2 , será bug de versao ou de codigo?

Até onde me lembro não há problemas no Firebird 2.5.x de variáveis de contexto.

[]'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

fiz como sugerido pelos colega Daniel , só me resta aguardar , mais acho que vai funcionar, pq uso 2 connection um pra local e outro pra Rede com servidor, e verifiquei que quando faço o Set_Context uma vez se verificar no outro conection esta gravado no firebird, pq antes usar uma procedure chamada set_contexto onde passava os parametros, mudei pra forma que nosso amigo Daniel sugeriu, e estou testando, agradeço a todos pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3434 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...