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é.
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
Curtir tópico
+ 0
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:
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:
3 - usando Filters
Bom, é isso
inté[/code]
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
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)