Fórum Operation not allowed on a unidirectional dataset #191531
29/10/2003
0
sempre utilizei conexão ADO, estou migrando para dbexpress e está dando o seguinte erro ´Operation not allowed on a unidirectional dataset´ quando cou conectar um dbgrid a um DataSource.
Os componentes que estou utilizando são:
TSQLConection;
TSQLStoredProc e
TDataSouce.
Valeu a força
Ruysalles
Curtir tópico
+ 0Posts
29/10/2003
Rômulo Barros
Gostei + 0
23/11/2005
Emersonsj
Whit SimpleDataSet1 Do
begin
Close;
CommandText := ´´;
CommandText := ´Select * From Tabela´;
Open;
end;
Gostei + 0
23/11/2005
Adsilver
A engine DbExpress so trabalha com cursores unidirecionais, ou seja, carrega os dados em memória, faz a passagem dos registros e libera a memória. Ela nao faz cache. Por isso mesmo nao é permitido operações como Prior, Insert, etc.. Os unicos comandos permitidos são Next a Last.
Para se trabalhar com edição existem duas maneiras: A primeira é voce implementar todos os comandos SQL manualmente e outra maneira (e mais recomendavel) é voce utilizar algum componente que faça cache. Existem duas maneiras de se fazer cache atraves de componentes. Pode-se utilizar o componente SimpleDataSet ou o conjunto de componentes DataSetProvider + ClientDataSet.
Através desses recursos voce podera utilizar seu dataset livremente, fazendo inserções, exclusoes e movimentacoes de registros.
Nao esqueça de enviar as modificação ao servidor utilizando o método ApplyUpdates como no exemplo abaixo:
SQLConnection1.ApplyUpdates(-1);
O parametro deste método indica a quantidade máximo de erros permitidos na atualização do servidor. Caso informe -1, todos os erros são ignorados.
Para trabalhar os erros gerados utilize a técnica de reconciliação através do evento OnReconcilieError do componente ClienteDataSet e/ou SimpleDataSet.
Mais informações utilize o help do Delphi que é bastante completo.
----------------------------------------------------
Adriano Silveira
Borland Delphi 7 Advanced Product Certified
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)