Vou dar uma idéia simples que pode servir pra você:
Se a sua tabela não tem muitas frescurites e tem uma estrutura básica
definida, seria possível fazer um construtor de DDL baseado nos
TFields que o delphi gera, utilizando SQL padrão compatível com o
Firebird e com o Postgres ao mesmo tempo.
Exemplificando:
Você tem uma estrutura básica que é:
sql := 'CREATE TABLE NOME_TABELA (
ID INTEGER NOT NULL,
DATA TIMESTAMP NOT NULL,
... ';
No ponto em que a sua tabela começar a modificar, você trata os campos
gerados pelo delphi:
if Query.Fields[x] is TStringField then
sql := sql + Query.Fields[x].FieldName + ' VARCHAR(' + IntToStr
(Query.Fields[x].Length) + '),'
else if Query.Fields[x] is TIntegerField then
begin
sql := sql + Query.Fields[x].FieldName + ' INTEGER ';
if Query.Fields[x].Required then
sql := sql + ' NOT NULL, '
else
sql := sql + ',';
end;
Seria um negócio simples, limitado aos tipos que você tem na tabela.
Você pode construir todo o esquema de montagem da tabela, executar ele
no banco através de uma query (ou diretamente no Connection, caso
esteja utilizando Zeos ou DbExpress) e a partir daí utilizar a tabela
normalmente.
Lembrando que: Criar tabelas em runtime, normalmente, não é uma boa
idéia.
On 17 mar, 09:49, "Jair - MICROFLEX" <
j...@microflex.com.br> wrote:
> Olá, Christian!
>
> Se eu tivesse uma tabela que guarda registros de medição a cada 5 minutos e precisasse parte dos campos dos registros de medição a cada 15 minutos eu criaria uma VIEW no banco, como o Wecsley já mencionou anteriormente. Não vejo motivo para duplicar os registros de medição a cada 15 minutos, que passarão a constar em duas tabelas diferentes no mesmo banco.
>
> Um abraço,
> Jair
>
> From: Christian Bobsin
> Sent: Tuesday, March 17, 2009 1:09 AM
> To:
dug...@googlegroups.com
> Subject: [dug-rs] Re: Como Clonar a estrutura de uma tabela do Firebird?
>
> Explicando o meu objetivo talves fique mais facil entender.
> Assim, possuo uma tabela com 3000 registros de medição de energia a cada 5 minutos. Mas para a Aneel (Ag. Nac. de Energia Elétrica) eu preciso montar uma tabela de medições que ocorreram a cada 15 minutos. Então, eu quero criar uma nova tabela contendo 1000 registros a cada 15 minutos.
>
> Pensei em varias formas de como fazer isso mas a unica que me pareceu a melhro e mais pratica seria criar uma nova tabela a partir das medições originais que assim eu poderia manipular facilmente ela para outros calculos com os registros e ficaria salva para posteriores consultas tb.
>
> A minha necessidade e pegar a estrutura da minha tabela original, sendo que não posso garatinr que sua estrura seja constante ja que qtde de campos varia.
>
> O mauricio anteriormente me deu a resposta que eu preciso mas ela so funciona em SQL Server e Postgr SQL eu gostaria de saber se o Firebird possui um comando especifico para que se gere uma copia da tabela mas sem os dados.
>
> E por curiosidade o seira pegar a DDL da tabela ? Seria DLL e se for como isso funciona
>
> Existe muitas praticas que pode-se dizer que seja rotineira em Delphi que eu ainda estou aprendendo por isso sei que as vezes devo ou fazer perguntas qse que cretinas :) e outras verdadeiras bombas hehehehe
>
> Amanhã eu vou seguir pesquisando pelo google não estou afim de ter que ficar testando variaves e ir montando um comando CREATE TABLE que pode vir até 300 colunas! Deve haver uma forma mais simples.
>
> Sds.
>
Christianwww.ims.ind.br
>
> 2009/3/17 Wecsley Fey <
wecsley...@hotmail.com>
>
> Olá Christian,
>
> Qual sua necessidade ? Gerar a tabela via código ? Você não consegue pegar a DDL da tabela ?
>
> Uma simples view não resolveira seu problema (se não precisares gerar uma tabela nova) ?
>
> Grande abraço !
>
> Att,
> Wecsley Fey
> Aquasoft Tecnologia da Informação
> Fone
+55 51 3022-3188 - Porto Alegre/RS - Brasil
>
http://www.aquasoft.com.br
> Borland Learning Partner
>
> ------------------------------------------------------------------------------
> Date: Tue, 17 Mar 2009 00:02:47 -0300
> Subject: [dug-rs] Re: Como Clonar a estrutura de uma tabela do Firebird?
> From:
christianbob...@gmail.com
> To:
dug...@googlegroups.com
>
> Não willian ainda não.
>
> Eu até sei um método de como fazer mas vai ficar muito longo, que seria redeclarar toda a tabela novamente. E o meu problema é que apesar da tabela possuir basicamente os mesmos campos elas são possuem uma certa dinamica em que a vezes alguns campos estão presentes e outros não por isso que precisava encontrar uma forma de clonar a minha tabela senão terei que escrever muito código para uma coisa que talves eu possa fazer com 2 ou 3 linhas de código.
>
> 2009/3/16 Wilian Selzlein <
wil...@m2net.com.br>
>
> Olá Christian! Boa noite!
>
> Como pegar os campos da sua tabela de origem você já conseguiu?
>
> Wilian Selzlein
>
> Em 16/03/2009 22:17, Christian Bobsin escreveu:
>
> > Pois é até agora só encontrei este método como a resposta para minha
> > pergunta mas no _Firebird_ ela não é valida =(
> >
> > aprocura continua....
> >
> > Mas muito obrigado por ter respondido mauricio.
> >
>
> > 2009/3/16 Maurício Lauxen <
lau...@gmail.com <mailto:
lau...@gmail.com>>
>
> >
> > Boa noite
> >
> > No SQL SERVER e no POSTGRSQL eu sei que funciona assim:
> >
> > SELECT *
> > INTO NOVA_TABELA
> > FROM TABELA
> > WHERE 1 = 0
> >
> > Maurício Lauxen
> >
> >
> > 2009/3/16 Christian Bobsin <
christianbob...@gmail.com
>
> > <mailto:
christianbob...@gmail.com>>