Dúvida com seleção SQL
05/01/2006
0
notei no sistema que estou ´brincando´ em Delphi, que na Seleção SQL que fiz, ela acabou se tornando ´case sensitive´, ou seja, se eu colocar um ´C´ (maiúsculo) no ´LIKE´, ele SÓ vai procurar por ´C´ (Maiúsculo), deixando os ´c´ (Minúsculos) de lado...
há alguma coisa que eu poderia fazer pra corrigir esse problema?!
vlw pela força.
[]s.
Dhiogosilva
Posts
05/01/2006
Techsoft
Não sei qual banco vc está usando, mas eu jah tive estes problemas com um sistema que usava interbase, talvez possa ser um pouco diferente mas no final das contas funciona em todos acredito.
Eu utilizava o comando UPPER dentro do SQL para não passar por este problema...
por exemplo:
SELECT CLIENTE, ENDERECO FROM CLIENTE
WHERE UPPER(CLIENTE) LIKE UPPER(:consulta)
isso faz com que não tenha diferença.. pois independente de como estiver no banco ou como o usuário digitar para pesquisar... vai converter para maiúscula e resolver o problema.
Espero ter ajudado.
05/01/2006
Dhiogosilva
eh exatamente o Interbase que estou usando...
vou testar hj a noite, em casa, amanhã te retorno falando o que aconteceu...
MUITO OBRIGADO!!!!!!
[]s
06/01/2006
Dhiogosilva
deu um erro ´Type Mismatch...´ pode ser que o SQL num reconheça o ´Upper´?! tem outro comando que posso testar?!
vlw pela força!!!
06/01/2006
Techsoft
Neste caso usei o upper no SQL apenas para o campo e não o valor da consulta... o valor precisei passar já em maiúsculo... ai usei antes de enviar o valor para a consulta usando o uppercase do delphi..
Funcionou beleza isso aqui.
Espero ter resolvido o problema, qualquer coisa prende o grito flw!
06/01/2006
Dhiogosilva
mas vou testar a noite... soh mais uma duvida...
pra que serve o ´:CLIENTE´?!
deixa eu ver se entendi... em vez de colocar tudo numa linha soh, o :CLIENTE serve como se fosse um ´apontador´ de variável...
é isso?!
desculpa ser chato desse jeito... mas eu não perguntar, ninguém vai perguntar por mim...
vlw novamente...
[]s
06/01/2006
Techsoft
Por Exemplo:
select * from cliente
where data_cadastro = :data
quando for executar antes do open vai ter
ParamByName(´data´).AsDateTime := date;
Open;
O SQL vai trazer somente os registros que estiverem nesta data... eh bem simples d eusar e muuito util... prefiro usar assim do q colocar no SQL direto.... não preciso me preocupar com formatos de data e nem em colocar as aspas necessárias em caso de string ou algo assim.... ele mesmo coloca... basta informar o tipo de dado que está mandando.
06/01/2006
Dhiogosilva
bacana ver que existem pessoas dispostas a ajudar mesmo!!!
valeu pela explicação... MUITO útil!!!!
[]s, e te retorno o que aconteceu!!! :-D
07/01/2006
Dhiogosilva
dá o tal do ´type mismatch...´
QryMusica.Active := false; QryMusica.SQL.Clear; QryMusica.SQL.Add(´SELECT * FROM musicas WHERE upper(CONTEUDO) LIKE :CONT OR upper(NOME) LIKE :CONT´); QryMusica.ParamByName(´CONT´).AsString :=´¬´+edit1.text+´¬´; QryMusica.Active := true;
tem algo errado?!
07/01/2006
Dhiogosilva
dá o tal do ´type mismatch...´
QryMusica.Active := false; QryMusica.SQL.Clear; QryMusica.SQL.Add(´SELECT * FROM musicas WHERE upper(CONTEUDO) LIKE :CONT OR upper(NOME) LIKE :CONT´); QryMusica.ParamByName(´CONT´).AsString :=´¬´+edit1.text+´¬´; QryMusica.Active := true;
tem algo errado?!
tou usando Delphi 7.0, com um arquivo .DB
vlw... []s
07/01/2006
Techsoft
Criei aki uma tabela musicas do tipo paradox 7 tentando criar algo próximo da tua situação, aqui funcionou da seguinte forma:
Tenta substituir aquele teu código por isso e veja se vai funcionar, aqui ficou OK.
Qualquer coisa manda a tabela para o meu e-mail techsoft@terra.com.br que eu dou uma olhada e faço um teste com ela... a princípio aqui funcionou d boa!
07/01/2006
Techsoft
09/01/2006
Dhiogosilva
creio q o problema estava no banco...
mas deixa eu explicar o pq... :-D
como havia iniciado o sistema com um .DBF, achei que seria melhor terminar por ele tb... aí, peguei as informações da um banco .MDB, e simplesmente exportei com o Access... como esperado o banco veio cheio de problemas, mas mesmo assim coloquei ele pra rodar... mas aí começaram a surgir problemas...
entaum pra corrigir esses problemas (além do problema da seleção..) procurei um software pra fazer a conversao...
e após usá-lo TUDO voltou ao normal...
portanto galera... TOMEM CUIDADO com o Banco de Dados... não criem simplesmente... analisem... e não façam de qq jeito... pois eh NELE que estarão as informações de seu sistema...
blz...
vlw mais uma vez Fernando...
[]s.
09/01/2006
Techsoft
Abraço!
12/02/2006
Dpinho
[color=red:6b6bf89a25] 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;
ShowMessage(´Cliente ´+DM.Qconsuclie.FieldByName(´Nome´).AsString);
Form_relaniver:= TForm_relaniver.Create(Self);
Form_relaniver.QuickRep1.Preview;[/color:6b6bf89a25]
Porem não retornar nada do banco, e tenho um registro com o campo preenchido assim 03/09, no edit passo 09. e quando mando imprimir dar um erro DBExpress Operação não suportada. tenho urgencia em resolver isto, prciso fazer um relatorio de aniversariasnte e no cadastro coloco os dandos tipo 03/09 como data de aniversario.
alguem me ajude por favor
Clique aqui para fazer login e interagir na Comunidade :)