GARANTIR DESCONTO

Fórum DELPHI, ADO, ACCESS, REDE #524392

30/06/2015

0

Bom dia, tenho um sistema de cadastro de pessoas
E gostaria de compartilhar o executável com 4 máquinas para que elas possam enxergar, cadastrar e alterar no banco de dados access que está no servidor
Paulo

Paulo

Responder

Posts

30/06/2015

Joel Rodrigues

Qual é sua principal dificuldade? Você tem uma estrutura de rede pronta para isso?
Responder

Gostei + 0

30/06/2015

Paulo

A dificuldade é fazer com que o executavel em outra maquina conecte no servidor, sempre está falhando a conexão
.

A estrutura é essa:

var
Dm: TDm;

BancoDeDados : String;

ArquivoINI : TIniFile;


implementation

uses UPrincipal, ULogin, URel_Impressao, URelatorio, USplash, UExcel,
UFrente2C, UUsuario, UVerso1C, UVerso2C, UTempoServico, USuporte;

{$R *.dfm}

procedure TDm.DataModuleCreate(Sender: TObject);

var i : Integer;//variavel para contagem de tabelas, para ativar todas

begin

//a proxima linha o sistema verifica se o arquivo não existe no diretório da aplicação

//caso o arquivo não exista ele o cria

if not FileExists(ExtractFilePath(Application.ExeName)+'config.ini') then

begin

//nesse linha a aplicação cria o arquivo no diretorio dela mesma

ArquivoINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'config.ini');

//na linha seguinte escreve no arquivo o caminho do banco de dados

ArquivoINI.WriteString('acesso','banco',(ExtractFilePath(Application.ExeName)+'RES.mdb'));

//na seguinte a variavel criada guarda esses dados

BancoDeDados := ArquivoINI.ReadString('acesso','banco','');

//aqui a propriedade ConnectionStrind do meu ADOConnection recebe essas informações do caminho

//do banco de dados, assim ela pega o caminho que voce apagou como explicado no inicio do artigo

ADOConnection1.ConnectionString := BancoDeDados;

//nessa linha ele coloca a ativa sua conexão com o banco

ADOConnection1.Connected := True;

//nas linhas seguintes o aplicativo verifica o tipo de componente e se o mesmo for o tipo q desejamos ele

//ele ativa o componente, em nosso caso ele ativa as tabelas

for i := 0 to ComponentCount - 1 do

begin

if Components[i] is TADOQuery then

(Components[i] as TADOQuery).Active := True;

end;

ArquivoINI.Free;

end

//nas linhas seguintes é caso o arquivo já exista, há aplicação ira simplismente conectar a base de dados e ativar

else

try

ADOConnection1.ConnectionString := BancoDeDados;

ADOConnection1.Connected := True;

for i := 0 to ComponentCount - 1 do

begin

if Components[i] is TADOQuery then

(Components[i] as TADOQuery).Active := True;

end;

Application.MessageBox('Conexão realizada com sucesso!','CONEXÃO OK');

ArquivoINI.Free;

except

Application.MessageBox('Houve Problemas ao conectar a base de dados!','CONEXÃO FALHOU');

end;



e

procedure TDm.ADOConnection1BeforeConnect(Sender: TObject);
const

FileName = 'config.ini';

var

vBanco : String;

IniFileName : TIniFile;

begin

IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName);

Try

vBanco := Trim(IniFileName.ReadString('acesso','banco',''));

Finally

IniFileName.Free;

end;

ADOConnection1.ConnectionString := vBanco;

end;
Responder

Gostei + 0

30/06/2015

Dorivan Sousa

a pasta onde ta o banco de dados esta compartilhada?
Responder

Gostei + 0

01/07/2015

Paulo

Já está compartilhada direitinho.
Responder

Gostei + 0

01/07/2015

Dorivan Sousa

olha teoricamente o problema é de infra ou do drive...
se for a rede que esta caindo vc precisa fazer testes e avaliar pra encontrar o problema, um switch ou um cabo com defeito...

se for o drive ou no caso o ADO.(eu nunca gostei do ADO por causa de um erro "falha catastrofica" e) pode ser que se vc deixa o connection ativo no projeto ele se mantem ativo em execucação... sempre antes de compilar pra distribuir o exe vc tem q verificar se o connection ta inativo e se a string de conexao ta vazia, pra preencher somente em execucao.

o erro falha catastrofica ocorria muito quando eu deixava o connection com a conexao ativa muito tempo. entao sempre tinha q conectar fazer as operacoes que precisava e desconectar. pelo menos pra mim so funcionou bem assim.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar