Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marostegan

rodar sistema em rede

Recommended Posts

pessoal, bom dia!

 

criei um sisteminha aqui pra minha agência, nele usei BD access e todas conexões estão em um DM.

 

pois bem, no servidor está rodando legalzinho, testei tudo e esta belezinha o sistema, porém tem um problema sério que eu não faço a mínima idéia de como resolver...

 

é o seguinte, fiz o instalador .exe pra ele onde instalo no servidor, nesse install tem os arquivos e mais o BD...

 

o PROBLEMA:

 

- preciso fazer rodar em rede esse sistema, onde criarei um outro install para ser instalado nos terminais. Nesses terá que ter uma tela opnde indico o caminho do BD que está servidor...

 

 

Andei pesquisando isso aqui no forum... li algumas coisas como criar um INI e/ou UDL...

 

mas não entendi nada.. oque seria esse INI (como criar e o que ele irá fazer) e essa UDL, o que é? como criar?

 

 

pessoal.. alguem tem um exemplo ou pode me dar uma ajuda passo-a-passo de como fazer esse procedimento?

 

preciso muito disso! (prometo tb que depois de aprender vou criar um tuto passo-a-passo e com img pra postar, pq acho que mtas pessoas tem duvidas quanto a isso).

 

 

desde já, obrigado!

 

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo,

 

Sobre INI e UDL eu não sei, mas você já não tentou mapear a rede, e colocar a base de dados por exemplo no X:, ai você mapea o X: em cada maquina para onde esta o sistema no server.

 

Abraço

 

Sergio

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala amigo...

 

então, eu preciso ter uma tela onde quando instala o programa no terminal você indique o servidor pra ele... queria fazer ensse esquema... ´

 

pq na verdade esse sistema que eu to fazendo terá algumas adfaptações e depois vai pra varias outras cidade então queria uma coisa fácil pra ser instalado e configurado...

 

dai li sobre essas paqradinhas ai que da pra fazer, mais não achei nada explicando como fazer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde !

Isso é mto simples. Procure no fórum sobre manipulação de arquivo ini.

Para o seu caso, basta gravar no ini o caminho do seu banco de dados, e pelo fato de ser Access, não esqueça de compartilhar a pasta que o mesmo encontrar - se, e na inicilizacao do projeto você le o arquivo ini e passa a string de conexao como parametro para o objeto de conexao.

 

Ex:

ADOConnection.ConnectrinString:= //aki vai a string de conexao que você gravou no arquivo ini

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde !

Isso é mto simples. Procure no fórum sobre manipulação de arquivo ini.

Para o seu caso, basta gravar no ini o caminho do seu banco de dados, e pelo fato de ser Access, não esqueça de compartilhar a pasta que o mesmo encontrar - se, e na inicilizacao do projeto você le o arquivo ini e passa a string de conexao como parametro para o objeto de conexao.

 

Ex:

ADOConnection.ConnectrinString:= //aki vai a string de conexao que você gravou no arquivo ini

 

poxa cara... eu não onsigo entender isso! =//

 

você tem alguum exemplo que pode me passar? :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá. Vamos lah.

 

 

você já sabe manipular (ler, escrever ...) arquivo .ini ? Caso a resposta seja negativa, pesquise aqui no fórum que deve ter bastate coisa, e isso realmente é muito simples.

 

Em seguida, abra o seu projeto.dpr que vai estar nesta estrutura:

 

 

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);

  Form1.ADOConnection.Connected:= False;

  Form1.ADOConnection.ConnectionString:= // Aki vai a funcao que você vai fazer pra ler o arquivo ini             Form1.ADOConnection.Connected:= true;    
  Application.Run;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá. Vamos lah.

 

 

você já sabe manipular (ler, escrever ...) arquivo .ini ? Caso a resposta seja negativa, pesquise aqui no fórum que deve ter bastate coisa, e isso realmente é muito simples.

 

Em seguida, abra o seu projeto.dpr que vai estar nesta estrutura:

 

 

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);

  Form1.ADOConnection.Connected:= False;

  Form1.ADOConnection.ConnectionString:= // Aki vai a funcao que você vai fazer pra ler o arquivo ini             Form1.ADOConnection.Connected:= true;    
  Application.Run;
end.

 

 

boa tarde, pesquisei aqui no fórum mas não entendi muito bem esse esquema de fazer .ini

 

no meu projeto tenho 2 BDs Access e as ligações estão tudo no data Module...

 

os nomes dos BDs --

 

BD 1 - bd_clientes

BD 2 - bd_produtos

 

como eu criaria esse .ini?

 

 

amigo obrigado pelas ajudas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte segue o procedimento que eu uso para criar os meus INIs

 

CODE
procedure SalvarConfigINI;

var

DirExe : string;

NomeIni : string;

begin

DirExe := ExtractFilePath(Application.ExeName); // Busca o Diretorio do Executável da Aplicação

NomeIni := ChangeFileExt(ExtractFileName(Application.ExeName),'.INI'); {Nome do Arquivo INI --Normalmente igual ao nome da aplicação}

 

with TIniFile.Create(DirExe + NomeIni) do

try

case TipoConexao of //No meu caso define se a conexão é via BDE ou ADO porque trabalho com Oracle e MSSQL

tcBDE: WriteString('BD', 'TIPOCONEXAO', 'BDE');

tcADO: WriteString('BD', 'TIPOCONEXAO', 'ADO');

end;

case Conexao.TipoBD of

tbOracle: WriteString('BD', 'TIPOBD', 'ORACLE');

tbMssql: WriteString('BD', 'TIPOBD', 'MSSQL');

tbMssql2005: WriteString('BD', 'TIPOBD', 'MSSQL2005');

end;

WriteString('BD', 'PROTOCOLO', Conexao.Protocolo); //AQUI são os parâmetros que eu necessito pra realizar a conexao

WriteString('BD', 'SERVIDOR', Conexao.Servidor);

WriteString('BD', 'CATALOGO', Conexao.Catalogo);

WriteString('BD', 'USUARIO', Conexao.OwnerSistema);

WriteString('BD', 'SENHA', TCriptografia.Encrypt(Conexao.SenhaSistema));

WriteString('BD', 'USUARIO_ACESSO', Conexao.OwnerAcesso);

WriteString('BD', 'USUARIO_MONITOR', Conexao.OwnerMonitor);

WriteString('BD', 'USUARIO_SGR', Conexao.OwnerSGR);

WriteString('BD', 'SENHA_SGR', TCriptografia.Encrypt(Conexao.SenhaSGR));

 

WriteString('LOG' , 'ARQUIVO', FCodArquivoLog);

WriteString('LOG' , 'NIVEL', FNivelLog);

WriteString('LOG' , 'TAMANHO_MAXIMO', FTamanhoMaximoLog);

 

WriteString('GERAL', 'ULTIMO_LOGIN', FCodUltimoUsuarioLogin);

finally

Free;

end;

end;

 

Recomendo criar uma tela de configuração do Banco de Dados no seu Sistema.

 

Acho que era isso.

 

QQ coisa posta ai

 

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte segue o procedimento que eu uso para criar os meus INIs

 

CODE
procedure SalvarConfigINI;

var

DirExe : string;

NomeIni : string;

begin

DirExe := ExtractFilePath(Application.ExeName); // Busca o Diretorio do Executável da Aplicação

NomeIni := ChangeFileExt(ExtractFileName(Application.ExeName),'.INI'); {Nome do Arquivo INI --Normalmente igual ao nome da aplicação}

 

with TIniFile.Create(DirExe + NomeIni) do

try

case TipoConexao of //No meu caso define se a conexão é via BDE ou ADO porque trabalho com Oracle e MSSQL

tcBDE: WriteString('BD', 'TIPOCONEXAO', 'BDE');

