Atualizaçao
Boa tarde Amigos,
Até hoje todos os os programinhas que eu fiz era muito simples por tanto eu fazia instalava e acabou, o problema é que agora eu preciso atualizar um que ja esta rodando a um certo tempo todas as ideias que eu tive para isso falharam, gostaria de saber se vcs tem algum material pra me indicar procurei aki no forum e em outros mais nao achei.
eu uso delphi 7 + zeos + firebird.
desde ja o brigado.
Até hoje todos os os programinhas que eu fiz era muito simples por tanto eu fazia instalava e acabou, o problema é que agora eu preciso atualizar um que ja esta rodando a um certo tempo todas as ideias que eu tive para isso falharam, gostaria de saber se vcs tem algum material pra me indicar procurei aki no forum e em outros mais nao achei.
eu uso delphi 7 + zeos + firebird.
desde ja o brigado.
Sidimarsilva
Curtidas 0
Respostas
Pestana_
03/04/2009
como você gostaria de atualizar o sistema?
de mais detalhes para que podemos ajuda-lo!
flw.
de mais detalhes para que podemos ajuda-lo!
flw.
GOSTEI 0
Sidimarsilva
03/04/2009
Opa,
Aí é que esta o problema, como nunca fiz e nao encontrei nada por enquanto para dar partida do boiando.
No momento o que preciso é o seguinte.
O programa éra para controle de aparelhos celulares, até ai blz agora modifiquei a estrutura das tabelas para controlar tambem as linhas.
antes eu tinha apenas a tabela aparelho
´AP_ID´ INTEGER NOT NULL,
´AP_NOTA´ INTEGER NOT NULL,
´AP_IMEI´ VARCHAR(20),
´AP_MARCA´ INTEGER,
´AP_MODELO´ INTEGER,
´AP_EMPRESA´ INTEGER,
´AP_DATA´ DATE,
´AP_VALOR´ DECIMAL(15,2),
´AP_NUMERO_AGREGADO´ VARCHAR(15),
´AP_PIN´ INTEGER,
´AP_PUK´ INTEGER,
´AP_PUK2´ INTEGER,
´AP_PIN2´ INTEGER,
PRIMARY KEY (´AP_ID´)
agora eu criei a tabela Chip entao alterei a tabela aparelho
(
AP_ID INTEGER NOT NULL,
AP_NOTA INTEGER NOT NULL,
AP_IMEI VARCHAR(20) CHARACTER SET ASCII,
AP_MARCA INTEGER,
AP_MODELO INTEGER,
AP_EMPRESA INTEGER,
AP_DATA TIMESTAMP,
AP_VALOR DECIMAL(15,2),
AP_CHIP INTEGER,
PRIMARY KEY (AP_ID)
(
CHIP_ID INTEGER NOT NULL,
CHIP_SERIAL1 VARCHAR(20) CHARACTER SET ASCII,
CHIP_SERIAL2 VARCHAR(20) CHARACTER SET ASCII,
CHIP_NUMERO VARCHAR(15) CHARACTER SET ASCII,
CHIP_USUARIO VARCHAR(20) CHARACTER SET ASCII,
CHIP_PIN INTEGER,
CHIP_PIN2 INTEGER,
CHIP_PUK INTEGER,
CHIP_PUK2 INTEGER,
PRIMARY KEY (CHIP_ID)
Agora preciso fazer essas alterções no banco que esta rodando a tempos.
Aí é que esta o problema, como nunca fiz e nao encontrei nada por enquanto para dar partida do boiando.
No momento o que preciso é o seguinte.
O programa éra para controle de aparelhos celulares, até ai blz agora modifiquei a estrutura das tabelas para controlar tambem as linhas.
antes eu tinha apenas a tabela aparelho
´AP_ID´ INTEGER NOT NULL,
´AP_NOTA´ INTEGER NOT NULL,
´AP_IMEI´ VARCHAR(20),
´AP_MARCA´ INTEGER,
´AP_MODELO´ INTEGER,
´AP_EMPRESA´ INTEGER,
´AP_DATA´ DATE,
´AP_VALOR´ DECIMAL(15,2),
´AP_NUMERO_AGREGADO´ VARCHAR(15),
´AP_PIN´ INTEGER,
´AP_PUK´ INTEGER,
´AP_PUK2´ INTEGER,
´AP_PIN2´ INTEGER,
PRIMARY KEY (´AP_ID´)
agora eu criei a tabela Chip entao alterei a tabela aparelho
(
AP_ID INTEGER NOT NULL,
AP_NOTA INTEGER NOT NULL,
AP_IMEI VARCHAR(20) CHARACTER SET ASCII,
AP_MARCA INTEGER,
AP_MODELO INTEGER,
AP_EMPRESA INTEGER,
AP_DATA TIMESTAMP,
AP_VALOR DECIMAL(15,2),
AP_CHIP INTEGER,
PRIMARY KEY (AP_ID)
(
CHIP_ID INTEGER NOT NULL,
CHIP_SERIAL1 VARCHAR(20) CHARACTER SET ASCII,
CHIP_SERIAL2 VARCHAR(20) CHARACTER SET ASCII,
CHIP_NUMERO VARCHAR(15) CHARACTER SET ASCII,
CHIP_USUARIO VARCHAR(20) CHARACTER SET ASCII,
CHIP_PIN INTEGER,
CHIP_PIN2 INTEGER,
CHIP_PUK INTEGER,
CHIP_PUK2 INTEGER,
PRIMARY KEY (CHIP_ID)
Agora preciso fazer essas alterções no banco que esta rodando a tempos.
GOSTEI 0
Sidimarsilva
03/04/2009
Ninguem please :(
GOSTEI 0
Lehapan
03/04/2009
Caro sidimarsilva,
uma das maneiras é você fazer o controle de atualização pelo número da versão do seu executável.
Crie uma tabela no banco de dados chamada CONFIG e que possua somente o campo VERSAO, todas as vezes que executar o programa, verifique se a versão do executável é superior a versão que está gravada no banco, se for, você executa os scripts, caso as versões sejam iguais, não faz nada, mas se caso a versão do executável seja menor do que a versão do banco, de uma mensagem para o usuário, dizendo que o progrma está desatualizado.
Esta é uma das maneiras, pois existem diversas maneiras.
espero ter ajudado
uma das maneiras é você fazer o controle de atualização pelo número da versão do seu executável.
Crie uma tabela no banco de dados chamada CONFIG e que possua somente o campo VERSAO, todas as vezes que executar o programa, verifique se a versão do executável é superior a versão que está gravada no banco, se for, você executa os scripts, caso as versões sejam iguais, não faz nada, mas se caso a versão do executável seja menor do que a versão do banco, de uma mensagem para o usuário, dizendo que o progrma está desatualizado.
Esta é uma das maneiras, pois existem diversas maneiras.
espero ter ajudado
GOSTEI 0
Lehapan
03/04/2009
esqueci...
ah, quando a versão do executável for mairo do que a versão do banco, após rodar os scripts, você grava a versão do executável no campo VERSAO da tabela CONFIG.
ah, quando a versão do executável for mairo do que a versão do banco, após rodar os scripts, você grava a versão do executável no campo VERSAO da tabela CONFIG.
GOSTEI 0
Sidimarsilva
03/04/2009
Valeu lehapan,
Obrigado mesmo pela resposta ja é um ponto de partida, mas minha duvida ainda persiste.
Eu pensei em fazer da seguinte maneira(desculpem se o post ficar muito grande).
1º criar uma tabela temporária com os mesmos campos da tabela a ser atualizada.
2º copiar os dados da tabela antiga para a tabela temporária.
3º atualizar a tabela antiga, (ex: antes da atualização a tabela aparelhos continha os campos Ap_numero, Ap_usuario, Ap_pin, agora a tabela numero contem apenas uma chave estrangeira com o campo ap_chip, e a nova tabela chip contem todos os campos que antes pertenciam a tabela aparelho).
4ºcopiar os dados da tabela temporária para tabela atualizada.
pois bem se eu estiver na maquina com o IBOConsole por exemplo eu faço as alterações pelo próprio até ai tudo bem o que eu não sei é:
1º criar a tabela temporária pelo delphi.
2º criar a tabela chip no banco pelo delphi.
3º apagar os campos desnecessários da tabela aparelhos e criar o campo ap_chip pelo delphi.
obrigado pessoal.
Obrigado mesmo pela resposta ja é um ponto de partida, mas minha duvida ainda persiste.
Eu pensei em fazer da seguinte maneira(desculpem se o post ficar muito grande).
1º criar uma tabela temporária com os mesmos campos da tabela a ser atualizada.
2º copiar os dados da tabela antiga para a tabela temporária.
3º atualizar a tabela antiga, (ex: antes da atualização a tabela aparelhos continha os campos Ap_numero, Ap_usuario, Ap_pin, agora a tabela numero contem apenas uma chave estrangeira com o campo ap_chip, e a nova tabela chip contem todos os campos que antes pertenciam a tabela aparelho).
4ºcopiar os dados da tabela temporária para tabela atualizada.
pois bem se eu estiver na maquina com o IBOConsole por exemplo eu faço as alterações pelo próprio até ai tudo bem o que eu não sei é:
1º criar a tabela temporária pelo delphi.
2º criar a tabela chip no banco pelo delphi.
3º apagar os campos desnecessários da tabela aparelhos e criar o campo ap_chip pelo delphi.
obrigado pessoal.
GOSTEI 0
Lehapan
03/04/2009
para executar os scripts pelo delphi é só passar o comando e executar.
assim vc pode executar qualquer SQL pelo Delphi.
qualquer dúvida pergunta...
qryAtualizacao: TSQLQuery; qryAtualizacao.SQL.Text := ´CREATE TABLE TESTE ( Codigo INTEGER NOT NULL, Campo1 INTEGER, Campo2 INTEGER, Campo3 INTEGER, CONSTRAINT PK_TESTE Primary Key (Codigo) )´ //para executar o SQL qryAtualizacao.SQL.ExecSQL;
assim vc pode executar qualquer SQL pelo Delphi.
qualquer dúvida pergunta...
GOSTEI 0
Sidimarsilva
03/04/2009
opa...
desculpa a demora mas é que eu estava me batendo desde o dia da ultima postagem pois a opção database dialect esta marcada opçao 1 mudei para 3 tudo funcionou alguem sabe por que...
ps... a duvida original foi esclarecida mais uma vez valeu galera.
obrigado.
desculpa a demora mas é que eu estava me batendo desde o dia da ultima postagem pois a opção database dialect esta marcada opçao 1 mudei para 3 tudo funcionou alguem sabe por que...
ps... a duvida original foi esclarecida mais uma vez valeu galera.
obrigado.
GOSTEI 0