Arquivo Ini para caminho do banco

Delphi

26/02/2013

Olá Pessoal estou com uma pequena Dúvida tem como criar um arquivo Ini para que meu sistema ele abra em mais de uma maquina na mesma rede ?



estou usando SqlConection, Banco de dados Firebird 2.1.


desde já obg!
Francielio Medeiros

Francielio Medeiros

Curtidas 0

Respostas

Luiz Menin

Luiz Menin

26/02/2013

Claro que pode!
Você pode utilizar este código no evento BeforeConnect do SQLConnection.

  if not (FileExists(ExtractFilePath(ParamStr(0)) + 'IniConf.INI')) then
  begin
    IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
  	IniConf.WriteString('BANCO_DADOS', 'HostName', 'LocalHost');
    IniConf.WriteString('BANCO_DADOS', 'Port', '266');
  end
  else
  begin
    IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
    SQLConnection1.Params.Values['HostName'] := IniConf.ReadString('BANCO_DADOS', 'HostName', '');
    SQLConnection1.Params.Values['Port'] := IniConf.ReadString('BANCO_DADOS', 'Port', '');
  end;
GOSTEI 0
Luiz Menin

Luiz Menin

26/02/2013

Ah, não esqueça de inserir no Uses a unit 'IniFiles' e declarar a variável:

var
IniConf : TIniFile;
GOSTEI 0
Francielio Medeiros

Francielio Medeiros

26/02/2013

Amigo meu codigo ficou assim


unit U_DataModulo;

interface

uses
SysUtils, Classes, WideStrings, DB, SqlExpr, DBXFirebird, FMTBcd, DBClient,
Provider, IniFiles;

