Fórum Locate não funciona #193551

07/11/2003

0

olá pessoal
estou com um problemão no Locate...
meses atrás eu já postei uma pergunta referente a isso e não consegui a solução.. todas as sugestões foram em vão ... mas espero receber tod e qq ajuda !!

utilizo Delphi7 com Firebird e acesso via Bde.
tenho um FormConsulta com um Tquery ligado ao um DataSource1 este ligado a um DbGrid1.
o que acontece é o seguinte, em certo momentos vou estar navegando no FormConsulta dentro do Grid em um determinado registro ... aí a partir desta, vou para o FormCadastro, onde incluo ou altero registro .. feito isso eu preciso atualizar a TQuery do FormConsulta .. eu faço isso dando um Query1.Close e depois um Query1.Open. Antes de executar o Close eu atribuo o valor FormConsulta.Query1.FieldByName(´Horario´).AsTime para uma variável X. Após executar o Query1.Open eu preciso dar um Locate na Query para que ela se posicione no registro em q estava. Seria isso aqui: Query1.Locate(´Horario´,X,[]) ... mas isso de uma forma ou de outra não funciona com componentes TQuery .. se eu fizer tudo isso utilizando IBQuery funciona exatamente como está.
Alguém sabe como dar o Locate de campo Time no TQuery ou alguma forma de contornar isso ?

abraço

Diogo
diogoalles@hotmail.com


Diogoalles

Diogoalles

Responder

Posts

07/11/2003

Marconi

Tente isto

Query1.Locate(´Horario´,X,[loCaseInsensitive])

Marconi


Responder

Gostei + 0

07/11/2003

Diogoalles

...pessoal nada disso funciona :

Query1.Locate(´Horario´,X,[loCaseInsensitive])
Query1.Locate(´Horario´,X,[loPartialKey])
Query1.Locate(´Horario´,X,[loCaseInsensitive,loPartialKey])


obrigado


Responder

Gostei + 0

07/11/2003

Marcelo.c

Ocorre algum erro ou simplesmente não localiza ?


Responder

Gostei + 0

08/11/2003

Diogoalles

Simplismente não localiza ....
já atribui o valor do X para um TTime, TDateTime, StrTotime, StrToDateTime ..etc... e mesma coisa com o campo ´Horario´ ..
Já utilizei FormatFloat ..etc...

O q vc pensar de coisas simples eu já fiz !

abraço e obrigado

Diogo


Responder

Gostei + 0

10/11/2003

Marconi

O pode estar acontecendo é que a variavel X não tem exatamente o mesmo formato do Campo ´Horario´.

Pare verificar mude o comando de captura da variavel X de

X:=FormConsulta.Query1.FieldByName(´Horario´).AsTime;

para

X:=FormConsulta.Query1[´horario´];

Se os formatos forem diferentes então vai dar erro aqui.

Outra coisa. O comando Locate requer uma variavel Variant, principalmente quando forem mais de um campos. Voce pode tentar assim

Query1.Locate(´Horario´,VarArrayof([X]),[loCaseInsensitive]) ;

Vamos ver se desta vez dá certo.

Marconi


Responder

Gostei + 0

10/11/2003

Diogoalles

Ok pessoal
Funcionou :D
até q enfim ..mas foi barra ..graças as dicas cheguei no ponto X !!!!
declarei a minha variável X com tipo Variant
e fiz ela receber o seguinte
procedure ......
var
X : Variant;
begin
x := Query1HORARIO.Value;
Query1.Locate(´HORARIO´,X,[loCaseInsensitive]);
....
end;

resumindo .. o q matou a charada foi declarar o X como Variant ... que para dar Locate em um campo Time necessariamente precisa ser assim.
pelo menos é o q pude comprovar..

agradecido

Diogo


Responder

Gostei + 0

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

Aceitar