Ir para conteúdo
Fórum Script Brasil
  • 0

Delphi2009+DBExpress


Paulo Campos

Pergunta

Olá gente, sou novo no forum, e desde já agradeço pela atenção de todos.

Olha só, estou com uma dúvida e que provavelmente pode ser um bug do Delphi 2009.

Vou explicar.

Eu uso com BDS2006+DBExpress+MySQL.

Agora com o RAD 2009, passei meu sistema para o mesmo. Só que surgiu um problema.

Criei uma função no Banco que faz vário select´s e joga tudo em uma tabela temporária, ao terminar de rodá-la no delphi, eu abro a tabela temporária em um grid, isso tudo no BDS2006, já no RAD2009, a tabela não existe.

Minha explicação ao problema encontrado é o seguinte. Quando criamos uma tabela temporária, ela passa a existir somente na sessão que foi conectado, no DBExpress essa sessão muda quando setamos a propriedade KeepConnection do SQLConnection para False. Pois bem, no RAD2009, a propriedade KeepConnection estando True ou False, a sessão sempre muda, como se o SQLConnection desconectasse e conectasse toda vez que solicitamos algo ao banco.

Compreendeu meu problema?

Será bug?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá

a questão é, vários usuários fazem essa consulta, então não pode ser uma tabela definitiva.

a tabela só pode existir para a conexão atual.

no BDS2006 funciona direitinho.

vou postar um exemplo pra melhor entender porque no delphi 2009 a tabela temporária some.

BDS2006:

sqlquery1.sql.text := 'select connection_id() as teste';

clientdataset1.open;

Showmessage(clientdataset1.fieldbyname('teste').asstring);

===> aqui o resultado vamos dizer que é 1, se fechar o clientdataset1 e abrir novamente o resultado vai ser 1, isso sem desconectar o sqlconnection1.

===> já no Delphi 2009 o primeiro resultado seria 1, depois 2, como se tivesse desconetado o sqlconnection ou como se a propriedade KeepConnection estivesse false.

Link para o comentário
Compartilhar em outros sites

  • 0
a questão é, vários usuários fazem essa consulta, então não pode ser uma tabela definitiva.

a tabela só pode existir para a conexão atual.

Eu utilizo uma tabela que é apagada cada vez que um usuário faz acesso, e cada usuário trabalha com essa tabela independente de outro usuário, e funciona perfeitamente.

Paulo ... para poder entender o que está acontecendo, seria melhor voce postar o código onde ocorre este problema...pelo que voce informou parece que o resultado esta sendo incrementado de 1 em 1 ´... é isso ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

você não esta entendendo, vou tentar explicar melhor.

todo banco de dados quando faz uma conexão tem o número dessa sessão,

no mysql o função que te mostra o número da sessão é Connection_ID().

pois bem, se entrar em qualquer gerenciador de mysql e executar essa função ( select Connection_ID() ),

vai mostrar o número da sessão/conexão, se desconectar e conectar novamente estará em outra sessão, consequentemente esse número muda e se tiver alguma tabela temporária ela será apagadada, porque tabela temporária só existe na sessão que foi criada.

agora vamos ao delphi.

sempre que faço qualquer requisição ao banco, parece que o DBExpress desconecta e conecta novamente,

como se a propriedade KeepConnection do SQLConnection estivesse False.

entendeu agora?

aguardo, obrigado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...