Datasnap 2010 + Sql server
20/11/2009
0
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
Curtir tópico
+ 0
Responder
Posts
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.
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
27/11/2009
Delmar Observação)
Da forma tradicional no servidor fica SQLConnection << SQLDataSet << DataSetProvider
Responder
Clique aqui para fazer login e interagir na Comunidade :)