tcADO: WriteString('BD', 'TIPOCONEXAO', 'ADO');

end;

case Conexao.TipoBD of

tbOracle: WriteString('BD', 'TIPOBD', 'ORACLE');

tbMssql: WriteString('BD', 'TIPOBD', 'MSSQL');

tbMssql2005: WriteString('BD', 'TIPOBD', 'MSSQL2005');

end;

WriteString('BD', 'PROTOCOLO', Conexao.Protocolo); //AQUI são os parâmetros que eu necessito pra realizar a conexao

WriteString('BD', 'SERVIDOR', Conexao.Servidor);

WriteString('BD', 'CATALOGO', Conexao.Catalogo);

WriteString('BD', 'USUARIO', Conexao.OwnerSistema);

WriteString('BD', 'SENHA', TCriptografia.Encrypt(Conexao.SenhaSistema));

WriteString('BD', 'USUARIO_ACESSO', Conexao.OwnerAcesso);

WriteString('BD', 'USUARIO_MONITOR', Conexao.OwnerMonitor);

WriteString('BD', 'USUARIO_SGR', Conexao.OwnerSGR);

WriteString('BD', 'SENHA_SGR', TCriptografia.Encrypt(Conexao.SenhaSGR));

 

WriteString('LOG' , 'ARQUIVO', FCodArquivoLog);

WriteString('LOG' , 'NIVEL', FNivelLog);

WriteString('LOG' , 'TAMANHO_MAXIMO', FTamanhoMaximoLog);

 

WriteString('GERAL', 'ULTIMO_LOGIN', FCodUltimoUsuarioLogin);

finally

Free;

end;

end;

Recomendo criar uma tela de configuração do Banco de Dados no seu Sistema.

 

Acho que era isso.

 

QQ coisa posta ai

 

Felipe

 

amigo, o arquivinho INI eu crio no bloco de notas? como que funciona?

 

cara, essa parada ta me quebrando a cabeça, não consigo entender... =///

 

você tem um exemplo ai simples que pode passar pra mim com o arquivo INI e o arquivos em delphi?

 

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo .. o arquivo ini é criado automaticamente pelo codigo..você escolhe o nome do aquivo

pra criar um arquivo .INI de modo facil..

um exemplo num botão..

1º você tem q fazer um uses de IniFiles

no botão você poem uma variavel ..

ai ficaria assim ..

var arquivoini :TIniFile;

begin

arquivoini := TIniFile.Create('c:\teste.ini');//aqui você cria o arquivo ini

try

//aqui você coloca a sessão a identificação e o texo .. vai ficar assim [teste] texto= teste de dados do arquivo

arquivoini.WriteString('teste','texto','teste de dados do arquivo');

 

finally

arquivoini.Free;

end;

end;

 

para você ler o arquivo ini

você usa o ReadString(sessao,identificacao,''); o '' é para pegar os valores que estão dentro da sessão

 

 

se ficar mto complicado oque eu disse você fala.. fiz um exemplo aqui agora pra teste todo o codigo ..

ai eu te passo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer a configuração via arquivos ini sem problemas.

 

Para manipular arquivos ini, você precisa criar um objeto do que herde a classe TIniFile e este objeto vai fazer toda a interface para você, basta analisar os códigos postados. Agora, evite usar mapeamento de drivers e acesso direto a arquivos access, eu pessoalmente acho isto muito feio. Crie uma fonte de dados ODBC e acesse a fonte de dados pelo ADO. Crie uma chave no registro dentro desta outra chave

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI

veja como ficou a chave para um db de teste que eu criei para este tópico:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\teste_access]
"Driver"="C:\\WINDOWS\\system32\\odbcjt32.dll"
"DBQ"="C:\\Documents and Settings\\William\\Meus documentos\\RODBEL.Mdb"
"Description"="oi"
"DriverId"=dword:00000019
"FIL"="MS Access;"
"PWD"=""
"SafeTransactions"=dword:00000000
"UID"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\teste_access\Engines]

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\teste_access\Engines\Jet]
"ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"
É claro que os detalhes estão ficando mais complexos, mas, invista em qualidade de software...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer a configuração via arquivos ini sem problemas.

 

