Autor Tópico: Tabelas temporárias  (Lida 4364 vezes)

Davi

  • Global Moderator
  • *****
  • Mensagens: 426
  • Karma: +0/-0
Tabelas temporárias
« Online: Agosto 09, 2011, 09:14:25 am »
Olá Pessoal, esse tópico não é tão especifico para o windev ou webdev, mas tendo em vista que a maioria usa Mysql.....

Estou com o seguinte problema, preciso criar uma tabela temporaria no mysql e vazer varias inserções.

por exemplo... fiz assim... direto no mysql... sem usar o windev 

CREATE TEMPORARY TABLE clitmp (codigo varchar(50)) ENGINE=MEMORY;

a tabela cria certinho, p q  se executo o comando novamente ele diz que a tabela já existe..

ai faço o seguinte, para adicionar registros  INSERT INTO clitmp(select codigo from cfrt);

porém... quando vou tentar usar... com um simples select.. ele diz que a tabela não existe.

Alguem já usou tabelas temporárias no mysql?

Davi

  • Global Moderator
  • *****
  • Mensagens: 426
  • Karma: +0/-0
Re:Tabelas temporárias
« Responder #1 Online: Agosto 09, 2011, 09:21:31 am »
bom pessoal...

resolvi o problema... na verdade o problema estava no Query Browser do MYSQL... ele não funciona com temporary table.

mas executando direto no console... funciona certinho..

para que esta iniciando no windev... o temporary table serve quando vc precisa manipular dados antes de exibir um relatório... no meu caso eu tenho que unir os dados de tres tabelas em uma e processar informações, para ai exibir o relatório. Pode-se criar uma tabela direto no banco, mas se dois
usuario abrir o relatório vai dar problema, o temporary table cria a tabela temporaria em memoria na maquina local, somente o usuario que criou pode utilizar, ao fechar o sistema quando fecha a conexão as tabelas temporaryas são excluidas.

para quem quiser brincar no windev para testar... exemplo de como utilizar

dsReltmp is Data Source
HExecuteSQLQuery(dsReltmp,New_Connection,hQueryWithoutCorrection,"CREATE TEMPORARY TABLE teste5 (codigo varchar(50)) ENGINE=MEMORY")  //cria tabela

HExecuteSQLQuery(dsReltmp,New_Connection,hQueryWithoutCorrection,"INSERT INTO teste5(select codigo from cfrt)")  //alimenta a tabela com uma consulta em uma tabela real

HExecuteSQLQuery(dsReltmp,New_Connection,hQueryWithoutCorrection,"SELECT * FROM teste5") //seleciona todos os regitros da tabela temporaria

HReadFirst(dsReltmp) //aponta para o primeiro registro


Info(HNbRec(dsReltmp))  //mostra na tela o numero de registro...

HExecuteSQLQuery(dsReltmp,New_Connection,hQueryWithoutCorrection,"DROP TABLE teste5") //remove a tabela temporarya do mysql

Jose Carlos Leoner

  • Newbie
  • *
  • Mensagens: 14
  • Karma: +0/-0
Re:Tabelas temporárias
« Responder #2 Online: Maio 24, 2013, 08:37:56 am »
Aproveitando esse tópico.

Tambem preciso usar tabela temporária.

Consegui montar de acordo com o exemplo do Davi

Meu problema é que não consigo montar o relatório a partir dessa tabela e nem de uma query gerada a partir dela.

Aguma dica ?

Davi

  • Global Moderator
  • *****
  • Mensagens: 426
  • Karma: +0/-0
Re:Tabelas temporárias
« Responder #3 Online: Maio 27, 2013, 09:00:10 am »
da para usar, mas vc tem que montar tudo na mão o relatorio, porem o datasource que vc vai usarm caso vc esteja criando ele em outra tela ou outro local não vai dar certo, vai ter que declarar uma datasource global e ai poder usar no relatorio

Jose Carlos Leoner

  • Newbie
  • *
  • Mensagens: 14
  • Karma: +0/-0
Re:Tabelas temporárias
« Responder #4 Online: Maio 27, 2013, 09:18:18 am »
Entendi, vou fazer um teste.