Operation not allowed on a unidirectional dataset
Galera,
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
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
Curtidas 0
Respostas
Rômulo Barros
29/10/2003
utilize um DataSetProvider como intermediário...
GOSTEI 0
Emersonsj
29/10/2003
vc pode usar o simplesdataset ele funciona muito bem Ex
Whit SimpleDataSet1 Do
begin
Close;
CommandText := ´´;
CommandText := ´Select * From Tabela´;
Open;
end;
Whit SimpleDataSet1 Do
begin
Close;
CommandText := ´´;
CommandText := ´Select * From Tabela´;
Open;
end;
GOSTEI 0
Adsilver
29/10/2003
Amigo Ruy,
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
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