SetRange funciana com ADO?

Delphi

30/11/2005

Estou criando uma versão de um sistema feito em Paradox para Access, quando mudei BDE para ADO deu erro numa rotina que utiliza SetRange, CancelRange e ApplyRange(dá mensagem de que estes identificadores não estão declarados).

Alguém sabe se isto não funciona para ADO e o que devo fazer?

Grata.


Sarnhold

Sarnhold

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

30/11/2005

Bom, até onde sei o SetRange só funciona com paradox, me corrijam se eu estiver errado.


GOSTEI 0
Sarnhold

Sarnhold

30/11/2005

Realmente vi que não funciona com ADO.

Alguém sabe como posso solucionar o problema, estou precisando, urgente!!!


Obrigadão!!!


GOSTEI 0
Ildefonso

Ildefonso

30/11/2005

Olá...

O pensamento do programa terá que mudar.
O SetRange trabalha sobre o índice ativo. O ADO não trabalha com índices de forma a restringir dados, mas para acesso rápido e ordenação.

Você terá que experimentar uma destas duas opções, para obter o mesmo resultado do SetRange:

1. Usar uma expressão filtro, na propriedade Filter e atribuir True a propriedade Filtered;

2. Usar uma SQL que retorne apenas os dados que você quer dentro do range.


GOSTEI 0
Sarnhold

Sarnhold

30/11/2005

Valeu obrigada!


Já havia feito isto antes de ler a mensagem, mas mesmo assim as dicas foram importantes.

Agora estou tendo problemas com findnearest.


Tentei mudar para locate, mas está dando erro:

Preciso localizar em tbCategorias parte do valor do Campo DESCRICAO, ou seja se quiser buscar ´Blue´, por exemplo, se digitar B em Edit1, deve retornar a palavra ´Blue´ em DBEDIT1.

Tentei de duas maneiras, mas nenhuma deu certo:

dm.tbCategoria.Locate(dm.tbCategoriaDESCRICAO.Value,Edit1.Text,[loPartialKey]);

e

dm.tbCategoria.Locate(Edit1.Text,DBEdit1.Text,[loPartialKey]);

Dá a seguinte mensagem de erro:

´indice da lista fora dos limites´

Não sei se deu p/ entender!



Se alguém souber, por favor me ajude, pois preciso disto urgente.

Abraços.


GOSTEI 0
Sarnhold

Sarnhold

30/11/2005

Deu certo agora:

dm.tbCategoria.Locate(´DESCRICAO´,Edit1.Text,[loPartialKey, locaseinsensitive] );

Obrigada.


GOSTEI 0
Sarnhold

Sarnhold

30/11/2005

findkey também não funciona.

Ex.:

If (Dm.tbUsuarios.FindKey([EdUsuario.Text])) then

Alguém sabe como posso fazer?


Abraço.


GOSTEI 0
POSTAR