Fórum Duvidas sobre consulta. #445096
10/06/2013
0
1- Estou fazendo um pequeno programa de loteria em Delphi 7 e quero colocar "Atualizações Automaticas", ao clickar de 1 botão, dos resultados, pois, digitar manualmente é muita coisa. Não tenho idéia de como se faz.
2- Supondo que meus resultados de lotofacil já estejam atualizados, preciso que, por exemplo:
Quando eu digitar o numero 1, ele me mostra no DBGRID todos os concursos que saiu o numero 1.
Se eu digitar tambem o numero 5, ele me mostra todos os concursos que sairam o numero 1 e o numero 5, e assim por diante, até eu digitar os 15 numeros.
Tentei fazer no SQL, mas, os concursos são sorteados aleatoriamente. Criei no Interbase 15 campos strings iguais, fora os outros(nro. do concurso, data...) para armazenar os numeros. (manualmente por enquanto)
Não consigo fazer ele comparar o numero que digito com os 15 numeros do sorteio.
Por favor, me ajudem. Desde já, obrigado.
Anderson
Curtir tópico
+ 0Posts
11/06/2013
Joel Rodrigues
Gostei + 0
11/06/2013
Joel Rodrigues
Algo do tipo: SELECT * FROM CONCURSOS WHERE NUMERO_1 = :numero OR NUMERO_2 = :numero OR NUMERO_3 = :numero
e por aí vai, para os 15 números.
Gostei + 0
11/06/2013
Guilherme Wiethaus
Se você for digitar em um Edit de pesquisa. Pode ser em 2 casos, colocando seu script de Sql quando pressionando um botão de pesquisa (Evento OnClick) ou ao digitar no edit (evento onChange).
sql:= 'SELECT NrConcurso, Numero FROM Concursos WHERE Numero = ' + Edit1.Text;
Como processar o Sql, subentende que saiba fazer isto.
Gostei + 0
11/06/2013
Anderson
Em primeiro, obrigado pela atenção.
Atualizações automáticas é "clikar em 1 botão" e baixar os resultados direto do site da Caixa Economica Federal.
Digitar todos os concursos manualmente é "bravo" porque são mais de 1500 concursos até agora. (cada concurso são 6 numeros)
Agora você imagina Lotomania que são 20 numeros.
Gostei + 0
11/06/2013
Anderson
Algo do tipo: SELECT * FROM CONCURSOS WHERE NUMERO_1 = :numero OR NUMERO_2 = :numero OR NUMERO_3 = :numero
e por aí vai, para os 15 números.
Eu segui essa linha de raciocinio, mas não deu certo. Entretanto, se você está dizendo, é porque eu estava no caminho certo.
Devo ter me enganado em alguma parte.
Vou tentar outra vez com mais atenção. Mais adiante, posto o resultado. Obrigado mais uma vez. Um abraço.
Gostei + 0
11/06/2013
Anderson
Se você for digitar em um Edit de pesquisa. Pode ser em 2 casos, colocando seu script de Sql quando pressionando um botão de pesquisa (Evento OnClick) ou ao digitar no edit (evento onChange).
sql:= 'SELECT NrConcurso, Numero FROM Concursos WHERE Numero = ' + Edit1.Text;
Como processar o Sql, subentende que saiba fazer isto.
Oi Guilherme. Obrigado pela atenção.
No caso tenho 15 campos NUN_Lotofacil iguais. Pra comparar, criei 15 campos "Edit.text" + 1 "Bottom". Lembre-se que a medida que vou digitando 1 numero em cada "Edit.text" (no caso, de 1 a 25)e cliko o "Bottom", ele vai buscando os concursos que possuem tais numeros. Por favor, me perdoem se não consegui expressar direito minha duvida. Valeu a atenção. Um abraço. Fico no aguardo com mais idéias.
Gostei + 0
11/06/2013
Guilherme Wiethaus
Primeiro você pode guardar seus números em um campo único:
Concursos.Numeros => '01 02 14 18 27 28 30'
Note separados por espaço...nao tem problema
Você pode fazer rotinas Function ou Stored para fazer parser também quando houver necessidade para pegar um único número.
FN_GetNumberLoto(NUM, 3) --> '14'
É um exemplo. Outra maneira é pegar o NUM e fazer um parser para os campos de edit's ou StringGrid, na aplicação e não no banco como o exemplo acima.
value_result:= GetNumberLoto(value_Num, 3); //Precisará fazer esta função, nada difícil :-)
Na hora de juntar tudo, quando pressionar um botão OK, por exemplo para o edit:
value_Num:= Trim(Edit1.Text) + ' ' + Trim(Edit2.Text) + ' ' + ...
Edit pode acabar digitando um numero unico, entao faca uma funcao que coloca zeros a frente:
value_NumberLoto:= PadLeft(Trim(Edit1.Text), 2) + ' ' + PadLeft(Trim(Edit2.Text)) + ' ' + ...
Facilmente encontrado pela web e também nada difícil de se fazer, meia dúzia de linhas apenas pra fazer este PadLeft();
Assim no banco você precisaria apenas de um campo para armazenar tantos números quanto necessário.
Outra funcao interessante que se pdoe contruir é retornar a quantidade de números existentes separados por espacos:
value_Count:= CountNumberLoto(value_Number);
Após isto fica mais fácil fazer o sql:
sql:= 'SELECT NrConcurso, Numeros FROM Concursos WHERE Numeros = %' + PadLeft(Trim(EDTSearchNum.Text)) + '%';
Experimente e veja o resultado. É uma das soluções.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)