Para manipular arquivos ini, você precisa criar um objeto do que herde a classe TIniFile e este objeto vai fazer toda a interface para você, basta analisar os códigos postados. Agora, evite usar mapeamento de drivers e acesso direto a arquivos access, eu pessoalmente acho isto muito feio. Crie uma fonte de dados ODBC e acesse a fonte de dados pelo ADO. Crie uma chave no registro dentro desta outra chave

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI

veja como ficou a chave para um db de teste que eu criei para este tópico:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\teste_access]
"Driver"="C:\\WINDOWS\\system32\\odbcjt32.dll"
"DBQ"="C:\\Documents and Settings\\William\\Meus documentos\\RODBEL.Mdb"
"Description"="oi"
"DriverId"=dword:00000019
"FIL"="MS Access;"
"PWD"=""
"SafeTransactions"=dword:00000000
"UID"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\teste_access\Engines]

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\teste_access\Engines\Jet]
"ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"
É claro que os detalhes estão ficando mais complexos, mas, invista em qualidade de software...

 

olá amigo, obrigado pela ajuda (e de todos)...

 

mas eu estou com um problema sério com isso, porque preciso terminar esse projeto experimental mas só falta essa parte de rede, pode ser o jeito mais simples... o BD access vai ficar num PC (que seria o server) e em um outro pc instalo o terminal que deverá na inicialização procurar esse banco de dados na rede (server).

 

o problema que eu to tendo é que na verdade não estou entendendo como faz esse terminal, e muito menos como cirar essa verificação de caminho (para o terminal achar o BD)...

 

eu quero muito aprender isso e preciso mto aprender...

 

teria como você passar um projetinho simples com essa função pra mim poder ver os arquivos no delphi e tentar criar igual?

 

da essa forçona ai pra mim... assim que eu conseguir fazer isso vo criar aqui um passo a passo pra ajudar tambem outras pessoas que estao com a mesma duvida que eu...

 

obrigado galera pelas ajudas ate aqui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Feia mais e simples,

 

Crie um DB em paradox, txt ou XML, neste arquivo coloque os dados de apontamento do servidor. ex: //servidor/Pasta_partilada_do_BD, após crie o instalador contendo apenas o arquivo Criado (paradox, txt ou XML), que quando o programa rodar ele abre o banco interno lê o apontamento do servidor e inseri o caminho no componete de acesso se ADO:

 

ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ClientDataSetCAMINHO_SERVIDOR+';Persist Security Info=False';

 

ClientDataSetCAMINHO_SERVIDOR = e o clientdataset que le o banco interno (paradox, txt, XML), ou pode usar outro componente tbm.

 

agora tenha cuidado com o gravamento do AutoIncremento que no Access eu Acho uma bosta...

 

Crie uma auto incremeto no proprio sistema tipo: se Estação 1 o codigo pode ser 1000001, 1000002 ... estação 2 codigo 2000001,200002,

 

Ou

 

Peça para o sistema ler o ultimo codigo no banco ACCESS

 

Ajuda

 

 

Wenderson Castro

wendcastro@gmail.com

 

Agora o melhor e usar um INI mais bonitinho, e banco Firebird, interbase, MySQL...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Feia mais e simples,

 

Compartilhe a pasta do banco de dados ACCESS ai e so colocar o caminho de REDE tipo: ao inves de c:\BANCO, compartilhe a pasta banco e na hora de cria a conecxão no componente ADOConnection1 procure o caminho na rede vai ficar assim: //servidor/Banco.

 

