23/08/2004

Locate

Estou utlizando o Seguinte Codigo:

Dm.TbArea.Locate(´Codigo´, VarArrayOF([Dm.TbAtribuicaoCodigoSetor.value]), []);

mas não está funcionando esta dando o erro: ... Not convert variant of type (array variant) into type (string).. sendo que os doi campos da tabela e do tipo Integer.


O que devo fazer


Desde já agradeço a todos


Silvio

Respostas

23/08/2004

Ipc$

Também já tive problemas com isso e acho que o método Locate tem um pequeno furo. No caso do parâmetro ser somente 1 e vc passar um array de variants mesmo que seja criado somente com um elemento ele dá erro. Então para mim foi o seguinte: quando for mais de um parâmetro, utilizo o array de variants criado por VarArrayCreate, se for um só, utilizo
a variant como elemento único e não com v[0].
Me parece que no seu caso, VarArrayOf retorna um array de variants e passa v[0] p/ o Locate e é aí que dá o erro.


Responder Citar

23/08/2004

Rômulo Barros

Dm.TbArea.Locate(´Codigo´, VarArrayOF([Dm.TbAtribuicao.FieldByName(´CodigoSetor´).AsString]), []);

Não custa nada. A propriedade .Value é do tipo variant, por isso q ocorre o erro.
No lugar de .AsString, vc tb poderá utiliza o .AsInteger;

:wink: :arrow: :arrow: :arrow: :arrow: oi eu aqui...


Responder Citar

24/08/2004

Sandra

Silvio,

Não sei qual o banco de dados está utilizando, mas...
Acho que está havendo alguma confusão aí. :D
O VarArrayOf é utilizado quando se quer informar dois ou mais parâmetros para o Locate. Por isso, o erro apresentado na compilação.

:idea: Pesquisando no fórum, veja estes dois tópicos que encontrei:
* [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=46141&highlight=vararrayof]Locate em mais de um registro[/url]
* [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=41573&highlight=vararrayof]duvidas com locate[/url]

Exemplo (e maiores detalhes) que consta no help do Delphi:
with CustTable do
  Locate(´Company;Contact;Phone´, VarArrayOf([´Sight Diver´, ´P´, ´408-431-1000´&93;), &91;loPartialKey&93;);


Verifique também se a unit DB está declarada na lista de uses.


Boa sorte!


Responder Citar