problemas com ClientdataSet

Delphi

30/01/2006

pessoal, tenho uma aplicação que usa um ClientdataSet para puxar os dados de um IBDataSet e depois gerar um relatório de etiquetas em Rave.

ele funciona certinho como quero, só que tem um problema que nao estou conseguindo resolver.

Por exemplo: eu tinha 10 registros dentro da tabela. na primeira vez que executo a aplicação para gerar o relatório, ela me mostra os 10 itens no rave, porem se depois eu atualizo a tabela, colocando mais registros ou até mesmos retirando alguns dos resgistros nao acontece nada, ou seja, quando mando gerar um outro relatório, continuam lá os mesmos 10 resgistros de quando eu mandei gerar o relatório da primeira vez.

será que o ClientdataSet nao atualiza automaticamente os dados que tenho na tabela? se for isso eu teria que dar um ´assign local data´ em tempo de execução toda vez que fosse mandar gerar o relatório? como eu faria isso?

abraços!


Mahdak

Mahdak

Curtidas 0

Respostas

Leandroaoa

Leandroaoa

30/01/2006

Antes de passar os dados para o clientdataset limpe desta forma
ClientDataSet1.CanceUpdates;


GOSTEI 0
Mahdak

Mahdak

30/01/2006

Antes de passar os dados para o clientdataset limpe desta forma ClientDataSet1.CanceUpdates;


nao deu certo, continua a mesma coisa... vou colar o código responsavel por obter os dados do ClientDataSet ´cdsCustomer´ e chamar o relatório

procedure TFrmPrincipal.btnVisualizarClick(Sender: TObject);
var
  etiquetasRave : TEtiquetaRave;
begin


  // visualiza as etiquetas ---------------------------------------------------------
  cdsCustomer.CancelUpdates;
  etiquetasRave := TEtiquetaRave.Create;
  with etiquetasRave do
  begin
    origemDosDados := cdsCustomer;
    camposDaEtiqueta.Assign(lbCamposEtiqueta.Items);
    fonteEtiqueta := lblNomeFonte.Caption;
    tamanhoFonteEtiqueta := StrToInt(lblTamanhoFonte.Caption);
    alturaEtiqueta := etiquetasRave.CmParaPolegada(StrToFloat(edtAltEtiq.Text));
    numEtiquetasPagina := StrToInt(edtNumEtiq.Text);
    numColunasPagina := StrToInt(edtNumCol.Text);
    larguraEntreColunas := etiquetasRave.CmParaPolegada(StrToFloat(edtLargCol.Text));
    margemSuperior := etiquetasRave.CmParaPolegada(StrToFloat(edtSuperior.Text));
    margemInferior := etiquetasRave.CmParaPolegada(StrToFloat(edtInferior.Text));
    margemDireita := etiquetasRave.CmParaPolegada(StrToFloat(edtDireita.Text));
    margemEsquerda := etiquetasRave.CmParaPolegada(StrToFloat(edtEsquerda.Text));
    tamanhoPapel := cbTamanhoPagina.Text;
    case rgOrientacao.ItemIndex of
      0: orientacaoPapel := ´RETRATO´;
      1: orientacaoPapel := ´PAISAGEM´;
    end;
    if edtAltPag.Text <> ´´ then
      alturaPagina := CmParaPolegada(StrToFloat(edtAltPag.Text))
    else
      alturaPagina := 0;
    if edtLargPag.Text <> ´´ then
      larguraPagina := CmParaPolegada(StrToFloat(edtLargPag.Text))
    else
      larguraPagina := 0;
    case rgOrdemImpressao.ItemIndex of
      0: ordemDeImpressao := ´LC´;
      1: ordemDeImpressao := ´CL´;
    end;
    Visualizar;
    Free;
  end;
  // --------------------------------------------------------------------

end;



GOSTEI 0
Mahdak

Mahdak

30/01/2006

uma coisa eu notei. quando eu deleto manualmente os componentes que tenho e crio eles novamente, a quantidade de registros é atualizada. alguem saberia me dizer como eu dou um ´assign local data´ em tempo de execussao no meu ClientDataSet??? pq acho que tentarei criar todos os componentes em tempo de execussao só pra ver no que vai dar.
o que os amigos acham????


GOSTEI 0
Mahdak

Mahdak

30/01/2006

pessoal, problema resolvido, era só a ligação entre os componentes que estava faltando um detalhe.

brigadão pela ajuda de todos


GOSTEI 0
POSTAR