Fórum Componente AdoConnection conexão dinâmica a base de dados #262723
20/12/2004
0
Pessoal,
Tenho que fazer uma tela onde o usuário irá selecionar, a base a ser trabalhada sendo que irei colocar no RadioGroup opções de para a seleção da base sendo que internamente no componente adoconnection,
na propriedade connectionstring teria que passar os parametros de conexao e configurá-lo dinamicamente para acessar a base escolhida encontrada em diferentes diretorios, alguem tem um exemplo para eu passar esses parametros na propriedade através de código?
Obs: estou usando .mdb(access) arquivo udl.
Att.
Tenho que fazer uma tela onde o usuário irá selecionar, a base a ser trabalhada sendo que irei colocar no RadioGroup opções de para a seleção da base sendo que internamente no componente adoconnection,
na propriedade connectionstring teria que passar os parametros de conexao e configurá-lo dinamicamente para acessar a base escolhida encontrada em diferentes diretorios, alguem tem um exemplo para eu passar esses parametros na propriedade através de código?
Obs: estou usando .mdb(access) arquivo udl.
Att.
Jonasaf
Curtir tópico
+ 0
Responder
Posts
13/01/2005
Paullsoftware
caro Jonasaf,
para escrever nas propriedades do arquivo UDL fica complicado, mais vc pode tentar criar um textfile ´seuarquivo.udl´ e colocar as três linhas principais do arquivo...
espero ter ajudado! :wink:
para escrever nas propriedades do arquivo UDL fica complicado, mais vc pode tentar criar um textfile ´seuarquivo.udl´ e colocar as três linhas principais do arquivo...
var Arqui:TextFile; NomeArquivo:String; begin NomeArquivo := ChangeFileExt(ParamStr(0),´.udl´); Try AssignFile(Arqui,NomeArquivo); if Not ( FileExists(NomeArquivo) )then Rewrite(Arqui,NomeArquivo) Append(Arqui); WriteLn(Arqui,´[oledb]´); WriteLn(Arqui,´; Everything after this line is an OLE DB initstring´); WriteLn(Arqui´,´Provider=Microsoft.Jet.OLEDB.4.0;Data Source=´+Pchar(ExtractFilePah(ParamStr(0)))+´DBTIMER.mdb;Persist Security Info=False;Jet OLEDB:Database Password=senhadb´) else Rewrite(Arqui,NomeArquivo); Finally CloseFile(Arqui);
espero ter ajudado! :wink:
Responder
Gostei + 0
18/05/2015
W Paula
Olá, tudo bem?
Prezado Senhor,
No link https://www.devmedia.com.br/nao-fique-preso-a-bde-ado-dbexpress/12230, onde alguém responde sobre um problema que alguns estão enfrentando sobre o componente TADO CONNECTION eu também estou passando por ele.
No meu caso é o seguinte:
Eu coloco no meu aplicativo um tipo de verificação anti-pirataria, e, escondo esse arquivo .MDB (arquivo do Access) com outra extensão (no caso mascaro com .INI) dentro da pasta de instalação do windows (SYSTEM32).
No momento do desenvolvimento do programa (no Delphi ainda) eu coloco na propriedade CONNECTIONSTRING aquele tantão de comandos separados por ponto e vírgula (;) e no meu caso são as seguintes:
Bom, se o o windows estiver instalado nesta pasta está tudo correto. Mas, nem sempre é assim, ele pode estar instalado em D:\WINDOWS ou C:\WINDOWS.1 e dentre outras alternativas.
Então, em tempo de execução eu preciso de um meio de mudar o local do DATASOURCE da propriedade CONNECTIONSTRINIG.
Aí é que caí no seu "post". E, para isso eu tento o seguinte comando, que as tarefas são fáceis, mas, no CONNECTIONSTRNG dá erro:
- Local das regras aplicadas: no evento ONCREATE do formulário principal:
==================
==================
Bom, o código acima funciona perfeitamente até o fim do IF/THEN/END.
Inclusive fiz os testes colocando e tirando o arquivo SECURITY.INI de dentro da pasta \SYSTEM32 e ele executa ou não o ShowMessage('Cópia violada.'); Então está tudo correto.
Mas, então após aplicada a linha:
Ele apresenta a mensagem de erro:
Essa mensagem de erro aparece no momento da compilação.
Bom, o que V.Sa. me sugere para correção do problema, pois já tentei colocar todo o conteúdo que é:
aí é que aparecem erros: aproximadamente 8 erros.
Então, o que realmente posso fazer para em tempo de execução o delphi procure pelo caminho/path correto?
Grato,
Walcledson de Paula/MICROVOLUTION.
Prezado Senhor,
No link https://www.devmedia.com.br/nao-fique-preso-a-bde-ado-dbexpress/12230, onde alguém responde sobre um problema que alguns estão enfrentando sobre o componente TADO CONNECTION eu também estou passando por ele.
No meu caso é o seguinte:
Eu coloco no meu aplicativo um tipo de verificação anti-pirataria, e, escondo esse arquivo .MDB (arquivo do Access) com outra extensão (no caso mascaro com .INI) dentro da pasta de instalação do windows (SYSTEM32).
No momento do desenvolvimento do programa (no Delphi ainda) eu coloco na propriedade CONNECTIONSTRING aquele tantão de comandos separados por ponto e vírgula (;) e no meu caso são as seguintes:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\WINDOWS\system32\security.ini;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
Bom, se o o windows estiver instalado nesta pasta está tudo correto. Mas, nem sempre é assim, ele pode estar instalado em D:\WINDOWS ou C:\WINDOWS.1 e dentre outras alternativas.
Então, em tempo de execução eu preciso de um meio de mudar o local do DATASOURCE da propriedade CONNECTIONSTRINIG.
Aí é que caí no seu "post". E, para isso eu tento o seguinte comando, que as tarefas são fáceis, mas, no CONNECTIONSTRNG dá erro:
- Local das regras aplicadas: no evento ONCREATE do formulário principal:
==================
procedure TForm1.FormCreate(Sender: TObject);
Var
Dir, Path : string; // acrescentada em 31/8/13w
p : PChar; // acrescentada em 31/8/13w
begin
GetMem(p,255);
GetWindowsDirectory(p,255);
Dir:=p;
FreeMem(p);
//Dir := Dir +'\system32';
Path := Dir+'\system32';
if not FileExists(Path+'\SECURITY.INI') then
begin
ShowMessage('Cópia violada.');
Application.Terminate;
end;
DM.Conexao.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Path+'\SECURITY.INI'+';Persist Security Info=False';==================
Bom, o código acima funciona perfeitamente até o fim do IF/THEN/END.
Inclusive fiz os testes colocando e tirando o arquivo SECURITY.INI de dentro da pasta \SYSTEM32 e ele executa ou não o ShowMessage('Cópia violada.'); Então está tudo correto.
Mas, então após aplicada a linha:
DM.Conexao.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Path+'\SECURITY.INI'+';Persist Security Info=False';
Ele apresenta a mensagem de erro:
First chance exception at $7C812AEB. Exception class EAccessViolation with message 'Access violation at address 00698123 in module 'ATTIVA.exe'. Read of address 00000060'. Process ATTIVA.exe (4636)
Essa mensagem de erro aparece no momento da compilação.
Bom, o que V.Sa. me sugere para correção do problema, pois já tentei colocar todo o conteúdo que é:
DM.Conexao.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+Path+'\SECURITY.INI'+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
aí é que aparecem erros: aproximadamente 8 erros.
Então, o que realmente posso fazer para em tempo de execução o delphi procure pelo caminho/path correto?
Grato,
Walcledson de Paula/MICROVOLUTION.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)