Fórum Dúvida DBExpress - Acesso Remoto #422072

21/08/2012

0

Bom dia, migrei essa semana para o DBX e ainda to meio perdido. Queria saber se desse modo que eu to fazendo para trabalhar com acesso remoto ta certo.

Comecei a salvar no banco os dados e estou fazendo da seguinte forma:

- Um DataModule com as Query de minhas tabelas;
- No form onde eu vou salvar eu adiciono:
- SQLDataSet - ClienteDataSet - DataSetProvider - DataSource;
- A propriedade do DataSet do meu DataSetProvider e o DataSource estão ligados a Query do DataModule.
- Com o ClienteDataSet eu dou um Post e o ApplyUpdates(0);



[]s
Vander Carlos

Vander Carlos

Responder

Posts

21/08/2012

Francisco Macário

Boa tarde Vander.

Se o que você quer dizer é acesso em camadas, simplificando, o correto é o Dataset e o Provider ficarem no DM e o Clientdataset e Datasource no Form.

At.
Responder

Gostei + 0

21/08/2012

Vander Carlos

Na propriedade ProviderName do ClientDataSet teria que ligar no DataSetProvider do DataModule ?

[]'s
Responder

Gostei + 0

22/08/2012

William

Colega umas das vantagens de usar DataModule é centralizar o acesso à dados, então vc pode adicionar todas as SQLQuerys, DataSetProviders, ClientDataSets e DataSources no mesmo DataModule e simplesmente informar unit do mesmo na cláusula Uses do form q vc deseja acessar e manipular os dados.

Sendo assim vc configura uma vez só o conjunto(SQLQuerys, DataSetProviders, ClientDataSets e DataSources) e pode usar em quantos forms desejar.

Claro podem existir vários conjuntos um para cada tabela ou compartilhar o mesmo DataSetProvider entre várias SQLQuerys e por aí vai ...
Responder

Gostei + 0

22/08/2012

Deivison Melo

Seguem abaixo exemplos usados com a conexão dbexpress usando o banco de dados firebird...

(*************************************************************************************************************************)
//Procedure para gravar arquivo ini usado no login
//inicio
procedure GravaIni(Arquivo, Sessao, Subsessao, valor: string);
var
ArqIni: TIniFile;
begin
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
ArqIni.WriteString(Sessao, Subsessao, valor);
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Funcao para ler arquivo ini usado no login
//inicio
function LerIni(Arquivo, Sessao, Subsessao: string): string;
var
ArqIni: TIniFile;
sDirAplicacao: string;
begin
sDirAplicacao := ExtractFilePath(ParamStr(0));
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
Result := ArqIni.ReadString(Sessao, Subsessao, );
finally
FreeAndNil(ArqIni);
end;
end;
//fim

(*************************************************************************************************************************)
//Lendo o arquivo ini criado (isso no create do formulário onde contém os objetos dbware´s (conexão com banco))
//inicio
begin
if not FileExists(sga.ini) then //verificando se o arquivo *.ini existe (usei o nome sga, mas o nome que você pesquisa é o mesmo nome criado)
ChamaForm(TfrmConfiguracao, frmConfiguracao) // essa procedure chama form foi feita para chamar os formularios, disponibilizarei aqui tb!
else
begin
try
with ConexaoDB do //nome do objeto dbconection do dbexpress
begin
Connected := False;
connectionname := PortoBello; //Nome do alias para conexão
drivername := interbase; //mesmo usando o firebird colocar aqui interbase, isso foi feito em delphi 7
getdriverfunc := getSQLDriverINTERBASE;
libraryname := dbexpint.dll;
params.clear;
params.add(drivername=interbase);
params.add(database= + LerInI(sga.ini, DB, caminho));
params.add(rolename=rolename);
params.add(user_name= + LerInI(sga.ini, DB, usuario));
params.add(password= + LerInI(sga.ini, DB, senha));
params.add(servercharset=);
params.add(sqldialect=3);
params.add(blobsize=-1);
params.add(commitretain=false);
params.add(waitonlocks=true);
params.add(errorresourcefile=);
params.add(localecode=0000);
params.add(interbase transisolation=readcommited);
params.add(trim char=false);
vendorlib := gds32.dll;
Connected := true;
end;
except
raise Exception.Create(Verifique se as configurações do arquivo sga.ini estão corretas!);
end;
end;
end;
//fim
(*************************************************************************************************************************)
//Chamar formulário
//inicio
procedure ChamaForm(aClasseForm: TComponentClass; aForm: TForm);
begin
{método para chamar form}
Application.CreateForm(aClasseForm, aForm);
try
aForm.ShowModal;
finally
aForm.Free;
end;
end;
//fim
(*************************************************************************************************************************)


forte abraço!

Emanoel Deivison
Recife - PE


Responder

Gostei + 0

22/08/2012

Francisco Macário

Na propriedade ProviderName do ClientDataSet teria que ligar no DataSetProvider do DataModule ?

[]'s


Exatamente.
Responder

Gostei + 0

22/08/2012

Vander Carlos

Entendi, valeu pelas dicas :)

Macário:

Dessa forma o ClientDataSet não tava enxergando o DataSetProvider, informei as units e nada.

[]'s
Responder

Gostei + 0

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

Aceitar