GARANTIR DESCONTO

Fórum Alterar path do BDE em runtime #276951

13/04/2005

0

gostaria de saber como alterar o path de um alias paradox em runtime.
Obrigado.


Andremuller

Andremuller

Responder

Posts

13/04/2005

Jrinfo2005

só uma idéia:

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


Responder

Gostei + 0

13/04/2005

Andremuller

Obrigado pela ajuda colega mas não é essa a intenção.

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.


Responder

Gostei + 0

13/04/2005

Jrinfo2005

andremuller,

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


Responder

Gostei + 0

13/04/2005

Andremuller

Não sei se é a melhor forma, mas resolvi o problema da seguinte forma:

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


Responder

Gostei + 0

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

Aceitar