type
TDM = class(TDataModule)
SQLConnection1: TSQLConnection;
Q_Cheques: TSQLQuery;
Q_ChequesCODIGO: TIntegerField;
Q_ChequesDATA_EMISSAO: TDateField;
Q_ChequesDATA_VENCIMENTO: TDateField;
Q_ChequesNUMCHEQUE: TStringField;
Q_ChequesTITULAR: TStringField;
Q_ChequesAPELIDO_TITULAR: TStringField;
Q_ChequesTEL_TITULAR: TStringField;
Q_ChequesBANCO: TStringField;
Q_ChequesAGENCIA: TStringField;
Q_ChequesCONTA: TStringField;
Q_ChequesSITUACAO_CHQ: TStringField;
Q_ChequesSACADOR: TStringField;
Q_ChequesTEL_SACADOR: TStringField;
Q_ChequesOBS: TStringField;
DSP_Cheques: TDataSetProvider;
CDS_Cheques: TClientDataSet;
CDS_ChequesCODIGO: TIntegerField;
CDS_ChequesDATA_EMISSAO: TDateField;
CDS_ChequesDATA_VENCIMENTO: TDateField;
CDS_ChequesNUMCHEQUE: TStringField;
CDS_ChequesTITULAR: TStringField;
CDS_ChequesAPELIDO_TITULAR: TStringField;
CDS_ChequesTEL_TITULAR: TStringField;
CDS_ChequesBANCO: TStringField;
CDS_ChequesAGENCIA: TStringField;
CDS_ChequesCONTA: TStringField;
CDS_ChequesSITUACAO_CHQ: TStringField;
CDS_ChequesSACADOR: TStringField;
CDS_ChequesTEL_SACADOR: TStringField;
CDS_ChequesOBS: TStringField;
Q_ChequesVALOR: TFMTBCDField;
CDS_ChequesVALOR: TFMTBCDField;
SQLDataSet1: TSQLDataSet;
DataSetProvider1: TDataSetProvider;
SQLDataSet1CODIGO: TIntegerField;
SQLDataSet1DATA_EMISSAO: TDateField;
SQLDataSet1DATA_VENCIMENTO: TDateField;
SQLDataSet1NUMCHEQUE: TStringField;
SQLDataSet1TITULAR: TStringField;
SQLDataSet1APELIDO_TITULAR: TStringField;
SQLDataSet1TEL_TITULAR: TStringField;
SQLDataSet1BANCO: TStringField;
SQLDataSet1AGENCIA: TStringField;
SQLDataSet1CONTA: TStringField;
SQLDataSet1VALOR: TFMTBCDField;
SQLDataSet1SITUACAO_CHQ: TStringField;
SQLDataSet1SACADOR: TStringField;
SQLDataSet1TEL_SACADOR: TStringField;
SQLDataSet1OBS: TStringField;
ClientDataSet1: TClientDataSet;
ClientDataSet1CODIGO: TIntegerField;
ClientDataSet1DATA_EMISSAO: TDateField;
ClientDataSet1DATA_VENCIMENTO: TDateField;
ClientDataSet1NUMCHEQUE: TStringField;
ClientDataSet1TITULAR: TStringField;
ClientDataSet1APELIDO_TITULAR: TStringField;
ClientDataSet1TEL_TITULAR: TStringField;
ClientDataSet1BANCO: TStringField;
ClientDataSet1AGENCIA: TStringField;
ClientDataSet1CONTA: TStringField;
ClientDataSet1VALOR: TFMTBCDField;
ClientDataSet1SITUACAO_CHQ: TStringField;
ClientDataSet1SACADOR: TStringField;
ClientDataSet1TEL_SACADOR: TStringField;
ClientDataSet1OBS: TStringField;
Q_PesqChq: TSQLQuery;
DSP_PesqChq: TDataSetProvider;
CDS_PesqChq: TClientDataSet;
Q_PesqChqCODIGO: TIntegerField;
Q_PesqChqDATA_EMISSAO: TDateField;
Q_PesqChqDATA_VENCIMENTO: TDateField;
Q_PesqChqNUMCHEQUE: TStringField;
Q_PesqChqTITULAR: TStringField;
Q_PesqChqAPELIDO_TITULAR: TStringField;
Q_PesqChqTEL_TITULAR: TStringField;
Q_PesqChqBANCO: TStringField;
Q_PesqChqAGENCIA: TStringField;
Q_PesqChqCONTA: TStringField;
Q_PesqChqVALOR: TFMTBCDField;
Q_PesqChqSITUACAO_CHQ: TStringField;
Q_PesqChqSACADOR: TStringField;
Q_PesqChqTEL_SACADOR: TStringField;
Q_PesqChqOBS: TStringField;
CDS_PesqChqCODIGO: TIntegerField;
CDS_PesqChqDATA_EMISSAO: TDateField;
CDS_PesqChqDATA_VENCIMENTO: TDateField;
CDS_PesqChqNUMCHEQUE: TStringField;
CDS_PesqChqTITULAR: TStringField;
CDS_PesqChqAPELIDO_TITULAR: TStringField;
CDS_PesqChqTEL_TITULAR: TStringField;
CDS_PesqChqBANCO: TStringField;
CDS_PesqChqAGENCIA: TStringField;
CDS_PesqChqCONTA: TStringField;
CDS_PesqChqVALOR: TFMTBCDField;
CDS_PesqChqSITUACAO_CHQ: TStringField;
CDS_PesqChqSACADOR: TStringField;
CDS_PesqChqTEL_SACADOR: TStringField;
CDS_PesqChqOBS: TStringField;
Q_ChequesCLIENTE: TStringField;
CDS_ChequesCLIENTE: TStringField;
procedure SQLConnection1BeforeConnect(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
DM: TDM;

implementation

uses U_CadCheques, U_Principal, U_ListChqData;

{$R *.dfm}

procedure TDM.SQLConnection1BeforeConnect(Sender: TObject);
var
IniConf : TIniFile;
begin
if not (FileExists(ExtractFilePath(ParamStr(0)) + 'IniConf.INI')) then
end;
begin
IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
IniConf.WriteString('BANCO_DADOS', 'HostName', 'LocalHost');
IniConf.WriteString('BANCO_DADOS', 'Port', '266');
end
else
begin
IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
SQLConnection1.Params.Values['HostName'] := IniConf.ReadString('BANCO_DADOS', 'HostName', '');
SQLConnection1.Params.Values['Port'] := IniConf.ReadString('BANCO_DADOS', 'Port', '');
end;
end;

end.


precisa de mais alguma coisa ??
GOSTEI 0
Luiz Menin

Luiz Menin

26/02/2013

A principio não. Porém, você deve verificar duas coisas:
- Eu utilizo arquitetura cliente/servidor. Se você utiliza também, vai funcionar sem problemas.
- Se você não utiliza, deve alterar os parâmetros. Por exemplo, path do banco de dados.

GOSTEI 0
Francielio Medeiros

Francielio Medeiros

26/02/2013

eu criei um arquivo INI nele coloquei

Arquivo Ini contem:

[CONFIG]
DATABASE=LocalHost:C:\MSCheques\BANCO\MSDADOS.FDB


GOSTEI 0
Luiz Menin

Luiz Menin

26/02/2013


procedure TDM.SQLConnection1BeforeConnect(Sender: TObject);
var
IniConf : TIniFile;
begin
if not (FileExists(ExtractFilePath(ParamStr(0)) + 'IniConf.INI')) then
end;
begin
IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
IniConf.WriteString('CONFIG', 'DATABASE', 'LocalHost:C:\MSCheques\BANCO\MSDADOS.FDB');
end
else
begin
IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
SQLConnection1.Params.Values['HostName'] := IniConf.ReadString('CONFIG', 'DATABASE', '');
end;
end;



Fico no aguardo do resultado...
GOSTEI 0
Luiz Menin

Luiz Menin

26/02/2013

Corrigido:

procedure TDM.SQLConnection1BeforeConnect(Sender: TObject);
var
IniConf : TIniFile;
begin
if not (FileExists(ExtractFilePath(ParamStr(0)) + 'IniConf.INI')) then
end;
begin
IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
IniConf.WriteString('CONFIG', 'DATABASE', 'LocalHost:C:\MSCheques\BANCO\MSDADOS.FDB');
end
else
begin
IniConf := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IniConf.INI');
SQLConnection1.Params.Values['DataBase'] := IniConf.ReadString('CONFIG', 'DATABASE', '');
end;
end;
GOSTEI 0
Francielio Medeiros

Francielio Medeiros

26/02/2013

Amigo o Arquivo foi criado agora e ta funcionando perfeito vou agora instalar no em rede local e volto aqui para dizer mais desde já muito obg pela ajuda!!!!!



O Mundo precisa de mais pessoas como vc que ajuda aos outros tudo de Bom!!!
GOSTEI 0
Luiz Menin

Luiz Menin

26/02/2013

Obrigado.
Estou apenas retribuindo a ajuda que me foi dada quando iniciei a programar e visitava fóruns em busca de soluções.

Fico no aguardo do resultado.
Abraço.
GOSTEI 0
José

José

26/02/2013

tópico concluído.
GOSTEI 0
POSTAR