Fórum Como fazer o apply update no clientdataset ?? isso mesmo !! #15687

14/02/2010

0

Parece ate piada pessoal mas veja a video ai , nao sei o que acontece com o clientdataset , se é algum bug do delphi ou eu mesmo que ate hoje nao aprendi escrever uma linha se quer clientdaset.applyupdates(0) ; nao funciona aqui no meu pc

[#VIDEO-177#]
Carlos Faria

Carlos Faria

Responder

Posts

14/02/2010

Carlos Faria

Wesley da uma olhada nas duas videos , a segunda acho que explica tudo. Me comenta se isso e um bug do delphi ow e isso ai mesmo

[#VIDEO-178#]
Responder

Gostei + 0

14/02/2010

Carlos Faria

ola Wesley eu outra vez , terceira situação eu criei o trio de componentes no formulario ,funcionou porem fazer isso fica ruim pois o formulario se tem muitos componentes fica poluido , dificil manutençao , o melhor mesmo seria consentrar tudo em um datamodule  
Responder

Gostei + 0

17/02/2010

Wesley Yamazack

Olá meu amigo,
  Olha vou te dar uma rápida explicação sobre este trio de componentes.
  SQLDataSet - Componente pelo qual passam as requisições para o BD, ou seja para incluir atualizar e deletar, tem que passar o comando para ele.
   DataSetProvider - Imagina um tradutor portugues(SQLDataSet) / Coreano(ClientDataSet), ambos conseguem entender o que o outro fala ? Não, pois são idiomas diferentes, certo ? Com estes dois componentes é a mesma coisa, a linguagem que o CDS falava não é  mesma que o SQLDataSet fala, por isso usamos um datasetprovider, para traduzer as requisições do clientdaset ou os comandos sql do SQLDATASET.
   ClientDataSet - Faz cache de dados, permite altera incluir deletar, navegar, etc tudo em memória.
    O comando applyUpdates, no meu caso, eu sempre coloco um método comum pego um CDSCliente por exemplo e vai em AfterPost, e coloca o seguinte


procedure TFrmProdutoTamanho.ClientDataSet1AfterPost(DataSet: TDataSet);
begin^
  TClientDataSet(DataSet).ApplyUpdates(0);
end;


   Assim todos os clients que voce quiser atualizar basta apontar os eventos afterpost, afterdelete para este metodo.
   Mas ate agora nao resolvi teu problema certo? VAmos agora tentar resolver ele, ao inves de botar a instrucao no comandtext, coloque ela no teu SQLDataSet, e nao precisa colocar parametro, isso voce pode fazer atraves do filter do clientdataset, dai os comandos que voce quer fazer, alterar por exemplo, cria um botao alterar, e coloca o seguinte codigo :

   DSpadrao.DataSet.post;
   DSpadrao.DataSet.insert;
   DSpadrao.DataSet.delete;
   DSpadrao.DataSet.First; 
   DSpadrao.DataSet.Last;

   E por ai vai, tudo você pode controlar atraves deles, e o applyupdates fica direto no momento que ocorrerem aqueles dois eventos, afterdelete, afterpost.
  Lhe digo que é melhor colocar os 3 componentes sempre em um DataModulo, e de preferencia em fila,
   SDSCliente           DSPCLiente         CDSCliente   
   SDSFornecedor    DSPFOrnecedor   CDSFOrnecedor
   SDSVenda            DSPVenda           CDSVenda

  Desta forma que eu faço fica mais facil de dar manutenção quando estão numa fileira.

 Sacou meu amigo ? Ainda não vi sua outra video pois a internet onde estou esta muito lenta.

Um abraço
Responder

Gostei + 0

17/02/2010

Carlos Faria

Ola Wesley Assista a outra vídeo e me responda depois, o meu problema aqui e um pouco diferente disso.Tudo da certo desde que o trio de componentes esteja no formulário e não no datamodule, achei estranho isso mas o vídeo vai te demonstrar essa situação.
Responder

Gostei + 0

19/02/2010

Wesley Yamazack

Olá carlos, vou analisar e logo retornarei.   Um abraço
Wesley Y
Responder

Gostei + 0

20/02/2010

Carlos Faria

ok wesley , fico aguardando  
Responder

Gostei + 0

21/02/2010

Wesley Yamazack

OLá CArlos,
  ME diga uma coisa, qual é o Tipo do BtnApply ? TButton ou TSpeedButton ?
  Outra coisa, toda e qualquer alteração que vocÊ for fazer, tem que ter um CDS.Post, para confirmar a atualização e logo em seguida sim, o applyUpdates, você esta fazendo isso ? Post e depois Apply ?

  Dica :
    Ao consultar um Telefone, cloque o CDS em modo de Edição, ou seja : CDS.Edit, ao terminar a alteração cds.post, e pronto, veja se isso não irá funcionar.
  Nâo esquecendo do Applyupdates.


Fico no aguardo.

Att,

Wesley Y
Responder

Gostei + 0

21/02/2010

Carlos Faria

Eu nao estou fazendo post e depois applyupdates , simplesmente applyupdates , mas ja tentei aqui como o post e nada , parece que a charada esta na segunda video que te enviei , eu tenho uma rotina para criar formulario , eu nao abro os forms com o showmodal eu os crio , nao sei se tem haver isso mas quando o form e auto criado tudo funciona , quando eu o chamo de um botao ow de um menu da esse erro ai , observa bemn a segunda video que é isso ai o problema
Responder

Gostei + 0

22/02/2010

Wesley Yamazack

Olá meu amigo, seguinte, qual BD vc ta usando ? SQL Server 2008 certo ?
  Me confirma isso que eu vou fazer um exemplo pra ti,  usando SQL Server vlw ?

Um abraço

Wesley Y
Responder

Gostei + 0

23/02/2010

Carlos Faria

Exatamente sqlserver 2008 , isso mesmo !
Responder

Gostei + 0

23/02/2010

Wesley Yamazack

OK amigo, me de um tempo para poder fazer o exemplo.

Abs

Wesley Y
Responder

Gostei + 0

24/02/2010

Wesley Yamazack

Olá Carlos,
  INfelizmente não estou conseguindo baixar o SQL Server 2008 Express, vou fazer com Firebird 2.0 ok ? Posso fazer assim ? E você adpta para SqlServer ok ?

Um abraço

Welsey Y
Responder

Gostei + 0

24/02/2010

Wesley Yamazack

Olá Carlos
    Esta ai um exemplo funcional de como trabalhar com ClientDataSet, Usando FireBird 2.0,

    Exemplo  : http://www.4shared.com/file/228851458/63737f5f/BDFB.html
    FireBird  : http://www.firebirdsql.org/index.php?op=files


Observação : Eu não coloquei  os componentes num DataModule, mas o correto seria estar em um DataModule.

Um abraço

Wesley Y
Responder

Gostei + 0

02/03/2010

Carlos Faria

fiz o mesmo exemplo utilizando firebird , deu tudo certo o problema parece ser quando se trabalha com dbexpress4 e sqlserver esse me parece ser o erro
Responder

Gostei + 0

03/03/2010

Wesley Yamazack

Olá meu amigo,
  Você esta usando delphi 2010, certo ? SQL server 2008 ? ou o 2005 ? Qual é o erro ?

Um abraço

Wesley Y
Responder

Gostei + 0

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

Aceitar