ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Qual a vantagem de gravar dados usando CDS?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sáb Fev 03, 2007 10:18 am    Assunto: Qual a vantagem de gravar dados usando CDS? Responder com Citação

Olah pessoal, a duvida agora seria, como passar para o banco de dados um resultado de gravaçao de um CDS (ClientDataSet)?

Mais primeiro quero saber se tem algum maçete para criar campos no CDS:
Fiz assim
1º fui na propriedades FieldDefs e coloquei alguns campos string
2º botao direito do mouse sobre o componente usei a opção Create DataSet
Bom ateh ai tudo certo, joguei os campos para o field editor do ClientDataSet, mais ai na hora de ativar apareceu o seguinte erro ClientDataSet Missing Data Provider or Data Packet

Resolvi colocar o componente DataSet Provider no form tambem e liga-lo ao ClientDataSet. Nao configurei nada no DataSetProvider.

Mais ai apareçe um novo erro
Circular provider references not allowed

Bom como estou usando o Delphi 5 estou usando estes componentes da paleta Midas
***************************************************
Bom + ou - sei que usando a CDS tambem eh assim como o ibTable, mais me pareçe que tem que usar o ApplyUpdates para transferir os dados pra tabela.

Bom a ideia a principio eh usar CDS pq creio eu que diminua o trafego na rede pq os Tables nao sao aconselhavel para trabalhar em rede(segundo dizem), como eu nunca trabalhei com CDS nao sei se eh vantagem ou nao, pois gosto mesmo eh de usar para um tipo assim Stored Procedure(SP), mais nao consegui de forma alguma executar os parametros desta forma por SP e tambem nao consegui usando o ibQuery, acusa erro. Somnete consigo usando ibTable ou CDS., mais o CDS soh consegui mostrar o resultado na grade assim que eu saio do form ela apaga, me parece segundo andei lendo eh pq o CDS grava em memoria, pra depois passar para o banco. (Nao sei se eh verdade).

Bom galera soh pra informar estou usando a paleta IBX e firebird 2.0, e Delphi 5 (O codigo como gravo no ibtable esta logo abaixo para caber aqui, se nao da erro no post)
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree


Editado pela última vez por adriano_servitec em Sáb Fev 03, 2007 3:06 pm, num total de 3 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sáb Fev 03, 2007 10:21 am    Assunto: Responder com Citação

Estou usando um ibTable assim (o codigo foi reduzido pq esta dando erro na hora de postar aqui no forum)
Código:
procedure TFTodoMes.btnGravarClick(Sender: TObject);
var i, n: SmallInt;
begin
//**********COMEÇO DA GRAVAÇAO DE DADOS USANDO IBTABLE****
  N := ComponentCount;
  for I := 0 to N-1 do
  begin
     if (Components[I] is TEdit) AND ((Components[I] as TEdit).Tag > 0) AND ((Components[I] as TEdit).Tag < 15) and ((Components[I] as TEdit).Text <> '') then
      begin
        dm.IBTodoMes.Append; {para incluir na Tabela usando um DataSet}
        {passando os dados do edit para o DataSet}
        dm.IBTodoMesano.Value            := edtAno.Text;
        dm.IBTodoMesConta_D.Value        := edtDebito.Text;
        dm.IBTodoMesConta_C.Value        := edtCredito.Text;
        dm.IBTodoMesMes.Value         := (Components[I] as TEdit).Tag;
        dm.IBTodoMesHistorico.Value   := edtHistorico.Text;
        {SValor deixei como variavel Global - Variavel sValor recebendo o valor que contem no componente edtValorPadrao}
         sValor := edtValorPadrao.Text;
         {transforma a variavel sValor para receber valores com ponto e virgula tipo 1.000,00}
         sValor := stringreplace(sValor, '.', '', [rfReplaceAll]);
        {Case recebendo a variavel sValor}
        Case (Components[I] as TEdit).Tag of
          1: DM.IBTodoMesValor.Value     := StrToCurr( sValor );
          2: DM.IBTodoMesValor.Value     := StrToCurr( sValor );
          3: DM.IBTodoMesValor.Value     := StrToCurr( sValor );
          4: DM.IBTodoMesValor.Value     := StrToCurr( sValor );
          5: DM.IBTodoMesValor.Value     := StrToCurr( sValor );
        end;
  try
        dm.IBTodoMes.Post; {para gravar na tabela}
        if not dm.tLConta.InTransaction then dm.tLConta.StartTransaction; // Reinicia o transaction
        dm.tLConta.CommitRetaining;
        DM.IBQTODOMES.Close; //ATUALIZA A QUERY DA GRADE
        DM.IBQTODOMES.Sql.Clear;
        DM.IBQTODOMES.Sql.Add('select * from todomesconta order by sequencia desc');
        DM.IBQTODOMES.Open;
 except
        on E:Exception do
        begin
           dm.TLConta.RollBackRetaining; //Rollback no Trasaction
           ShowMessage('Falha na Inclusão dos Dados!'#13#10' Mensagem: '+E.Message);
        end;
      end;//final do try/except
     end;
  end;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB