Campo Varchar com dia e mes quero um select

12/02/2006

Tenho um campo varchar com o dia e mês de aniversario do cliente e preciso fazer um busca de todos os aniversariasntes do mês tal, não consigo fazer o select, se fosse uma data seria facil, mas desta forma não estou conseguindo fazer, alguem tem um exemplo?
Claudio


Dpinho

Respostas

12/02/2006

Dpinho

Esqueci de mencionar a formatação do campo é #/, tipo assim 03/09


Responder Citar

12/02/2006

Joaoshi

Utilizando FireBird

SELECT * FROM SUATABELA WHERE SUBSTRING(MES/ANO FROM 4 FOR 2) = ´09´

Espero ter ajudado.


Responder Citar

16/02/2006

Dpinho

Utilizando FireBird SELECT * FROM SUATABELA WHERE SUBSTRING(MES/ANO FROM 4 FOR 2) = ´09´ Espero ter ajudado.


Não deu certo, não existe substring
tentei utilizar o like, mas não retorna nenhum valor


Responder Citar

16/02/2006

Martins

[quote:379dad4380=´joaoshi´]Utilizando FireBird SELECT * FROM SUATABELA WHERE SUBSTRING(MES/ANO FROM 4 FOR 2) = ´09´ Espero ter ajudado.


Não deu certo, não existe substring
tentei utilizar o like, mas não retorna nenhum valor[/quote:379dad4380]

Qual o seu Banco de Dados?

Acho q Substring é suportado desde a versão 1.0 do Firebird!

Boa sorte!!!


Responder Citar

17/02/2006

Emerson

SELECT
  *
FROM
  SUATABELA
WHERE
  CAMPO LIKE ´¬/mesdesejado´


pelo delphi:
query.sql.text := ´SELECT * FROM SUATABELA ´+
                  ´WHERE CAMPO LIKE :PARAM ´;
query.parambyname(´param´).asstring := ´¬/´ + mesdesejado;
query.open;

no parâmetro é passado o curinga (¬), mais a barra (/) e mais o mês desejado.


Responder Citar

17/02/2006

Martins

SELECT
  *
FROM
  SUATABELA
WHERE
  CAMPO LIKE ´¬/mesdesejado´
pelo delphi:
query.sql.text := ´SELECT * FROM SUATABELA ´+
                  ´WHERE CAMPO LIKE :PARAM ´;
query.parambyname(´param´).asstring := ´¬/´ + mesdesejado;
query.open;
no parâmetro é passado o curinga (¬), mais a barra (/) e mais o mês desejado.


Uma solução no mínimo inteligente, parabéns!!!


Responder Citar

17/02/2006

Dpinho

Estou utilizando assim:

[color=red:da577fff02]DM.Qconsuclie.Close;
DM.Qconsuclie.SQL.Clear;
DM.Qconsuclie.SQL.Text := ´Select * From CLIENTES´;
DM.Qconsuclie.SQL.Add( ´Where upper(ANIVER) like :vNome´);
DM.Qconsuclie.ParamByName(´vNome´).AsString := ´/´ + upperCase(edit1.Text);
DM.Qconsuclie.Open;[/color:da577fff02]

Mas não esta retornando nada


Responder Citar

17/02/2006

Emerson

[b:035e92e175]preste atenção no post![/b:035e92e175]
no parâmetro é passado o curinga (¬), mais a barra (/) e mais o mês desejado.


[color=red:035e92e175][b:035e92e175]onde você colocou o curinga?!?!?!?![/b:035e92e175][/color:035e92e175]

o correto é:
DM.Qconsuclie.ParamByName(´vNome´).AsString := ´[size=18:035e92e175]¬[/size:035e92e175]/´ + upperCase(edit1.Text);


Responder Citar

17/02/2006

Dpinho

dbEpress Error: operation not supported

aparece este erro depois da consullta e abre o relatorio sem registro


Responder Citar

17/02/2006

Emerson

with DM.Qconsuclie do
begin
  Close; 
  SQL.Text := ´Select * From CLIENTES Where ANIVER like :vNome´;
  ParamByName(´vNome´).AsString := ´¬´ + upperCase(edit1.Text);
  Open;
end;

note que edit1.text deve ter somente os dois últimos digitos do ano.
(faça o teste com a barra e sem ela. nesse caso não estou colocando a barra)

eu sempre fiz dessa forma e nunca tive qualquer problema.


Responder Citar

17/02/2006

Dpinho

eu sempre fiz dessa forma e nunca tive qualquer problema.[/quote]


Ja testei com e sem a barra, e dar o mesmo erro. meu edit retorna somente o mes no campo ANIVER tem o cadastro de dia/mes e é um campo varchar


Responder Citar

17/02/2006

Emerson

quais os componentes usados para acesso?

se você estiver usando dbExpress e o retorno estiver ligado à um componente data-aware (grade, dbedit), não vai funcionar, pois a query é unidirecional, enquanto que os componentes data-aware são bi-direcionais. nesse caso a instrução deverá ser executada num clientdataset.

tente isso no IBExpert (ou outra ferramenta de adm do banco que vc esteja usando):
[b:0799445f94]Select * From CLIENTES Where ANIVER like ´¬/09´[/b:0799445f94] (ou um outro mês que você saiba que há registros


Responder Citar