TSqlQuery.Locate();
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
Curtidas 0
Respostas
Rômulo Barros
08/03/2005
:?: [b:295f9af0c2]SOBE[/b:295f9af0c2]
GOSTEI 0
Faelcavalcanti
08/03/2005
Será que no delphi 7 o comportamento do TSQLQuery está para ser bidirecional. Tu poderias fazer um casting.
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.
(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
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
08/03/2005
Ops. Merda minha seria a partir do DataSet para um componente mais específico ficando tipo assim:
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.
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
08/03/2005
Ops. Merda minha seria a partir do DataSet para um componente mais específico ficando tipo assim:
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.
var Dts_Aux : TDataSet; begin ..... (Dts_Aux As TSQLQuery).Locate(......); ..... end;
[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
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.
Quanto a tentar resolver coloca um DataSetProvider e um ClientDataSet, pode ser que fique uma gambiarra mas resolve.
GOSTEI 0
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