GARANTIR DESCONTO

Fórum TSimpleDataSet - problemas com SetKey e GotoKey #344365

10/08/2007

0

Faz pouco tempo que estou mechendo com Delphi e portanto não tenho muita experiência ainda com as ferramentas. Estou adaptando um programa feito com TTables e banco de dados Paradox para DBExpress + Firebird. Estou utilizando TSQLConnection + TSimpleDataSet + TDataSource. Eu preciso localizar uma tupla numa tabela, para isso tentei utilizar os mesmos métodos utilizados quando se utilizam TTables - que é dar um SetKey, passar os parametros com FieldByName e dar um GotoKey, entretanto, quando faço isso com TSimpleDataSet ele simplesmente não acha o registro. O SimpleDataSet permite fazer esse tipo de coisa? se sim, como faço pra fazer funcionar? se não, o que devo fazer para selecionar alguns registros da minha tabela segundo algum critério que eu queira?

o código que tentei usar foi esse aqui:

Fdata.sdsUsina.First;
Fdata.sdsUsina.SetKey;
Fdata.sdsUsina.FieldByName(´cod_usina´).AsString:=´0011´; // tem na tabela
if Fdata.sdsUsina.GotoKey then
ShowMessage(´achou´)
else
ShowMessage(´Não achou´);

Só dá ´Não achou´ como mensagem na tela

Até.


Andrefr

Andrefr

Responder

Post mais votado

26/08/2007

Ae, descobri o problema alguns dias depois que postei a pergunta no fórum, então agora vou responder pra ajudar a comunidade.
Então, lendo num livro vi que os métodos findkey e gotokey foram considerados legacy (obsoleto) desde a época do Delphi 3. Então, usando esses componentes, o esquema mesmo é usar
1 - o método Locate
exemplo:
SimpleDataSet1.Locate(´CODIGO;NOME´,VarArrayOf([´codigoform´,´nomeform´],[])

o terceiro parametro também pode ser loPartialKey
pra usar esse método do jeito que eu disse tem que incluir ´Variants´ no uses

2 - o método FindKey
exemplo:

SimpleDataSet1.indexFieldNames := ´CODIGO´;
   SimpleDataSet1.Findkey([´codigotofind´]);

3 - usando Filters
SimpleDataSet1.Filtered := false;
   SimpleDataSet1.Filter := ´CODIGO = ´´´ + codigoform + ´´´ ...;
   SimpleDataSet1.Filtered := true;


Bom, é isso

inté[/code]


Andrefr

Andrefr
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar