Atualizaçao

Delphi

03/04/2009

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.


Sidimarsilva

Sidimarsilva

Curtidas 0

Respostas

Pestana_

Pestana_

03/04/2009

como você gostaria de atualizar o sistema?

de mais detalhes para que podemos ajuda-lo!


flw.


GOSTEI 0
Sidimarsilva

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.


GOSTEI 0
Sidimarsilva

Sidimarsilva

03/04/2009

Ninguem please :(


GOSTEI 0
Lehapan

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


GOSTEI 0
Lehapan

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.


GOSTEI 0
Sidimarsilva

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.


GOSTEI 0
Lehapan

Lehapan

03/04/2009

para executar os scripts pelo delphi é só passar o comando e executar.

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

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.


GOSTEI 0
POSTAR