Como fazer o apply update no clientdataset ?? isso mesmo !!

14/02/2010

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

Curtidas 0

Respostas

Carlos Faria

Carlos Faria

14/02/2010

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#]
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

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  
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

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.
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

Olá carlos, vou analisar e logo retornarei.   Um abraço
Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

ok wesley , fico aguardando  
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

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
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

Exatamente sqlserver 2008 , isso mesmo !
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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

Abs

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

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
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

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

Um abraço

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

Uso aqui delphi 2010 ,delphi 2009 e sql 2008, e 2005 tambem , o problema  é exatamente como mostrei no video , quando o form nao e criado , ele funcina , quando eu chamo do frmMain o form , o clientdataset nao da o applyupadate ?   Esse é o problema
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

 
Olá amigo,

   A única coisa diferente que você tem ae, seria o seu ambiente, pois estou usando Delphi 2010, e SQL Server 2008, e chamando os forms, gravando sem problema algum.
  Você ja tentou fazer uma nova aplicação, e conectar com o SQL Server, e chamar um form normal ? Um aplicação simples, apenas com a conexão e uma tela de cadastro, além é claro dos componentes para manipulação dos dados, faça este teste para vermos se o problema não pode estar nesta tua atual aplicação.

Um abraço

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

Eu ja fiz todos os testes possiveis aqui , ja criei aplicao como um unico form , ja formatei a maquina varias vezes , ja reinstalei o sql , ja troquei de versao de delphi , antes eu usava 2007 e 2009 e sempre tem esse problema , uma hora ate grava outra da pau.   Acho que dbexpress e delphi nao combina , estou usando firebird e dbexpress em outra aplicação da ate gosto de usar , por isso que eu gosto de usar stored procedures entendeu agora. Na aplicacao delphi e sqlserver nao casa muito bem , ja andei lendo que a paleta dbgo e recomendada para se trabalhar com sqlserver.   Mas sei la o problema e como voce viu ai , se nao tiver solucao da um ok no chamado , mas pesquise antes o que acontece ! isso nao ta certo e nao estou errando aqui te garanto
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

Olá Carlos, andei pesquisando aqui, mas como eu inicio aqui um projeto com SQL Server e delphi , não encontro problema nenhum ao gravar os registros, faça um exemplo e um novo banco de dados com uma única tabela, teste e me mande ok ?

Um abraço

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

14/02/2010

Pode fechar o chamado quando eu descobri o que é eu te falo , mas ja te adianto a video e bem clara , vc ve que quando o formulario nao é auto criado , o cdsfunciona , quando e criado ele nao funciona mais .Esse é o erro que ate hoje nao descobri pq , mas tem a ver com a criacao de forms sim.   Eu estudei bastante sobre essa caso , a microsoft recomenda em caso de delphi + sql server paleta dbgo me parece que essa paleta sao de compentente criados pela propria microsoft
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

14/02/2010

Olá amigo,

  Esta palheta é recomendada pela MS ,pois é dela mesma, serve para comunicação de bds MS, access tbm serve.

Um abraço

Wesley Y
GOSTEI 0
POSTAR