Fórum DELPHI, ADO, ACCESS, REDE #524392
30/06/2015
0
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
Curtir tópico
+ 0Posts
30/06/2015
Joel Rodrigues
Gostei + 0
30/06/2015
Paulo
.
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;
Gostei + 0
30/06/2015
Dorivan Sousa
Gostei + 0
01/07/2015
Paulo
Gostei + 0
01/07/2015
Dorivan Sousa
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)