Crie um DB em paradox, txt ou XML, neste arquivo coloque os dados de apontamento do servidor. ex: //servidor/Pasta_partilada_do_BD, após crie o instalador contendo apenas o arquivo Criado (paradox, txt ou XML), que quando o programa rodar ele abre o banco interno lê o apontamento do servidor e inseri o caminho no componete de acesso se ADO:

 

ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ClientDataSetCAMINHO_SERVIDOR+';Persist Security Info=False';

 

ClientDataSetCAMINHO_SERVIDOR = e o clientdataset que le o banco interno (paradox, txt, XML), ou pode usar outro componente tbm.

 

agora tenha cuidado com o gravamento do AutoIncremento que no Access eu Acho uma bosta...

 

Crie uma auto incremeto no proprio sistema tipo: se Estação 1 o codigo pode ser 1000001, 1000002 ... estação 2 codigo 2000001,200002,

 

Ou

 

Peça para o sistema ler o ultimo codigo no banco ACCESS

 

Ajuda

 

 

Wenderson Castro

wendcastro@gmail.com

 

Agora o melhor e usar um INI mais bonitinho, e banco Firebird, interbase, MySQL...

Compartilhar este post


Link para o post
Compartilhar em outros sites

rapa!! não sei o que tá pegando mais não consigo fazer isso!!! poxaa!!! =///

 

tpw... meu sistema é em Access por ser um experimental... mas pretendo estudar firebird e depois passar esse sistema a firebird... é complicado mudar o bd de um sistema depois dew terminado? dá muito problema?

 

 

e quanto rodar em rede, não consigo de jeito nenhum... para mneu projeto final (que tenho q entregar em novembro) precisa ter INI... não pode ser com esse último jeito que foi passado... será que alguém tem um exemplo e pode me passar?

 

obrigado galera!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal, sei que tiveram diversas explicações aqui... mas não consegui nada até agora... algúem poderia fazer um passo-a-passo completo ai pra me ajudar....???? por favor, preciso muito disso!!!

 

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kara, passa isto para FireBird de uma vez....

 

 

Sabe salvar e escrever em arquivos de texto utilizando o pascalzão? Ele também serve...

 

Se você conseguir ser mais objetivo ao dizer que não está entendendo nada ajudaria (pois sempre tem um que diz que não entendeu nada mas fala que entendeu um ponto ou outro...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kara, passa isto para FireBird de uma vez....

 

 

Sabe salvar e escrever em arquivos de texto utilizando o pascalzão? Ele também serve...

 

Se você conseguir ser mais objetivo ao dizer que não está entendendo nada ajudaria (pois sempre tem um que diz que não entendeu nada mas fala que entendeu um ponto ou outro...)

olá amigo... na verdade eu entendi o que o .INI faz... mas eu não entendi como criar a programação dentro do delphi que vai achar o caminho da rede... (Essa programação no caso ficaria no OnShow do Form principal?

 

quanto ao firebird andei lendo sobre e também, assim como você vairas pessoas nos forum me aconselharam a passar pro Fire... vou fazer isso! li sobre ele já comprei 2 livros e 1 CD pra estudar...

 

porém como preciso desse sisteminha rodando até começo de dezembro, vou terminá-lo em access mesmo...

 

só aproveitando, 2 dúvidas sobre o fire (não sei se posso perguntar isso nesse tópico uma vez que não é sobre esse assunto)... qq coisa me avisem dai eu crio um tópico...

 

2 dúvidas...

 

1- depois que meu sistema tiver rodando em access e tiver várias informações no banco, é possivel transferir esses dados do access para o fire diretamente se as tabelas estiver iguais (com os mesmos campos)? vou perder informações ou terá algum problema?

 

2- meu sistema estando finalizado, para eu mudar para o fire, depois de mudar o banco e os componentes de ligações (e as inficações dos mesmos nas programações)... o resto da programação terá que ser mudada, terei que refazer praticamente todo meu sistema ou não?

 

 

pessoal, obrigado pelas dicas e informações! esse fórum é show!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.