Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Conexão com Banco de dados


João Paulo Taraciuk

Pergunta

Boa tarde a todos.

Estou trabalhando em uma aplicação, e gostaria de saber se, deixando o banco de dados instalado em um servidor, teria como, ao instalar o programa em uma máquina cliente, ao carregar a aplicação, tivesse a opção de colocar o hostname da ZConnection, ainda antes de iniciar o programa, sem que desse aquele erro, de que não encontrou banco de dados, tipo abrisse um form com o edit para colocar o ip do servidor.

Utilizo o banco Mysql 3.23, comunicação via ZConnection, Delphi 7

Se alguém puder me ajudar, eu agradeço!!!!

Editado por João Paulo Taraciuk
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Bom, eu tentei fazer como no exemplo, mas não consegui, o meu projeto está assim

program Meu Sistema;

uses

Forms,

U_Principal in 'U_Principal.pas' {Frm_Principal},

U_Splash in 'U_Splash.pas' {Splash};

{$R *.res}

begin

Application.Initialize;

Splash := TSplash.Create(Application);

Splash.Show;

Splash.Update;

Application.Title := 'Meu Sistema';

Application.CreateForm(TMeusforms, Meusforms);

Splash.Hide;

Splash.Free;

Application.Run;

end.

Eu utilizo o Mysql 3.23, o splash fica ativo enquanto carrega a aplicação, se tivesse como eu colocar o caminho do banco de dados do mysql tipo, estou no pc 10.1.1.5 e o banco está no 10.1.1.3, em um edit no splash, antes do programa buscar o banco, aí o usuário colocaria o ip e somente então o banco seria carregado, eu tentei fazer como no exemplo para o Interbase, mas não consegui, tentei também iniciar a aplicação com a ZConnection em Connected=False, para só então colocar o ip do banco, mas não deu certo, se tiver alguma dica, eu agradeço!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Se os computadores estiverem na mesma rede não é necessario usar numero de ip

program Meu Sistema;

uses
Forms,
U_Principal in 'U_Principal.pas' {Frm_Principal},
U_Splash in 'U_Splash.pas' {Splash};


{$R *.res}

begin
Application.Initialize;
Splash := TSplash.Create(Application);
Splash.Show;
Splash.Update;
Application.Title := 'Meu Sistema';
Application.CreateForm(TMeusforms, Meusforms);
Splash.Hide;
Splash.Free;

  AssignFile(Caminho, 'C:\Meu Sistema\Net.Txt');
  Reset(Caminho);
  while not EOF(Caminho) do
     begin
       ReadLn(Caminho, Line);
       FdtmTeste.DtmTeste.DbaTeste.DatabaseName := Line;  // o componente que vai receber  a patch do banco de dados 
     end;                                                                        
  CloseFile(Caminho);

Application.Run;
end.
no form principal voce ativa a conexão
procedure TFrmPrincipal.FormActivate(Sender: TObject);
var i : integer; num : real;
begin
   if DtmTeste.DbaTeste.Connected = false then
      DtmTeste.DbaTeste.Connected := true;
   if not DtmTeste.TrcTeste.Active then
     DtmTeste.TrcTeste.Active := true;
end;

No arquivo Net.Txt voce coloca o caminho do banco no servidor (exemplo neste post)

http://scriptbrasil.com.br/forum/index.php...mp;#entry448605

OBS: estou sem o MYSQL para poder exemplificar melhor para voce, mas acho que da pra voce captar a ideia

abraço

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0

esqueci duas linhas de comando:

program Meu Sistema;

uses
Forms,
U_Principal in 'U_Principal.pas' {Frm_Principal},
U_Splash in 'U_Splash.pas' {Splash};


{$R *.res}

var Caminho : TextFile;   // incluir as variaveis
    Line : string;

begin
Application.Initialize;
Splash := TSplash.Create(Application);
Splash.Show;
Splash.Update;
Application.Title := 'Meu Sistema';
Application.CreateForm(TMeusforms, Meusforms);
Splash.Hide;
Splash.Free;

  AssignFile(Caminho, 'C:\Meu Sistema\Net.Txt');
  Reset(Caminho);
  while not EOF(Caminho) do
     begin
       ReadLn(Caminho, Line);
       FdtmTeste.DtmTeste.DbaTeste.DatabaseName := Line;  // o componente que vai receber  a patch do banco de dados 
     end;                                                                        
  CloseFile(Caminho);

Application.Run;
end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Então colega, eu tinha adicionado estas variáveis, mas no ReadLn(Caminho, Line), ele não chama, em todas as outras linhas onde elas foram colocadas, se apertar CTRL + Espacebar essas variáveis aparecem.

Mas eu percebi que é por aí o caminho para resolver o meu problema, se eu conseguir fazer ele ler o arquivo txt acredito que vai funcionar, Valeu!!.

Link para o comentário
Compartilhar em outros sites

  • 0

Segue um exemplo, porém este não utiliza o acesso ao banco via path direto.

divan_cheques.zip - contém o banco de teste e deve ser decompactado na pasta data existente no diretório de instalação do MySQL (no servidor - não estou certo de que seja necessário para e reiniciar o banco para que ele o enxergue);

ConectMySQL.zip - contém o exemplo comentado.

O nome do host no arquivo ini deverá ser ajustado - ele contém o que utilizei para teste.

É interessante observar que a tela de splash mal será mostrada caso não hajam processos "demorados" antes de que o form principal possa ser mostrado. Talves seja necessário adicionar algum tipo de temporização.

Veja se o exemplo ajuda.

ConectMySQL.zip

divan_cheques.zip

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal, fiquei um bom tempo sem mexer nesta conexão com o banco de dados, mas hoje tive que realizar esta tarefa, e como não tinha muito tempo para testar, fiz um procedimento da seguinte maneira:

Criei um txt dentro da pasta do Projeto, onde coloco o IP do servidor(Ex:10.1.1.50), e no OnCreate do DataModule coloquei um código para ler o txt, vou postar o código, se de repente mais alguém tiver o mesmo problema

procedure TDM_Dados.DataModuleCreate(Sender: TObject);
var
  A: String;
  B: TextFile;
begin
  AssignFile(B,'C:\Caminho.txt');//Aqui vai o caminho do txt onde está o ip do servidor
  Reset(B);
  ReadLN(B,A);
  ZConnection.Connected:=False;
  ZConnection.HostName:=A;
  ZConnection.Connected:=True;
  CloseFile(B);
end;

E funcionou, não sei se é a maneira correta de realizar este procedimento, mas conectou o banco no Servidor. Obrigado ao Jhonas e ao Micheus, pois sem a ajuda de vocês eu não sairia do Zero.

Valeu!!!

Editado por João Paulo Taraciuk
Link para o comentário
Compartilhar em outros sites

  • 0
E funcionou, não sei se é a maneira correta de realizar este procedimento, mas conectou o banco no Servidor.

Que bom que conseguiu resolver deste modo.

Realmente funciona, mas eu sugeriria a você que, quando tivesse um tempinho, desse uma olhada na forma como exemplifiquei (e comentei) no source do projeto (conectmysql.dpr). Faz uso de arquivo .ini - é o mais usual e você ainda poderá colocar mais informações nestes arquivo, bem como, recuperá-las de forma mais simples e segura.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...