DELPHI – Busca utilizando caracteres (COLLATE) no MS ACCESS

Sabendo-se que a busca ignorando caracteres NÃO FUNCIONA no Microsoft Access, a solução foi criar múltiplos parametros de busca, utilizando a formula a seguir (desenvolvida em Pascal).

//busca inteligente por nomes
strBuscaNome:= '([mensalistas].NomeCliente LIKE "%'+strBusca+'%")';
//áäàãâÁÄÀÃÂ
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'a','á',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'a','ä',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'a','à',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'a','ã',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'a','â',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'A','Á',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'A','Ä',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'A','À',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'A','Ã',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'A','Â',[rfReplaceAll])+'%")';
//éëèêÉËÈÊ
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'e','é',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'e','ë',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'e','è',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'e','ê',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'E','É',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'E','Ë',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'E','È',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'E','Ê',[rfReplaceAll])+'%")';
//íïìîÍÏÌÎ
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'i','í',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'i','ï',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'i','ì',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'i','î',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'I','Í',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'I','Ï',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'I','Ì',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'I','Î',[rfReplaceAll])+'%")';
//óöòõôÓÖÒÕÔ
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'o','ó',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'o','ö',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'o','ò',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'o','õ',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'o','ô',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'O','Ó',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'O','Ö',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'O','Ò',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'O','Õ',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'O','Ô',[rfReplaceAll])+'%")';
//úüùûÚÜÙÛ
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'u','ú',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'u','ü',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'u','ù',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'u','û',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'U','Ú',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'U','Ü',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'U','Ù',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'U','Û',[rfReplaceAll])+'%")';
//çÇ
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'c','ç',[rfReplaceAll])+'%")';
strBuscaNome:=strBuscaNome+' OR ([mensalistas].NomeCliente LIKE "%'+StringReplace(strBusca,'C','Ç',[rfReplaceAll])+'%")';

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*