| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
repleis Profissional

Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Seg Jun 24, 2013 5:34 pm Assunto: Firebird via Delphi Administração Banco de Dados |
|
|
Olá pessoal, estou na fase final do meu projeto e como esse meu projeto sempre vai ta atualizando quero uma maneira de administrar meu banco via delphi.
Ex: em uma nova atualização preciso criar uma tabela e acrescentar alguns campos no firebird ai sempre que eu for atualizar preciso criar esses campos no banco de dados
Queria assim:
Sempre que iniciar o programa ele verificar algo assim
if Table CadCliente = Nil
begin
// ele cria a tabela
depois ele verifica os campos dessa tabela e se não tiver os que informa na procedure ele criar esse campo
aguardo desde já obrigado. |
|
| Voltar ao Topo |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Seg Jun 24, 2013 5:52 pm Assunto: |
|
|
| Quer saber o que amigo ??? |
|
| Voltar ao Topo |
|
 |
repleis Profissional

Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Seg Jun 24, 2013 6:31 pm Assunto: |
|
|
| Ghost_Rider escreveu: | | Quer saber o que amigo ??? |
Hum, talvez eu não tenha sido claro, mais vamos lá tentar explicar
eu tenho um sistema ai instalo para o usuário ai daqui a alguns meses eu ja atualizei o programa só que nessa de atualizar eu tiver que criar novos campos novas tabelas, então se eu apenas mandar o exe ele vai da erro por que vai ta faltando esse campos recém criados então queria que antes de iniciar aplicação ele verifica se tem esse campos se não ele cria
deu pra entender agora amigo? |
|
| Voltar ao Topo |
|
 |
adami Profissional


Registrado: Sexta-Feira, 12 de Novembro de 2010 Mensagens: 501
|
Enviada: Ter Jun 25, 2013 8:03 am Assunto: |
|
|
| Ghost_Rider, pelo que eu entendi ele quer criar um atualizador de estrutura do banco de dados, para inserir novas tabelas, campos.... |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Ter Jun 25, 2013 10:42 am Assunto: |
|
|
Uma vez fiz um atualizador bem básico.
Coloque um Memo no formulário pra carregar o script SQL (dinamicamente), e então coloquei uma Query pra executar cada linha do Memo, lógico, com todo tratamento necessário em caso de erros.
Apesar de simples, me serviu por um bom tempo. |
|
| Voltar ao Topo |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Ter Jun 25, 2013 11:13 am Assunto: |
|
|
Há dois modos "interessante" de se fazer isso..
- no proprio exe, você coloca o código para que seja verificado se os campos e tabelas existem (não gosto muito) mas é bem eficiente e não depende de outros arquivos.
- banco de dados de atualziação : utilizando um banco paralelo, que contenha apenas as atualizações, você mandaria o exe e o banco..a vantagem é que, caso você queira atualizar apenas alguns clientes ou alguns módulos, você consegue isso de modo mais simples....
Abraço... |
|
| Voltar ao Topo |
|
 |
repleis Profissional

Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Qui Jun 27, 2013 9:03 pm Assunto: |
|
|
| Ghost_Rider escreveu: | Há dois modos "interessante" de se fazer isso..
- no proprio exe, você coloca o código para que seja verificado se os campos e tabelas existem (não gosto muito) mas é bem eficiente e não depende de outros arquivos.
- banco de dados de atualziação : utilizando um banco paralelo, que contenha apenas as atualizações, você mandaria o exe e o banco..a vantagem é que, caso você queira atualizar apenas alguns clientes ou alguns módulos, você consegue isso de modo mais simples....
Abraço... |
Oi Amigo já havia pensando de fazer isso no proprio exe masi também gostei da idéia de um banco paralelo, daria para me passar os dois exemplos desde já obrigado to precisando muito disso. |
|
| Voltar ao Topo |
|
 |
repleis Profissional

Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Qui Jun 27, 2013 9:11 pm Assunto: |
|
|
| Batera escreveu: | Uma vez fiz um atualizador bem básico.
Coloque um Memo no formulário pra carregar o script SQL (dinamicamente), e então coloquei uma Query pra executar cada linha do Memo, lógico, com todo tratamento necessário em caso de erros.
Apesar de simples, me serviu por um bom tempo. |
Tem como me passar o exemplo que voce usou meu amigo? |
|
| Voltar ao Topo |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Qui Jun 27, 2013 10:20 pm Assunto: |
|
|
Cara, tipo...exemplo ????
Cria um banco de dados, cria uma tabela lá com ID da atualização e conteudo...o conteudo nada mais é do que você quer fazer no banco, atualizar uma tabela, um campo, um valor....
Se for no exe, mesma coisa, dai tem que verificar o que tem e o que não tem no banco.. |
|
| Voltar ao Topo |
|
 |
marcocunhasilva Profissional

