Datasnap 2010 + Sql server

20/11/2009

Boa noite!   Eu desenvolvo sistemas multicamadas usando delphi 2005 e sqlserver 2000/2005. Com o lançamento do 2010, a equipe de desenvolvimento do qual faço parte irá fazer uma atualização, que implica a migração da estrutura para o novo datasnap 2010. Eu fiz pesquisas na rede e não encontrei nenhum material que explica como trabalhar com banco de dados. Além disso, não sei ainda como usar os componentes que ficavam do lado do servidor (sqldataset, datasetprovider, por exemplo, já que o sqlconnection fica no cliente). Claro que isso não é um bicho de sete cabeças, mas a mudança foi muito grande e ainda estou um pouco perdido.   Por este motivo, gostaria que, se possível, indicassem-me um material (artigo, site, exemplos) que mostre como trabalhar com os componentes dbexpress e conexão com o banco de dados.   Desde já agradeço à atenção de todos.   Tenham um ótimo feriado.   Abraços.

Rogerio Merlotti

Respostas

27/11/2009

Delmar Observação)

Estou estudando DataSnap 2010 e me add no msn para trocarmos ideias.
delmar@deltacorp.com.br

A princípio no cliente da forma tradicional usa SQLConnection setando driver DataSnap << TDSProviderConnection (não lembro bem o nome do componente) da aba DataSnap Client << e um ClientDataSet

Mas tem outras formas de se trabalhar:
executando métodos
procedure TFrmPrincipal.Button1Click(Sender: TObject);
begin
  ServerMethodPegaDataHora.ExecuteMethod;
  Edit1.Text := ServerMethodPegaDataHora.Params[0].AsString;
end;

executando métodos via proxi
procedure TFrmPrincipal.Button2Click(Sender: TObject);
var
  SM : TServerModuleClient;
begin
  SM := TServerModuleClient.Create(ServerConnection.DBXConnection);
  Edit1.Text := DateTimeToStr(SM.PegaDataHora);
  SM.Free;
end;

ou ainda usando um SqlServerMethod via open do ClintDataSet
SQLConnection << SqlServerMethod << DataSetProvider << ClientDataSet

procedure TFrmPrincipal.Button3Click(Sender: TObject);
begin
  CdsClientes.Close;
  CdsClientes.Params[0].AsString := Edit2.Text + '%';
  CdsClientes.Open;
end;

procedure TFrmPrincipal.Button4Click(Sender: TObject);
begin
  CdsClientes.ApplyUpdates(0);
end;

procedure TFrmPrincipal.Button5Click(Sender: TObject);
begin
  if CdsClientes.RecordCount > 0 then
  begin
    CdsClientes.Delete;
  end;
end;

procedure TFrmPrincipal.CdsClientesCalcFields(DataSet: TDataSet);
begin
  if DataSet.State = dsInternalCalc then
  begin
    if CdsClientesSTATUS.AsString = '0' then
      CdsClientesVirtstatus.AsString := 'Inativo'
    else if CdsClientesSTATUS.AsString = '1'  then
      CdsClientesVirtstatus.AsString := 'Ativo';
  end;
end;

procedure TFrmPrincipal.CdsClientesReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
  raise EDatabaseError.Create(E.Message);
end;

Estou apenas no começo também.
Mas podemos ir trocando o que encontramos.
Responder Citar

27/11/2009

Delmar Observação)

Da forma tradicional no servidor fica SQLConnection << SQLDataSet << DataSetProvider
Responder Citar