SQL

ti17

Power Member
boas..

eu estou a fazer o meu projecto de final de curso..o meu projecto é um gestor escolar, e estou a desenvolver esse projecto em DELPHI.

No meu projecto tenho uma parte que listo todos os cursos existentes, o que eu quero fazer mais nessa mesma listagem, é por uma opção para filtros, para so listar aquilo que queremos, entao eu tenho uma caixa de texto, onde é escrito o nome do curso para depois atraves desse nome, com o SQL vou a base de dados procurar esse nome e deposito o resultado numa GRID. ate aqui todo bem, mas eu queria melhor que isto, queria que quando o utilizador insere uma letra na tal caixa de texto, quero que me mostre todos os cursos começados por essa mesma letra, e sempre que o utilizador inserir letras, que aquilo fosse actualizando, que mostre todos os cursos mas que começem por as letras que sao introduzidas.


sei que tenho que fazer isto no evento da caixa de texto (on change), só nao sei é como fazer, tou a pensar se o SQL tem alguma função que faça isso, ou se o proprio DELPHI tem, eu ainda nao consegui encontrar nada sobre isso..

obg a todos, espero que me tenha explicado bem..
 
Por exemplo,
Código:
SELECT nome FROM cursos WHERE nome LIKE "eng%"
o % é semelhante ao wildcard *.

Toma cuidado com o que metes no LIKE, não vá o diabo (e o SQL Injection) tecê-las ;)
 
De salientar que essa abordagem, vai criar alguma carga no servidor, uma vez que por cada letra digitada, é feita uma query para trazer os resultados e é executado o respectivo preenchimento da grid.

Ex: Curso tecnologico de electronica -> 32 querys (uma por cada letra)

A minha abordagem pessoal a este problema costuma ser diferente.
Crio um timer com 2 segs. Este timer é inicializado em cada click (onchange) de texto. Se nao for escrita nenhuma letra no espaco de 2 segundos, o timer dispara o evento (OnTimer) e executa a query.

Esta abordagem permite que o utilizador escreva o nome do curso e so quando parar de escrever é que a consulta é efectuada.

Um outra alternativa é efectuares a consulta de TODOS os cursos à entrada do form, guardares isso numa lista qualquer, e ir fazendo a leitura nessa lista.

Pessoalmente gosto mais da primeira abordagem.
 
sendo assim como sao apenas nomes de cursos, podes carrega-los todos para o programa e depois efectuar a pesquisa na aplicação. pouparias nas consultas.
 
Concordo, e podes pensar numa espécie de cache (se bem que isso já deve sobrecarregar um pouco o cliente): não carregas tudo inicialmente, mas assim que vão sendo introduzidas letras, as respostas aos queries à BD serão guardadas. Assim, se alguém escreve "EN" fica com tudo o que começa com "EN" gravado; em seguida escreve "H" e tem 0 respostas (erro ao escrever), e quando apaga essa letra, não há um novo query por "EN", porque a resposta já tinha sido dada.
Melhor mesmo é o programa pegar em todas as respostas ao query "EN%", memorizá-las e depois fazer ele mesmo essa verificação.
Não sei se será viável...?
 
Back
Topo