03/04/2006

Locate em parte de um campo tipo Date

Bom dia, gente...

Essa está meio difícil...

Necessito fazer uma busca em uma chave composta por três campos, sendo que um deles é do tipo Date, em uma tabela do ACCESS 2000.
O problema, porém, é que necessito fazer a busca por parte da data (somente pelo mês). O LOCATE não está aceitando algo do tipo:

dm.tbRep.Locate(´ + FormatDateTime(´mm´,Data) + ´;Cod_Aluno;Cod_Tipo´,varArrayOf([wMes,CodigoAlu,2]),[]);

As mensagens:

Not enough actual parameters; (cursor parando sobre o parâmetro ´mm´
Unterminated string;

Alguém tem alguma idéia de como fazer esta busca ?

Grato.

[b:bebd3cbf2f][color=blue:bebd3cbf2f]Título do tópico editado por Vinicius2K:[/color:bebd3cbf2f][/b:bebd3cbf2f] [b:bebd3cbf2f][color=red:bebd3cbf2f][list:bebd3cbf2f][*:bebd3cbf2f]Título inteiramente em maiúsculas: ´LOCATE EM PARTE DE UM CAMPO DO TIPO DATE´[/list:u:bebd3cbf2f][/color:bebd3cbf2f][/b:bebd3cbf2f] Peço que leia atentamente as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] e se algum esclarecimento sobre o funcionamento do fórum ou sobre as Regras de Conduta for necessário, envie-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=2796]Mensagem Particular[/url].



Adalberto

Respostas

03/04/2006

Rjun

Não dá pra fazer o que você está querendo com o Locate. Você teria que fazer isso via código, com um WHILE por exemplo.


Responder Citar

04/04/2006

Silvio Ribeiro

Não dá pra fazer o que você está querendo com o Locate. Você teria que fazer isso via código, com um WHILE por exemplo.

Realmente com locate nao dá.
Com while, dependendo do tamanho da tabela tb fica inviável. Usa uma query.

Faz um select puxando os dados da tabela q vc ta querendo, e no where vc coloca os campos q vc quer achar no locate:

select * from nome_da_tabela
where cod_aluno=:aluno and cod_tipo=:tipo and MONTH(data)=:mes;


ai eh so passar os parametros pra query assim:
// levando em conta q vc ta usando a paleta ado...
query1.close;
query1.params.parambyname(´ALUNO´).Value := edtAlunoCod.text;
query1.params.parambyname(´TIPO´).Value := edtTipoCOd.text;
query1.params.parambyname(´MES´).Value := edtMes.text;
query1.open;


Tenta ai. qq coisa retorna o post! ;D

abraçços

Silvio Ribeiro
Joao Pessoa - PB[/code]


Responder Citar

04/04/2006

Adalberto

[b:ac9fbb33d1]Valeu Silvio !!![/b:ac9fbb33d1] :D

Com a query funcionou legal...


[b:ac9fbb33d1]Obrigado.[/b:ac9fbb33d1]

[]´s.


Adalberto


Responder Citar

04/04/2006

Acacio

Na query tem um evento chamado FilterRecord
nele tem a variável Accept
ali voce pode colocar a parte da data que deseja

exemplo
coloque a propriedade filtered como true;
Accept := pos(´11/11´,query.fieldbyname(campodata.text) > 0


Responder Citar