Fórum Locate não funciona #193551
07/11/2003
0
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
Curtir tópico
+ 0Posts
07/11/2003
Marconi
Query1.Locate(´Horario´,X,[loCaseInsensitive])
Marconi
Gostei + 0
07/11/2003
Diogoalles
Query1.Locate(´Horario´,X,[loCaseInsensitive])
Query1.Locate(´Horario´,X,[loPartialKey])
Query1.Locate(´Horario´,X,[loCaseInsensitive,loPartialKey])
obrigado
Gostei + 0
07/11/2003
Marcelo.c
Gostei + 0
08/11/2003
Diogoalles
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
Gostei + 0
10/11/2003
Marconi
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
Gostei + 0
10/11/2003
Diogoalles
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)