Fórum Alterar path do BDE em runtime #276951
13/04/2005
0
Obrigado.
Andremuller
Curtir tópico
+ 0Posts
13/04/2005
Jrinfo2005
vc poderia estar utilizando um componente Database (TDataBase) e fazendo suas configurações. Depois é só vc colocar no código
Table1.Close;
Database1.Close;
Database1.Params.Values[´PATH´] := ´C:\LOCAL´;
Table1.TableName := ´TABELA.DB´;
Table1.Open;
Espero ter ajudado
Gostei + 0
13/04/2005
Andremuller
Esto criando uma ferramenta para auxiliar na manutenção de sistemas antigos que utilizam paradox. Ele deverá possibilitar a troca de diversos alias para depois rodar a aplicação cliente.
Gostei + 0
13/04/2005
Jrinfo2005
Essa dica não sei se vc já viu, ou já testou, mas estou enviando por via das dúvidas: Eu nunca testei, mas pode dar uma idéia
Procedure ModifyBDE(Path,Chave,Valor:String);
var ParamList: TParamList;
Lista:TStringList;
cfgMode:TConfigMode;
i:Integer;
begin
Lista:=TStringList.Create;
//Recupera Lista de Configurações
Session.GetConfigParams(Path,´´,Lista);
//Verifica na lista, onde a chave modificada se encontra
For i:=0 to Lista.Count-1 do
If Pos(UpperCase(Chave),UpperCase(Lista[i]))<>0 Then
Lista[i]:=UpperCase(Chave)+´=´+Valor;
//Salva o atual modo de configuração da variável de sessão
cfgMode:=Session.ConfigMode;
//Coloca em modo de alteração
Session.ConfigMode:=cmPersistent;
//Cria lista de parâmetros
ParamList := TParamList.Create(Lista);
//Chama API do BDE para modificar as configurações
Check(DbiCfgModifyRecord(nil, PChar(Path), ParamList.FieldCount,
PFLDDesc(ParamList.FieldDescs), ParamList.Buffer));
//Recupera o modo de configuração da variável de sessão
Session.ConfigMode:=cfgMode;
//Salva as configurações da sessão
Session.SaveConfigFile;
ParamList.Free;
Lista.Free;
End;
//Alguns exemplos de chamada da função para modificar o valor no BDE
//Nota: certas chaves possuem alguma diferença quanto ao Path no BDE
ModifyBDE(´\System\FORMATS\NUMBER´,´DECIMALSEPARATOR´,´,´);
ModifyBDE(´\System\Init´,´Local Share´,´TRUE´);
ModifyBDE(´\Drivers\Paradox\Init´,´Net Dir´,´F:\´);
OBSERVAÇÃO: Após utilizar a função é necessário reiniciar o sistema, talvez por causa da variável de sessão. Um teste que eu ainda não fiz, foi dar um close/open na sessão para não ter que reiniciar o sistema. Com certeza, as Query´s e Table´s serão fechadas necessitando reabri-las.
Por Willian Vieira dos Santos
Gostei + 0
13/04/2005
Andremuller
Criei um Database e um Session
então executo o método abaixo
procedure TdmBde.AlterPath(ADatabase, APath: string); var slAlias: TStringList; oSession: TSession; begin slAlias := TStringList.Create; try slAlias.Add(´PATH=´ + APath); TempDatabase.Close; TempDatabase.AliasName := ADatabase; TempDatabase.Open; oSession := Sessions.FindSession(TempDatabase.SessionName); oSession.ModifyAlias(ADatabase, slAlias); finally FreeAndNil(slAlias); end; end;
obrigado aos interessados no tópico
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)