Fórum Conexão de Banco de dados No Rad Studio #519459
11/05/2015
0
Tou desenvolvendo um sistema de cadastro para apresentar como trabalho da universidade é só cadastro de alunos
e é o seguinte:
Estou fazendo no Rad Studio XE6 com o firebird onde criei uma tabela de Alunos a conexão é o dbExpress + data Snap é que estamos estudando conexão com o fireDac e dbExpress , fizemos o sistema e ele roda na maquina que fizemos, mais para nossa surpresa quando fomos mostra para a professora só rodou o Servidor, a parte do lado do Cliente deu o seguinte erro,
Erro Socket
Exemplo: Onde nos fizemos colocamos o caminho para o banco de dados assim: 192.168.1.2:C:\Arquivos de programas\Banco\Alunos.FDB
Trocamos o o IP do pc da Universidade mais a professora desse que assim não tínhamos que desenvolver um arquivo "INI" desenvolvemos mais continua dando o mesmo erro e quando mudamos o IP da maquina onde ele foi feito também da erro. se alguém poder nos ajudar ficamos grato.
Aislan Sousa
Curtir tópico
+ 0Posts
13/05/2015
Mateus Carvalho
Gostei + 0
13/05/2015
Aislan Sousa
não entendi
Gostei + 0
13/05/2015
Aislan Sousa
Gostei + 0
13/05/2015
Aislan Sousa
Segue toda a rotina
desculpa-me por a bagunça mais ainda estou tirando as linhas de código que não precisa
unit UServidor;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus,
Vcl.Buttons, Vcl.StdCtrls,IniFiles, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids,
Data.DB;
type
TF_Servidor = class(TForm)
Pn_Topo: TPanel;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit_Porta: TEdit;
ComboBox1: TComboBox;
Edit_Novo_Banco: TEdit;
Edit_Porta_Atual: TEdit;
Edit_Banco_Atual: TEdit;
Panel3: TPanel;
SpeedGrava_Dados: TSpeedButton;
SpeedAltentica_dados: TSpeedButton;
SpeedPara_Servidor: TSpeedButton;
SpeedAtiva_Servidor: TSpeedButton;
SpeedMinimizar: TSpeedButton;
OpenDialog1: TOpenDialog;
Meus: TPopupMenu;
BuscaPorta1: TMenuItem;
AtualizarDados1: TMenuItem;
GravarBanco1: TMenuItem;
AtualizarDados2: TMenuItem;
PararServidor1: TMenuItem;
AtivarServidor1: TMenuItem;
MinimizarServidor1: TMenuItem;
DesfazerMinimizar1: TMenuItem;
AtualizarCaminhodoBanco1: TMenuItem;
ParaTransporte1: TMenuItem;
AtivarTransporte1: TMenuItem;
Label5: TLabel;
Edit_Mensagem: TEdit;
ComboBox2: TComboBox;
Sair1: TMenuItem;
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure SpeedGrava_DadosClick(Sender: TObject);
procedure SpeedAltentica_dadosClick(Sender: TObject);
procedure SpeedPara_ServidorClick(Sender: TObject);
procedure SpeedAtiva_ServidorClick(Sender: TObject);
procedure SpeedMinimizarClick(Sender: TObject);
procedure BuscaPorta1Click(Sender: TObject);
procedure AtualizarDados1Click(Sender: TObject);
procedure GravarBanco1Click(Sender: TObject);
procedure AtualizarDados2Click(Sender: TObject);
procedure PararServidor1Click(Sender: TObject);
procedure AtivarServidor1Click(Sender: TObject);
procedure MinimizarServidor1Click(Sender: TObject);
procedure DesfazerMinimizar1Click(Sender: TObject);
procedure AtualizarCaminhodoBanco1Click(Sender: TObject);
procedure Edit_Novo_BancoChange(Sender: TObject);
procedure ParaTransporte1Click(Sender: TObject);
procedure AtivarTransporte1Click(Sender: TObject);
procedure Edit_PortaChange(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Sair1Click(Sender: TObject);
private
{ Private declarations }
public
Iniconf:TIniFile;
{ Public declarations }
end;
var
F_Servidor: TF_Servidor;
implementation
{$R *.dfm}
uses uSC, uSM;
procedure TF_Servidor.AtivarServidor1Click(Sender: TObject);
begin
SC.DSServer1.Start;
Pn_Topo.Caption := 'Servidor Rodando Na Porta' + ' '+ Iniconf.ReadString('Porta','Porta', ' ');
end;
procedure TF_Servidor.AtivarTransporte1Click(Sender: TObject);
begin
SpeedAtiva_Servidor.Enabled := True;
end;
procedure TF_Servidor.AtualizarCaminhodoBanco1Click(Sender: TObject);
begin
Edit_Novo_Banco.Enabled := True;
end;
procedure TF_Servidor.AtualizarDados1Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
Edit_Novo_Banco.Text := OpenDialog1.FileName;
Iniconf.WriteString('Banco','Path','');
end;
end;
procedure TF_Servidor.AtualizarDados2Click(Sender: TObject);
begin
//SC.Transporte.Stop;
SC.Transporte .Port := StrToInt(Iniconf.ReadString('Porta','Porta',''));
Edit_Porta_Atual .Text := Iniconf.ReadString('Porta','Porta','');
Edit_Banco_Atual .Text := Iniconf.ReadString('Banco','Banco','');
Edit_Novo_Banco.Enabled := False;
//SC.Transporte.Start;
end;
procedure TF_Servidor.BuscaPorta1Click(Sender: TObject);
begin
ComboBox1 .Visible := true;
SC.DSServer1 .AutoStart := false;
Pn_Topo .Caption := 'Servidor Parado';
end;
procedure TF_Servidor.ComboBox1Change(Sender: TObject);
begin
Edit_Porta.Text := ComboBox1.Text;
end;
procedure TF_Servidor.ComboBox1Click(Sender: TObject);
begin
ComboBox1.Visible := False;
end;
procedure TF_Servidor.ComboBox2Change(Sender: TObject);
begin
Edit_Mensagem.Text := ComboBox2.Text;
end;
procedure TF_Servidor.DesfazerMinimizar1Click(Sender: TObject);
begin
F_Servidor.WindowState:= wsNormal;
end;
procedure TF_Servidor.Edit_Novo_BancoChange(Sender: TObject);
begin
SpeedGrava_Dados.Enabled := True;
end;
procedure TF_Servidor.Edit_PortaChange(Sender: TObject);
begin
if Edit_Porta.Text <> Iniconf.ReadString('Porta','Porta','') then begin
SpeedGrava_Dados.Enabled := True;
end
else begin
SpeedGrava_Dados.Enabled := False;
end;
end;
procedure TF_Servidor.FormActivate(Sender: TObject);
begin
Edit_Porta .Text := Iniconf.ReadString('Porta','Porta','');
Edit_Novo_Banco .Text := Iniconf.ReadString('Banco','Banco','');
Edit_Porta_Atual .Text := Iniconf.ReadString('Porta','Porta','');
Edit_Banco_Atual .Text := Iniconf.ReadString('Banco','Banco','');
SpeedGrava_Dados .Enabled := False;
SpeedAltentica_dados .Enabled := False;
SpeedPara_Servidor .Enabled := False;
SpeedAtiva_Servidor .Enabled := False;
Pn_Topo .Caption := 'Servidor Parado';
end;
procedure TF_Servidor.FormCreate(Sender: TObject);
begin
Iniconf:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Sinconf.ini');
end;
procedure TF_Servidor.GravarBanco1Click(Sender: TObject);
begin
SC.Transporte.Stop;
Iniconf.WriteString('Porta','Porta',Edit_Porta.Text);
Iniconf.WriteString('Banco','Banco',Edit_Novo_Banco.Text);
SC.Transporte.Port := StrToInt(Iniconf.ReadString('Porta','Porta',''));
Pn_Topo.Caption := 'Servidor Rodando Na Porta' + ' '+ Iniconf.ReadString('Porta','Porta', ' ');
SC.Transporte.Start;
end;
procedure TF_Servidor.MinimizarServidor1Click(Sender: TObject);
begin
F_Servidor.WindowState:= wsMinimized;
end;
procedure TF_Servidor.PararServidor1Click(Sender: TObject);
begin
Pn_Topo.Caption := 'Servidor Parado';
SC.DSServer1.Stop;
end;
procedure TF_Servidor.ParaTransporte1Click(Sender: TObject);
begin
SpeedPara_Servidor.Enabled := True;
end;
procedure TF_Servidor.Sair1Click(Sender: TObject);
begin
Close;
end;
procedure TF_Servidor.SpeedAltentica_dadosClick(Sender: TObject);
begin
if Edit_Novo_Banco.Text = '' then begin
ShowMessage('Coloque Caminho do Banco Primeiro');
Edit_Porta.Clear;
Exit;
end
else
//SC.Transporte.Stop;
SC.Transporte .Port := StrToInt(Iniconf.ReadString('Porta','Porta',''));
Edit_Porta_Atual .Text := Iniconf.ReadString('Porta','Porta','');
Edit_Banco_Atual .Text := Iniconf.ReadString('Banco','Banco','');
Edit_Novo_Banco.Enabled := False;
SpeedAtiva_Servidor.Enabled := true;
SpeedAltentica_dados.Enabled := false;
//SC.Transporte.Start;
end;
procedure TF_Servidor.SpeedAtiva_ServidorClick(Sender: TObject);
begin
SC.DSServer1.Start;
SpeedAtiva_Servidor.Enabled := false;
Pn_Topo.Caption := 'Servidor Rodando Na Porta' + ' '+
Iniconf.ReadString('Porta','Porta', ' ');
end;
procedure TF_Servidor.SpeedGrava_DadosClick(Sender: TObject);
begin
ComboBox1.Visible := False;
SpeedGrava_Dados.Enabled := false;
SpeedAltentica_dados.Enabled := True;
if Edit_Porta.Text = '' then begin
ShowMessage('Coloque a porta e o Caminho do Banco Primeiro');
Exit;
end
else
//SC.Transporte.Stop;
Iniconf.WriteString('Porta','Porta',Edit_Porta.Text);
Iniconf.WriteString('Banco','Banco',Edit_Novo_Banco.Text);
SC.Transporte.Port := StrToInt(Iniconf.ReadString('Porta','Porta',''));
//Pn_Topo.Caption := 'Servidor Rodando na Porta' + ' '+ Iniconf.ReadString('Porta','Porta', ' ');
//SC.Transporte.Start;
end;
procedure TF_Servidor.SpeedMinimizarClick(Sender: TObject);
begin
F_Servidor.WindowState:= wsMinimized;
end;
procedure TF_Servidor.SpeedPara_ServidorClick(Sender: TObject);
begin
SC.DSServer1.Stop;
SpeedAtiva_Servidor.Enabled := true;
SpeedPara_Servidor.Enabled := False;
Pn_Topo.Caption := 'Servidor Parado';
end;
end.
Gostei + 0
13/05/2015
Aislan Sousa
Essa base de Código e na parte Servidora onde eu coloquei edits para Controlar Porta, IP, e Caminho do banco também coloque speedButtons para controlar os componentes que faz ligação com o banco e Cliente.
segui o código
unit UServidor;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, System.Actions, Vcl.ActnList,
Vcl.Menus, Data.DBXFirebird, Data.DB, Data.SqlExpr,IniFiles; => Declaração da IniFiles na uSes do forme
type
TF_Servidor = class(TForm)
PN_Topo: TPanel;
Panel2: TPanel;
Panel3: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
Edit_Porta_Atual: TEdit;
Edit_Nova_Porta: TEdit;
Edit_IP_Atual: TEdit;
Edit_Novo_IP: TEdit;
Edit_Caminho_Atual: TEdit;
Edit_Novo_Caminho: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ActionList1: TActionList;
NovaPorta: TAction;
NovoIP: TAction;
NovoCaminho: TAction;
Action4: TAction;
Action5: TAction;
Action6: TAction;
Action7: TAction;
Action8: TAction;
Action9: TAction;
CB_Porta: TComboBox;
Menus: TPopupMenu;
NovaPorta1: TMenuItem;
NovoCaminho1: TMenuItem;
NovoCaminho2: TMenuItem;
Conexao: TSQLConnection;
SpeedButton6: TSpeedButton;
OpenDialog1: TOpenDialog;
Label7: TLabel;
Edit_Mensagem: TEdit;
CB_Mensagem: TComboBox;
procedure FormActivate(Sender: TObject);
procedure CB_PortaChange(Sender: TObject);
procedure CB_PortaClick(Sender: TObject);
procedure NovaPortaExecute(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NovoIPExecute(Sender: TObject);
procedure NovoCaminhoExecute(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure CB_MensagemChange(Sender: TObject);
private
{ Private declarations }
public
ArqINI:TIniFile; => Declaração da variável ArqINI em Public
{ Public declarations }
end;
var
F_Servidor: TF_Servidor;
implementation
{$R *.dfm}
uses uSC, uSM;
procedure TF_Servidor.CB_PortaChange(Sender: TObject);
begin
Edit_Nova_Porta.Text := CB_Porta.Text; => Um TCombobx para inserir a Porta
end;
procedure TF_Servidor.CB_PortaClick(Sender: TObject);
begin
CB_Porta.Visible := False;
end;
procedure TF_Servidor.CB_MensagemChange(Sender: TObject);
begin
Edit_Mensagem.Text := CB_Mensagem.Text; => Um Edit _Mensagem e vai receber o que estiver em TCombobx para mandar mensagem para o Cliente mais vc pode mandar direto do TCombobx ou do Tedit.
end;
procedure TF_Servidor.FormActivate(Sender: TObject);
begin
if not(FileExists('C:\SysComer\Servidor\EXE\SysComer.ini'))then => aqui eu tou fazendo uma verificação de o arquivo ini Existe no caminho da aplicação se não existi ele recebe isso
begin
Edit_Caminho_Atual.Text := Conexao.Params.Values['Database'];
Edit_Porta_Atual.Text := IntToStr(SC.Transportador.Port);
Exit;
end
else
Se ele Existe então no SC.Transportador dou um Stop
SC.Transportador.Stop;
Edit_Caminho_Atual.Text := ArqINI.ReadString('SysComer','Database','');
Edit_Porta_Atual.Text := ArqINI.ReadString('SysComer','Porta','');
Conexao.Params.Values['Database'] := ArqINI.ReadString('SysComer','Database','');
SC.Transportador.Port := StrToInt(ArqINI.ReadString('SysComer','Porta',''));
Edit_Caminho_Atual.Text := ArqINI.ReadString('SysComer','Database','');
Edit_IP_Atual.Text := ArqINI.ReadString('SysComer','IP','');
SC.Transportador.Server;
SC.Transportador.Start;
PN_Topo.Caption := 'Servidor Parado em Porta 00';
// Busca a Porta Atual
Edit_Porta_Atual.Text := IntToStr(SC.Transportador.Port);
// Busca Caminho Atual
Edit_Caminho_Atual.Text := Conexao.Params.Values['Database'];
end;
procedure TF_Servidor.FormCreate(Sender: TObject);
begin
ArqINI:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'SysComer.ini');
Edit_Nova_Porta . Enabled := False;
Edit_Novo_IP . Enabled := False;
Edit_Novo_Caminho . Enabled := False;
CB_Porta . Visible := False;
Edit_Porta_Atual . Enabled := False;
Edit_IP_Atual . Enabled := False;
Edit_Caminho_Atual . Enabled := False;
end;
procedure TF_Servidor.NovaPortaExecute(Sender: TObject);
begin
CB_Porta.Visible := True;
CB_Porta.SetFocus;
end;
procedure TF_Servidor.NovoCaminhoExecute(Sender: TObject);
begin
Edit_Novo_Caminho.Enabled:= true;
Edit_Novo_Caminho.SetFocus;
end;
procedure TF_Servidor.NovoIPExecute(Sender: TObject);
begin
Edit_Novo_IP.Enabled := true;
Edit_Novo_IP.SetFocus;
end;
procedure TF_Servidor.SpeedButton1Click(Sender: TObject);
begin
// porta Atual IP Atual e Caminho Atual vão receber os Novos valores
SC.Transportador.Stop;
SC.Transportador.Port := StrToInt(Edit_Nova_Porta.Text);
Conexao.Params.Values['Database'] := Edit_Novo_IP.Text+':'+Edit_Novo_Caminho.Text;
SC.Transportador.Start;
Edit_Porta_Atual . Text := Edit_Nova_Porta . Text;
Edit_IP_Atual . Text := Edit_Novo_IP . Text;
Edit_Caminho_Atual . Text := Edit_Novo_Caminho . Text;
//SC.Transportador.Start;
end;
procedure TF_Servidor.SpeedButton2Click(Sender: TObject);
begin
// Gerando Arquivo INI
ArqINI.WriteString('SysComer','Porta',Edit_Nova_Porta.Text);
ArqINI.WriteString('SysComer','IP',Edit_Novo_IP.Text);
ArqINI.WriteString('SysComer','Database',Edit_Novo_IP.Text+':'+Edit_Novo_Caminho.Text);
end;
procedure TF_Servidor.SpeedButton3Click(Sender: TObject);
begin
SC.DSServer1.Stop;
PN_Topo.Caption := 'Servidor Parado Na Porta'+' - '+ArqINI.ReadString('SysComer','Porta','');
end;
procedure TF_Servidor.SpeedButton4Click(Sender: TObject);
begin
SC.DSServer1.Start;
PN_Topo.Caption := 'Servidor Rodado Na Porta'+' - '+ArqINI.ReadString('SysComer','Porta','');
end;
procedure TF_Servidor.SpeedButton5Click(Sender: TObject);
begin
F_Servidor.WindowState:= wsMinimized;
end;
procedure TF_Servidor.SpeedButton6Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
Edit_Novo_Caminho.Text :=OpenDialog1.FileName;
//Iniconf.WriteString('Banco','Path','');
end;
end;
end.
Gostei + 0
14/05/2015
Thiago Santana
[url:descricao=Delphi - Configuração Banco de dados usando arquivo INI]https://www.devmedia.com.br/conexao-com-o-banco-atraves-de-um-arquivo-ini/16210[/url]
Gostei + 0
18/05/2015
Mateus Carvalho
Gostei + 0
18/05/2015
Aislan Sousa
Sim eles estão ouvido a porta normalmente funciona em rede mais só preciso trocar o IP da maquina já dar erro
eu estou usando o IP ainda local 192.168.1.2 mais estou usando também ainda só duas maquinas em rede
Meu PC e outro PC que fica em outra sala o servidor Com o IP 192.168.1.2 os dois sistema servidor e cliente funciona mais só preciso trocar o IP para 192.168.1.3 que ele já não funciona mais
Gostei + 0
19/05/2015
Mateus Carvalho
Gostei + 0
20/05/2015
Aislan Sousa
Gostei + 0
20/05/2015
Aislan Sousa
será que alguém pode me ajudar
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)