COMANDO LOCALIZAR
Tenho no banco uma coluna que esta sendo salva da seguinte maneira:
Banco FireBird
1-3-4-5-6-7-8-9-10-11-12-13-14-15
[Ô]salva somente 15 números[Ô]
quando digitar algum valor em um text1.text por exemplo
1-3-5-7-9-2-4-6-7-15-23-22-21
Verificar no banco todos os registros que contenham esses números e retorna-los em um listview.
como monto isso.
Banco FireBird
1-3-4-5-6-7-8-9-10-11-12-13-14-15
[Ô]salva somente 15 números[Ô]
quando digitar algum valor em um text1.text por exemplo
1-3-5-7-9-2-4-6-7-15-23-22-21
Verificar no banco todos os registros que contenham esses números e retorna-los em um listview.
como monto isso.
não entendi explica isso com um exemplo.
tenho um registro com 15 números.
na busca vo digitar 11,12,13,14,15 números ai quero verificar todos sos registros salvos com esses números.
Exemplo;
tenho salvo.
1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
1-3-4-5-6-8-9-10-16-13-14-15-19-22-25
1-3-4-5-6-8-9-10-17-13-14-15-19-22-25
1-3-4-5-6-8-9-10-18-13-14-15-19-22-25
1-3-4-5-6-8-9-10-11-13-14-15-21-22-25
e eu localizasse com os valores
1-3-4-5-6-8-9-10-13-14-15-19
teria que me trazer todos os registros que contenham esses valores.
to tentando monta um esquema onde vejo todas as possibilidades de jogar
uma certa sequencia e tentaria localizar pelo ultimo sorteio ai eu saberia quantas vezes eu ganharia
na busca vo digitar 11,12,13,14,15 números ai quero verificar todos sos registros salvos com esses números.
Exemplo;
tenho salvo.
1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
1-3-4-5-6-8-9-10-16-13-14-15-19-22-25
1-3-4-5-6-8-9-10-17-13-14-15-19-22-25
1-3-4-5-6-8-9-10-18-13-14-15-19-22-25
1-3-4-5-6-8-9-10-11-13-14-15-21-22-25
e eu localizasse com os valores
1-3-4-5-6-8-9-10-13-14-15-19
teria que me trazer todos os registros que contenham esses valores.
to tentando monta um esquema onde vejo todas as possibilidades de jogar
uma certa sequencia e tentaria localizar pelo ultimo sorteio ai eu saberia quantas vezes eu ganharia
[Ô]Select Campo From Tabala Where Campo in([ô][Ô] & replace([Ô]1-3-4-5-6-7-8-9-10-11-12-13-14-15[Ô],[Ô]-[Ô],[Ô],[Ô]) & [Ô][ô])[Ô]
resultado final fica
Select Campo From Tabala Where Campo in([ô]1,3,4,5,6,7,8,9,10,11,12,13,14,15[ô])
resultado final fica
Select Campo From Tabala Where Campo in([ô]1,3,4,5,6,7,8,9,10,11,12,13,14,15[ô])
assim?
[Ô]Select Campo From Tabala Where Campo in([ô][Ô] & replace [ô][Ô] & ucase(text1.text) & [ô][Ô])[Ô]
[Ô]Select Campo From Tabala Where Campo in([ô][Ô] & replace [ô][Ô] & ucase(text1.text) & [ô][Ô])[Ô]
[Ô]Select Campo From Tabala Where Campo in([ô][Ô] & replace(text1.text,[Ô]-[Ô],[Ô],[Ô]) & [ô][Ô])[Ô]
Testei seu cogigo mas diz que não contem nenhum registro com esse valor
Acho que me expressei mal.
tenho 15 números distinto no banco de dados salvos da seguinte maneira.
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
preciso localizar nos registros todos os registros que contenham esses valores
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
Ex:
1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
1-3-4-5-6-8-9-10-16-13-14-15-19-22-25
1-3-4-5-6-8-9-10-17-13-14-15-19-22-25
1-3-4-5-6-8-9-10-18-13-14-15-19-22-25
1-3-4-5-6-8-9-10-11-13-14-15-21-22-25
localizar
1-3-8-9-11-14-15-16-19-21-22
Mais não na ordem digitada pra busca, terei que verificar todo os registros e se conter algum desses ou todos eles me retorna-no.
ceio que o comando contendo seria melhor.mas n sei montalo
Acho que me expressei mal.
tenho 15 números distinto no banco de dados salvos da seguinte maneira.
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
preciso localizar nos registros todos os registros que contenham esses valores
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
Ex:
1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
1-3-4-5-6-8-9-10-16-13-14-15-19-22-25
1-3-4-5-6-8-9-10-17-13-14-15-19-22-25
1-3-4-5-6-8-9-10-18-13-14-15-19-22-25
1-3-4-5-6-8-9-10-11-13-14-15-21-22-25
localizar
1-3-8-9-11-14-15-16-19-21-22
Mais não na ordem digitada pra busca, terei que verificar todo os registros e se conter algum desses ou todos eles me retorna-no.
ceio que o comando contendo seria melhor.mas n sei montalo
KELVINCD como que ficou o seu código, posta ai para a gente dar uma olhada, pois o que o nosso amigo LUIZCOMINO esta correto.
Alguma observações
Primeiro como que será feita essa busca, o usuário vai digitar o código no text e vai ser feita a busca individualmente?
Segundo o seu campo código é do tipo número?
Se a resposta for sim para os dois itens, o seu código não precisa do replace ele ficaria dessa forma
[Ô]Select * from tabela where codigo = [Ô] & text1.text
Caso a resposta seja não para a segunda pergunta
[Ô]Select * from tabela where codigo = [ô][Ô] & text1.text & [Ô][ô][Ô]
Caso a busca não seja feita individualmente, use o código do LUIZCOMINO, más tenha o cuidado com o seguinte, o comando IN aceita apenas a separação feita por vÃrgula e se por acaso o usuário usar ; no lugar de -, o comando não irá funcionar
Eu estava lendo novamente e se no seu campo estiver cadastrado dessa forma 1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
faça uma mudança no comando, use o LIKE, ficaria assim
[Ô]Select * from tabela where codigo LIKE [ô][Ô] & text1.text & [Ô]%[ô][Ô]
Dessa forma a cada número digitado ele fará a busca, más tome cuidado com o a separação dos número, caso use ; no lugar de - não vai trazer nada que venha depois do ; ex:
1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
1-3-4-5-6-8-9-10-16-13-14-15-19-22-25
1-3-4-5-6-8-9-10-17-13-14-15-19-22-25
1-3-4-5-6-8-9-10-18-13-14-15-19-22-25
1-3-4-5-6-8-9-10-11-13-14-15-21-22-25
Caso digite
1;3;8;9;11;14;15;16;19;21;22
Ele vai trazer todos, porque vai encontrar o primeiro caracter 1
Qqer coisa posta ai
Alguma observações
Primeiro como que será feita essa busca, o usuário vai digitar o código no text e vai ser feita a busca individualmente?
Segundo o seu campo código é do tipo número?
Se a resposta for sim para os dois itens, o seu código não precisa do replace ele ficaria dessa forma
[Ô]Select * from tabela where codigo = [Ô] & text1.text
Caso a resposta seja não para a segunda pergunta
[Ô]Select * from tabela where codigo = [ô][Ô] & text1.text & [Ô][ô][Ô]
Caso a busca não seja feita individualmente, use o código do LUIZCOMINO, más tenha o cuidado com o seguinte, o comando IN aceita apenas a separação feita por vÃrgula e se por acaso o usuário usar ; no lugar de -, o comando não irá funcionar
Eu estava lendo novamente e se no seu campo estiver cadastrado dessa forma 1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
faça uma mudança no comando, use o LIKE, ficaria assim
[Ô]Select * from tabela where codigo LIKE [ô][Ô] & text1.text & [Ô]%[ô][Ô]
Dessa forma a cada número digitado ele fará a busca, más tome cuidado com o a separação dos número, caso use ; no lugar de - não vai trazer nada que venha depois do ; ex:
1-3-4-5-6-8-9-10-11-13-14-15-19-22-25
1-3-4-5-6-8-9-10-16-13-14-15-19-22-25
1-3-4-5-6-8-9-10-17-13-14-15-19-22-25
1-3-4-5-6-8-9-10-18-13-14-15-19-22-25
1-3-4-5-6-8-9-10-11-13-14-15-21-22-25
Caso digite
1;3;8;9;11;14;15;16;19;21;22
Ele vai trazer todos, porque vai encontrar o primeiro caracter 1
Qqer coisa posta ai
Aqui vai meu codigo:
lembrando uso banco firebird os dados são gravados da seguinte maneira:
Campo no banco se chama jogo do tipo varchar, nome da tabela teste
1 - 3 - 4 - 5 - 6 - 8 - 9 - 10 - 11 - 13 - 14 - 15 - 19 - 22 - 25
Private Sub Text17_lostfocus()
Text17 = Replace(Text17, [Ô]-[Ô], [Ô];[Ô]) [ô] posso formatar aqui da maneira que precisar ser no banco
End Sub
Private Sub Command2_Click()
Call locajogo
End Sub
Private Sub locajogo()
Dim item As ListItem
Dim aSQL As String
aSQL = ([Ô]Select * from teste where jogo LIKE [ô][Ô] & Text17.Text & [Ô]%[ô][Ô])
ListView1.ListItems.Clear
Set rsDados = New ADODB.Recordset
rsDados.CursorLocation = vCursorLocation
rsDados.CursorType = vCursorType
rsDados.LockType = vLockTypeLeitura
rsDados.Source = aSQL
rsDados.ActiveConnection = dados
Debug.Print (aSQL)
rsDados.Open
If rsDados.EOF = False Or rsDados.BOF = False Then
Do While Not rsDados.EOF
Set item = ListView1.ListItems.Add(, , (rsDados([Ô]jogo[Ô])))
rsDados.MoveNext
Loop
ListView1.Enabled = True
Else
MsgBox [Ô]Nenhum registro foi encontrado. Tente novamente![Ô], vbInformation, [Ô]Procurando...[Ô]
ListView1.Enabled = False
End If
rsDados.Clone
Set rsDados = Nothing
End Sub
lembrando uso banco firebird os dados são gravados da seguinte maneira:
Campo no banco se chama jogo do tipo varchar, nome da tabela teste
1 - 3 - 4 - 5 - 6 - 8 - 9 - 10 - 11 - 13 - 14 - 15 - 19 - 22 - 25
Private Sub Text17_lostfocus()
Text17 = Replace(Text17, [Ô]-[Ô], [Ô];[Ô]) [ô] posso formatar aqui da maneira que precisar ser no banco
End Sub
Private Sub Command2_Click()
Call locajogo
End Sub
Private Sub locajogo()
Dim item As ListItem
Dim aSQL As String
aSQL = ([Ô]Select * from teste where jogo LIKE [ô][Ô] & Text17.Text & [Ô]%[ô][Ô])
ListView1.ListItems.Clear
Set rsDados = New ADODB.Recordset
rsDados.CursorLocation = vCursorLocation
rsDados.CursorType = vCursorType
rsDados.LockType = vLockTypeLeitura
rsDados.Source = aSQL
rsDados.ActiveConnection = dados
Debug.Print (aSQL)
rsDados.Open
If rsDados.EOF = False Or rsDados.BOF = False Then
Do While Not rsDados.EOF
Set item = ListView1.ListItems.Add(, , (rsDados([Ô]jogo[Ô])))
rsDados.MoveNext
Loop
ListView1.Enabled = True
Else
MsgBox [Ô]Nenhum registro foi encontrado. Tente novamente![Ô], vbInformation, [Ô]Procurando...[Ô]
ListView1.Enabled = False
End If
rsDados.Clone
Set rsDados = Nothing
End Sub
acredito que o IN seja o caminho teste assim
repare que coloquei cada valor diretamente na query teste assim e veja se retorna o resultado esperado, dando certo resolveremos o resto
[Ô]Select Campo From Tabala Where Campo in([ô]1[Ô],[ô]3[ô],[ô]4[ô],[ô]5[ô],[ô]6[ô],[ô]8[ô],[ô]9[ô],[ô]10[ô],[ô]13[ô],[ô]14[ô],[ô]15[ô],[ô]19[ô])[Ô]
repare que coloquei cada valor diretamente na query teste assim e veja se retorna o resultado esperado, dando certo resolveremos o resto
Não retorna nenhum valor.
So queria que localizase no banco os campos que contenham os valores que digitar mas não necessariamente na ordem na ordem digitada
So queria que localizase no banco os campos que contenham os valores que digitar mas não necessariamente na ordem na ordem digitada
Tópico encerrado , respostas não são mais permitidas