ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Firebird via Delphi Administração Banco de Dados
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Seg Jun 24, 2013 5:34 pm    Assunto: Firebird via Delphi Administração Banco de Dados Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Seg Jun 24, 2013 5:52 pm    Assunto: Responder com Citação

Quer saber o que amigo ???
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Seg Jun 24, 2013 6:31 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adami
Profissional
Profissional


Registrado: Sexta-Feira, 12 de Novembro de 2010
Mensagens: 501

MensagemEnviada: Ter Jun 25, 2013 8:03 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Ter Jun 25, 2013 10:42 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Ter Jun 25, 2013 11:13 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Qui Jun 27, 2013 9:03 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Qui Jun 27, 2013 9:11 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Qui Jun 27, 2013 10:20 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
marcocunhasilva
Profissional
Profissional


Registrado: Segunda-Feira, 21 de Agosto de 2006
Mensagens: 740
Localização: Porto Alegre

MensagemEnviada: Qui Jun 27, 2013 10:53 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Sex Jun 28, 2013 12:38 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Seg Jul 01, 2013 1:25 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Seg Jul 01, 2013 1:33 pm    Assunto: Responder com Citação

Olá, amigo, mas você tem conhecimento da linguagem SQL?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Seg Jul 01, 2013 1:54 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Seg Jul 01, 2013 2:39 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB