Fórum Locate não suporta campo calculado? #298910
10/10/2005
0
Está acontecendo um coisa q achei um pouco estranha. Qdo eu coloco no locate pra buscar um campo calculado ele dá erro dizendo q não é possível utilizar o campo em uma expressão de filtro ( :? ). Não sei o q fazer... Existe algum outro método q seja semelhante ao locate ou eu estou fazendo algo errado mesmo? Para q não fique dúvidas em relação ao me código, o q eu escrevi foi:
cdsTotalSemana.Locate(´campo_data;campo_calculated´,VarArrayOf([var1,var2]), []);
Obrigado pela atenção.
Lero
Curtir tópico
+ 0Posts
10/10/2005
Gandalf.nho
Gostei + 0
10/10/2005
Adriano Santos
Tah certo, o Locate não possibilita a pesquisa em campos calculados uma vez que eles são dependentes de Scroll, ou seja, sao atualizados de acordo com a movimentação do ponteiro.
Tente dar uma olhada nas funções
FindKey e FindNeareast, mas acredito que tenham a mesma dificuldade.
Gostei + 0
10/10/2005
Lero
Valew pela ajuda.
Gostei + 0
10/10/2005
Adriano Santos
tah, posta a resposta pra gente depois.
[]s
Gostei + 0
10/10/2005
Lero
Não tem muito segredo a solução q eu fiz. Na verdade acho até um pouco ´porco´, mas não tive outra escolha. Qdo tentei utilizar o internal calc ele dá um erro dizendo q não há memória insuficiente para abrir o dataset. Então utilizei a técnica de ´scan´, q é a seguinte:
with Dataset do begin First; achou := False; while not Eof do begin If (DatasetValor1.Value = Valor1) and (DatasetValor2.Value = Valor2) then begin achou := True; Break; end; Next; end; end;
Aí eu coloco o valor q quero buscar, se achar ele já vai estar na posição q eu kero no dataset e vai confirmar para uma condição o valor do boolean ´achou´. Dependendo do valor do ´achou´ o programa vai fazer um cálculo específico.
Como o dataset sempre terá, no máximo, uns 30 registros esse código não vai comprometer o desempenho. Mas pra quem tem um noção de complexidade de algoritimo vai perceber q ele não é muito eficiente, pois no case de ter uns 100.000 registros ele seria muuuuuito lento, principalmente se o registro q eu procuro estiver no fim do dataset. É por isso q acho uma solução meio porca, mas se o client dataset não permite fazer uma busca com os métodos internos, é a forma mais simples de fazer uma busca dos dados.
Valew pela atenção.
Gostei + 0
10/10/2005
Adriano Santos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)