Código
A primeira alternativa que veio a minha cabeça para resolver este problema, foi imaginar passar aspas dentro de aspas, criando um código que considerei bizarro.}
Var
Texto : String;
Begin
Table1.Filter := 'state = '+''''+Texto+'''';
Table1.Filtered := True;
End; {Funcionar, funcionou, mas não me conformei com este monstro. Continuei pensando e tive a idéia de concatenar strings com o caractere AscII correspondente a aspas, acredito que visualmente ainda não era o ideal, porém era menos grotesco e mais fácil de outros programadores entenderem.}
Var
Texto : String;
Begin
Table1.Filter := 'state = '+#39+Texto+#39;
Table1.Filtered := True;
End; {Continuei conjugando a frase: "Funcionar, funcionou, mas não estou ainda 100% satisfeito". Sou um fã incondicional do bom e velho Pascal, e simplesmente não aceitaria este tipo de "gambiarra" para solucionar este enigma. De posse do manual de Object Pascal, comecei a procurar uma solução mais condizente com a categoria do Delphi (Nota do Autor: Categoria muito alta, pois afirmo que o Delphi é a melhor linguagem de desenvolvimento que já conheci). A noite foi virando madrugada, o café foi acabando, a determinação ainda estava forte quando li: QuotedStr. Sabia antes de ler sua definição que havia encontrado a solução, minha palpitação não se enganava. Vamos testar:}
Var
Texto : String;
Begin
Table1.Filter := 'state = '+QuotedStr(Texto);
Table1.Filtered := True;
End; { Um sorriso tomou conta de minha face, sabia que o meu velho amigo Pascal não ia me decepcionar, afinal somos amigos a 6 anos, e defendo ele com unhas e dentes, como realmente deve ser um amigo fiel.
Aproveito para lembrar que você pode também colocar filtros parciais, como por exemplo:}
Var
Texto : String;
Begin
Texto := 'F*';
Table1.Filter := 'state = '+QuotedStr(Texto);
Table1.Filtered := True;
End; {Neste exemplo, todos os estados iniciados pela letra 'F' seriam mostrados em seu DataControls/DBGrid. }
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009