Array
(
)

problemas com ClientdataSet

Mahdak
   - 30 jan 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!


Leandroaoa
   - 30 jan 2006

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


Mahdak
   - 31 jan 2006


Citação:
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

#Código


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;



Mahdak
   - 31 jan 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????


Mahdak
   - 31 jan 2006

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

brigadão pela ajuda de todos