TSqlQuery.Locate();

Delphi

08/03/2005

Utilizando o Delphhi 7.0, eu utilizo o método LOCATE em uma TSQLQUERY e funciona normalmente. Entretanto, o mesmo método não funciona no Delphi 6.0 (Operation not allow in unidirectional dataset). Esse erro eu sei qual é, mas não entendi pq funiona no Delphi 7.0 e não funciona no Delphi 6.0


Rômulo Barros

Rômulo Barros

Curtidas 0

Respostas

Rômulo Barros

Rômulo Barros

08/03/2005

:?: [b:295f9af0c2]SOBE[/b:295f9af0c2]


GOSTEI 0
Faelcavalcanti

Faelcavalcanti

08/03/2005

Será que no delphi 7 o comportamento do TSQLQuery está para ser bidirecional. Tu poderias fazer um casting.

(TSQLQuery As TDataSet).Locate(....);


Talvez nesta hierarquia não faça sentido mas moficaria o comportamento do componente de modo que pudesse utilizar o seus métodos.

Espero ter ajudado.


GOSTEI 0
Rômulo Barros

Rômulo Barros

08/03/2005

Será que no delphi 7 o comportamento do TSQLQuery está para ser bidirecional.


Não. No Delphi 7 os componentes da [b:03a6c7164a]DBX[/b:03a6c7164a] também são [b:03a6c7164a]BIDIRECINAIS[/b:03a6c7164a].


GOSTEI 0
Faelcavalcanti

Faelcavalcanti

08/03/2005

Ops. Merda minha seria a partir do DataSet para um componente mais específico ficando tipo assim:


var 
  Dts_Aux : TDataSet;
begin
  .....
  (Dts_Aux As TSQLQuery).Locate(......);
  .....   
end;


Assim acho que dá certo mas não testei não. Mas mesmo assim de qualquer forma o comportamento do método será da mesma forma.


GOSTEI 0
Rômulo Barros

Rômulo Barros

08/03/2005

Ops. Merda minha seria a partir do DataSet para um componente mais específico ficando tipo assim:
var 
  Dts_Aux : TDataSet;
begin
  .....
  (Dts_Aux As TSQLQuery).Locate(......);
  .....   
end;
Assim acho que dá certo mas não testei não. Mas mesmo assim de qualquer forma o comportamento do método será da mesma forma.


[u:cda388218f][b:cda388218f]Fiz :[/b:cda388218f][/u:cda388218f]

procedure TfrmTelaPrincipal.Button2Click(Sender: TObject);
Var
    MinhaQuery : TSQLQuery;
begin
   Try
      MinhaQuery := TSQLQuery.Create(Nil);
      MinhaQuery.SQLConnection := dmoConexao.DBExConexao;
      MinhaQuery.SQL.Text := ´ SELECT * FROM DMACO002´;
      MinhaQuery.Open();
      TDataSet(MinhaQuery).Locate(´LINHA_NOME´,´Teste´,[]);
   Finally
      FreeAndNil(MinhaQuery);
   End;
end;


[color=red:cda388218f][u:cda388218f][b:cda388218f]Erro:[/b:cda388218f][/u:cda388218f][/color:cda388218f] Operação não suportada em DataSet Unidirecinal !!!

Realmente... não sei pq o D7 aceita e o D6 não aceita :cry: :cry:


GOSTEI 0
Faelcavalcanti

Faelcavalcanti

08/03/2005

Cara acho que não funcionará nunca pelo menos no delphi 6. Quanto ao Delphi 7, não estou lembrado se o TSQLQuery é bidirecional, mas no delphi 6 é unidirecional.

Quanto a tentar resolver coloca um DataSetProvider e um ClientDataSet, pode ser que fique uma gambiarra mas resolve.


GOSTEI 0
Rômulo Barros

Rômulo Barros

08/03/2005

Quanto a tentar resolver coloca um DataSetProvider e um ClientDataSet, pode ser que fique uma gambiarra mas resolve.


O problema é justamente este: Não quero utilizar TDataSetProvider e TClientDataSet. Instancio uma TSqlQuery em RunTime e passo a trabalhar com a mesma. Mas.. sem crise !!! Para resolver o problema, basta eu compilar o projeto pelo DELPHI 7.

:arrow: [b:988d838fae][i:988d838fae][u:988d838fae]Valeu !!![/u:988d838fae][/i:988d838fae][/b:988d838fae]


GOSTEI 0
POSTAR