quot;Cannot modify a read-only datasetquot; com dbExpress

Delphi

13/07/2003

Olá pessoal,
Estou fazendo uma pequena aplicação com Delphi 7, banco de dados Interbase e usando dbExpress pra fazer as conexões.
Uso uma TSQLQuery, umTDataSetProvider, e um TClientDataSet. O ClientDataSet usa o DataSetProvider como Provider, e este usa a SQLQuery como dataset.
Os métodos post, insert, edit, etc aplico no ClientDataSet.
O problema é que toda vez que tento dar um applyupdates, assim:

procedure TDM.CDS_CLIENTESAfterPost(DataSet: TDataSet);
begin
  (Dataset as TClientDataSet).ApplyUpdates(0);
end;


ou assim:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
  if DM.CDS_CLIENTES.ChangeCount > 0 then 
    DM.CDS_CLIENTES.ApplyUpdates(0);
end; 


ele me dá o mesmo erro: [b:1ebbe764e7]´Q_CLIENTES : Cannot modify a read-only dataset´[/b:1ebbe764e7]

Vejam que o erro se dá na SQLDataset, e não no ClientDataSet.

Alguém sabe por que isso acontece? Desde já, agradeço


Moonlight

Moonlight

Curtidas 0

Respostas

Edilcimar

Edilcimar

13/07/2003

ou o clientdataset ou o sqldataset não estão compartilhados, veja se não existe um read only, applyupdate


GOSTEI 0
Marceloribeiro

Marceloribeiro

13/07/2003

Leticia,

Bom, vamos por parte, ok?
Eu utilizo DBExpress e tive alguns problemas parecidos, exatamente porque eu estava usando TSQLQuery, então passei a usar TSQLDataSet, ou seja, SQLDataSet + DataSetProvider + ClientDataSet e devo admitir que ficou muito bom, tente fazer isso e se não conseguir me comunique, ok?

Um Abraço!!!

Marcelo Ribeiro


GOSTEI 0
Moonlight

Moonlight

13/07/2003

Olá pessoal, MUITO obrigada pela ajuda.
Bom, o problema era que uma propriedade do DataSet Provider (chamada ResolveToDataSet) estava como True. Coloquei como False, e funcionou beleza.
E, seguindo o conselho do amigo Marcelo, mudei de TSQLQuery pra TSQLDataSet. Tá ótimo. Vou continuar minha aplicação dessa forma.

Muito obrigada. :P


GOSTEI 0
POSTAR