Fórum Após o comando ClientDataSet.ApplyUpdates(0); #413021
20/02/2012
0
Fábio Banhos
Curtir tópico
+ 0Posts
20/02/2012
Marco Salles
em hipotene-se nhuma voce pode abrir e fecha o seu SQLDataSet , porque ele não faz parte da aplicação
cliente ..
Gostei + 0
20/02/2012
Fábio Banhos
mas tem lugares que utilizo o SQLDataSet como costumo usar uma ADOQuery.
Veja um caso como exemplo:
procedure TfrmLogin.LocalizaUsuario(Codigo: Integer);
begin
sdsUsuario.Close;
sdsUsuario.ParamByName(ID_USUARIO).Value := Codigo;
sdsUsuario.Open;
if (sdsUsuario.IsEmpty) then
begin
MessageDlg(Usuário inválido!, mtInformation, [mbOK], 0);
lblNomeUsuario.Caption := ;
edtUsuario.SetFocus;
end
else
begin
lblNomeUsuario.Caption := sdsUsuario.FieldByName(NM_USUARIO).AsString;
edtUsuario.Text := sdsUsuario.FieldByName(ID_USUARIO).AsString;
end;
sdsUsuario.Close;
end;
Estou errado em fazer assim ?
Gostei + 0
20/02/2012
Marco Salles
eu disse para dar Refresh () e disse mais que não se usa o abrir e fechar o SqldataSet
Porque ??
Na tecnologia DBX DataSnap , voce não tem acesso físico ao SqldataSet
a não ser que voce esteja no servidor de aplicação , o que dificilmente será o caso
então o SqlDataset tem a instrução Sql
tipo assim (SqlUSUARIO no IDE Mesmo) la no Servidor (no caso em Um DataModulo separado )
select NM_USUARIO , ID_USUARIO From USUARIO where ID_USUARIO:pID_USUARIO
irá gerar um parâmetro (No ID mesmo)
No Objecto inspector voce configura este parametro o tipo se é de entrada etc...
Então , isto é o que voce Faz no servidor , no cliente NÂO tem sdsUsuario
então voce utiliza o CDS , e seria mais ou menos :
with ClientDataSet2 do
begin
Close;
FetchParams;
Params[0].assinteger:=Codigo ; // **************
Open;
if IsEmpty then
begin
MessageDlg(Usuário inválido!, mtInformation, [mbOK], 0);
lblNomeUsuario.Caption := ;
edtUsuario.SetFocus;
end
else
begin
lblNomeUsuario.Caption := FieldByName(NM_USUARIO).AsString;
edtUsuario.Text := FieldByName(ID_USUARIO).AsString;
end;
Amigo , este é o modo correto (Modo RAD , diga-se de paasagem), mesmo que voce não utilize o dataSnap ...
Voce tem que entender que o SqlDAtaSet , o SqlConecction esta em Outra Camada , no caso Outro datamodulo
e na Aplicação cliente tem os seu Cds
Gostei + 0
20/02/2012
Fábio Banhos
Valeu amigo.
Gostei + 0
21/02/2012
Fábio Banhos
O ClientDataSet reconhece os parametros do SQLDataSet ?
É porque no ClientDataSet não tem SELECT, ele pega os dados que o SQLDataSet buscou.
Gostei + 0
21/02/2012
Marco Salles
O ClientDataSet reconhece os parametros do SQLDataSet ?
É porque no ClientDataSet não tem SELECT, ele pega os dados que o SQLDataSet buscou.
Atraves do TdataSetProvider (num processo chamdo Resolving), seria mais ou menos isto
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)