Registrado: Segunda-Feira, 21 de Agosto de 2006 Mensagens: 740 Localização: Porto Alegre
|
Enviada: Qui Jun 27, 2013 10:53 pm Assunto: |
|
|
Olá, batera, tudo bem?
Achei interessante o que você postou sobre essa atualização de banco de dados. Tenho um cliente em que, minha parceira, que mora no interior do Rio Grande do Sul, tem que entrar lá no banco do cliente, pelo IBExpert, e fazer as atualizações necessárias. Desse modo que você está expondo, ficaria mais prático e transaprente para o cliente a atualização do banco. Poderia mandar algum exemplo, mesmo que básico, para dar uma estudada?
Desde já agradeço, e fico no aguardo.
T++ |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sex Jun 28, 2013 12:38 am Assunto: |
|
|
Fala, Marco. Tudo jóia?
Então, na verdade não é uma implementação muito complexa.
Você pode usar um TMemo ou TListBox para carregar o arquivo de script SQL dinamicamente:
| Código: | | Memo1.Lines.LoadFromFile('C:\Atualizacao\Script.sql'); |
Ou até mesmo utilizar um TOpenDialog:
| Código: | | Memo1.Lines.LoadFromFile(OpenDialog1.FileName); |
Em seguida, você poderia utilizar o código abaixo para executar cada instrução no banco de dados:
| Código: | var
i: integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
begin
Query1.SQL.Clear;
Query1.SQL.Add(Memo1.Lines[i]);
try
Query1.ExecSQL;
except
On E: Exception do
ShowMessage('Erro ao executar a instrução: ' + Memo1.Lines[i] + sLineBreak +
'Erro: ' + E.Message);
end;
end;
end; |
Pra incrementar ainda mais, você pode:
- Parametrizar o banco a ser atualizado (via arquivo INI, por exemplo)
- Fazer um tratamento de exceções mais robusto
- Fazer um tratamento pra verificar se a atualização já foi realizada
- Mostrar uma barra de progresso ou andamento da atualização
Dá pra fazer um atualizador bem bacana. |
|
| Voltar ao Topo |
|
 |
repleis Profissional

Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Seg Jul 01, 2013 1:25 pm Assunto: |
|
|
| Batera escreveu: | Fala, Marco. Tudo jóia?
Então, na verdade não é uma implementação muito complexa.
Você pode usar um TMemo ou TListBox para carregar o arquivo de script SQL dinamicamente:
| Código: | | Memo1.Lines.LoadFromFile('C:\Atualizacao\Script.sql'); |
Ou até mesmo utilizar um TOpenDialog:
| Código: | | Memo1.Lines.LoadFromFile(OpenDialog1.FileName); |
Em seguida, você poderia utilizar o código abaixo para executar cada instrução no banco de dados:
| Código: | var
i: integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
begin
Query1.SQL.Clear;
Query1.SQL.Add(Memo1.Lines[i]);
try
Query1.ExecSQL;
except
On E: Exception do
ShowMessage('Erro ao executar a instrução: ' + Memo1.Lines[i] + sLineBreak +
'Erro: ' + E.Message);
end;
end;
end; |
Pra incrementar ainda mais, você pode:
- Parametrizar o banco a ser atualizado (via arquivo INI, por exemplo)
- Fazer um tratamento de exceções mais robusto
- Fazer um tratamento pra verificar se a atualização já foi realizada
- Mostrar uma barra de progresso ou andamento da atualização
Dá pra fazer um atualizador bem bacana. |
Amigo nunca trabalhei com script sql nem nunca precisei fazer qualquer tipo de atualização de banco de dados. Daria para mim passar um pequeno exemplo de como se faz isso desde já obrigado... |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Seg Jul 01, 2013 1:33 pm Assunto: |
|
|
| Olá, amigo, mas você tem conhecimento da linguagem SQL? |
|
| Voltar ao Topo |
|
 |
repleis Profissional

Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Seg Jul 01, 2013 1:54 pm Assunto: |
|
|
| Batera escreveu: | | Olá, amigo, mas você tem conhecimento da linguagem SQL? |
tenho sim amigo mais não especilamente nessa area de atualização de banco de dados, olha talvez vc esteja entendo mal eu não quer atualização de valores de banco de dados mais sim a estrutura de banco de dados e nunca fiz isso via sql, tipo assim fiz a versão 1.0 do meu programa e tinha 30 tabelas e 300 campos na versão 1.1 tem 40 tabelas e 500 campos ai quer criar esse campos para manter os dados anteriores, desde já obrigado. |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Seg Jul 01, 2013 2:39 pm Assunto: |
|
|
Entendi, amigo.
Nesse caso você terá que utilizar comandos SQL estruturais, como ALTER TABLE, ADD, DROP, etc...
Por exemplo, eu tenho a seguinte tabela:
| Código: | -- Clientes
Codigo
Nome |
E agora preciso adicionar o campo "Cidade" sem comprometer os dados que já existem no banco de dados do cliente. Esse seria o comando:
| Código: | | Alter table CLIENTES add Cidade varchar(40); |
São esses tipos de comandos que deverá compor o arquivo de script. |
|
| Voltar ao Topo |
|
 |
|