LOCALIZAR REGISTRO NO BANCO
Boas pessoas.
Tenho um banco frebird com uma tabela com os seguintes campos.
N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
quando eu digitar algum valor em um textbox
Ex: 1-2-4-5-6-9-10-11-14-16-19-2-23-25 (dessa maneira sera feita a consulta)
me retornar todos os dados que contenham esses valores mas não necessariamente na ordem digitada.
So me diga o que tenho que fazer e não como fazer.
Tenho um banco frebird com uma tabela com os seguintes campos.
N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
quando eu digitar algum valor em um textbox
Ex: 1-2-4-5-6-9-10-11-14-16-19-2-23-25 (dessa maneira sera feita a consulta)
me retornar todos os dados que contenham esses valores mas não necessariamente na ordem digitada.
So me diga o que tenho que fazer e não como fazer.
assim
só faça a as adaptações para sua necessidade
Dim Consulta As String
Dim Dezenas() As String
Dim Cont As Integer
Consulta = [Ô]1-2-4-5-6-9-10-11-14-16-19-2-23-25[Ô]
Dezenas = Split(Consulta, [Ô]-[Ô])
Cont = 0
For f= 0 To UBound(Dezenas) - 1
sql = [Ô]SELECT * FROM tabela WHERE n1 = [ô][Ô] & Dezenas(f) & [Ô] OR n2 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n3 = [ô][Ô] & Dezenas(f) & _
[Ô][ô] OR n4 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n5 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n6 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n7 = [ô][Ô] & Dezenas(f) & _
[Ô][ô] OR n8 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n9 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n10 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n11 = [ô][Ô] & Dezenas(f) & _
[Ô][ô] OR n12 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n13 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n14 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n15 = [ô][Ô] & Dezenas(f) & [Ô][ô][Ô]
Set RS = Con.Execute(sql)
If Not (Rs.EOf and RS.BOF) then
Cont = Cont + 1
End If
Next F
Msgbox [Ô]Você acertou um total de [Ô] & Format(Cont,[Ô]00[Ô]) & [Ô] entre 15 dezenas[Ô]
só faça a as adaptações para sua necessidade
Funciona perfeitamente para o primeiro registro vo altera pra verificar o banco todo e salvar um uma tabela temporária o resultado para depois enviar para um listview somente o que eu preciso.
obrigado.
obrigado.
veja como uso no programa.
estrutura da tabela
id | nojogo | concurso | n1 | n2 | n3 ....n15
select
ou seja
quando me retornar ja me retorna o jogo feito naquele concurso
estrutura da tabela
id | nojogo | concurso | n1 | n2 | n3 ....n15
select
sql = [Ô]SELECT * FROM tabela WHERE concurso = [ô][Ô] & concurso & [Ô][ô] AND n1 = [ô][Ô] & Dezenas(f) & [Ô] OR n2 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n3 = [ô][Ô] & Dezenas(f) & _
[Ô][ô] OR n4 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n5 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n6 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n7 = [ô][Ô] & Dezenas(f) & _
[Ô][ô] OR n8 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n9 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n10 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n11 = [ô][Ô] & Dezenas(f) & _
[Ô][ô] OR n12 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n13 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n14 = [ô][Ô] & Dezenas(f) & [Ô][ô] OR n15 = [ô][Ô] & Dezenas(f) & [Ô][ô][Ô]
ou seja
quando me retornar ja me retorna o jogo feito naquele concurso
estou tentando fazer o seu códio percorrer todo o banco pegando os dados salvos e verificar o total de pontos de cada registro.
qual resultado que ele te deu até agora
Fico assim:
Private Sub locajogo()
Dim Consulta As String
Dim Dezenas() As String
Dim Cont As Integer
Consulta = Text17.Text
Dezenas = Split(Consulta, [Ô]-[Ô])
Dim item As ListItem
Dim aSQL As String
aSQL = [Ô]SELECT *FROM teste T ORDER BY T.ID DESC[Ô]
Set rsDados = New ADODB.Recordset
rsDados.CursorLocation = vCursorLocation
rsDados.CursorType = vCursorType
rsDados.LockType = vLockTypeLeitura
rsDados.Source = aSQL
rsDados.ActiveConnection = dados
rsDados.Open
If rsDados.EOF = False Or rsDados.BOF = False Then
Do While Not rsDados.EOF
Cont = 0
For F = 0 To UBound(Dezenas)
BSQL = [Ô]SELECT * FROM teste WHERE n1 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n2 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n3 = [ô][Ô] & Dezenas(F) & _
[Ô][ô] OR n4 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n5 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n6 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n7 = [ô][Ô] & Dezenas(F) & _
[Ô][ô] OR n8 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n9 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n10 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n11 = [ô][Ô] & Dezenas(F) & _
[Ô][ô] OR n12 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n13 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n14 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n15 = [ô][Ô] & Dezenas(F) & [Ô][ô][Ô]
Cont = Cont + 1
Next F
SQL = [Ô]INSERT INTO TESTEs (N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15,pontos) VALUES ([Ô]
If Trim(rsDados([Ô]n1[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n1[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n2[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n2[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n3[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n3[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n4[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n4[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n5[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n5[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n6[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n6[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n7[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n7[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n8[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n8[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n9[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n9[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n10[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n10[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n11[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n11[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n12[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n12[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n13[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n13[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n14[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n14[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n15[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n15[Ô]) & [Ô], [Ô]
End If
SQL = SQL & Cont & [Ô]) [Ô]
dados.BeginTrans
dados.Execute SQL
dados.CommitTrans
Debug.Print (SQL)
rsDados.MoveNext
Loop
rsDados.Clone
Set rsDados = Nothing
End If
End Sub
So tem um probleminha ele sempre traz a quantidade de números que eu estou pesquisando e não quantos números foram encontrados.
Private Sub locajogo()
Dim Consulta As String
Dim Dezenas() As String
Dim Cont As Integer
Consulta = Text17.Text
Dezenas = Split(Consulta, [Ô]-[Ô])
Dim item As ListItem
Dim aSQL As String
aSQL = [Ô]SELECT *FROM teste T ORDER BY T.ID DESC[Ô]
Set rsDados = New ADODB.Recordset
rsDados.CursorLocation = vCursorLocation
rsDados.CursorType = vCursorType
rsDados.LockType = vLockTypeLeitura
rsDados.Source = aSQL
rsDados.ActiveConnection = dados
rsDados.Open
If rsDados.EOF = False Or rsDados.BOF = False Then
Do While Not rsDados.EOF
Cont = 0
For F = 0 To UBound(Dezenas)
BSQL = [Ô]SELECT * FROM teste WHERE n1 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n2 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n3 = [ô][Ô] & Dezenas(F) & _
[Ô][ô] OR n4 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n5 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n6 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n7 = [ô][Ô] & Dezenas(F) & _
[Ô][ô] OR n8 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n9 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n10 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n11 = [ô][Ô] & Dezenas(F) & _
[Ô][ô] OR n12 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n13 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n14 = [ô][Ô] & Dezenas(F) & [Ô][ô] OR n15 = [ô][Ô] & Dezenas(F) & [Ô][ô][Ô]
Cont = Cont + 1
Next F
SQL = [Ô]INSERT INTO TESTEs (N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15,pontos) VALUES ([Ô]
If Trim(rsDados([Ô]n1[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n1[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n2[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n2[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n3[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n3[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n4[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n4[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n5[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n5[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n6[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n6[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n7[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n7[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n8[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n8[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n9[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n9[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n10[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n10[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n11[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n11[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n12[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n12[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n13[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n13[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n14[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n14[Ô]) & [Ô], [Ô]
End If
If Trim(rsDados([Ô]n15[Ô])) <> [Ô][Ô] Then
SQL = SQL & rsDados([Ô]n15[Ô]) & [Ô], [Ô]
End If
SQL = SQL & Cont & [Ô]) [Ô]
dados.BeginTrans
dados.Execute SQL
dados.CommitTrans
Debug.Print (SQL)
rsDados.MoveNext
Loop
rsDados.Clone
Set rsDados = Nothing
End If
End Sub
So tem um probleminha ele sempre traz a quantidade de números que eu estou pesquisando e não quantos números foram encontrados.
é possivel você postar ou enviar por email o programa com o banco? pois ainda veja um erro na lógica só não sei dizer onde.
tem como acessa meu pc a noite ai te explico certo oq esta acontecendo.
Fiquei curioso.
Explica.
dados.BeginTrans
dados.Execute SQL
dados.CommitTrans
Debug.Print (SQL)
rsDados.MoveNext
Loop
[txt-color=#e80000]rsDados.Clone[/txt-color]
Set rsDados = Nothing
Não entendi.
Valeu.
Explica.
dados.BeginTrans
dados.Execute SQL
dados.CommitTrans
Debug.Print (SQL)
rsDados.MoveNext
Loop
[txt-color=#e80000]rsDados.Clone[/txt-color]
Set rsDados = Nothing
Não entendi.
Valeu.
rsDados.Clone
ultilizo como uma copia exata, sincronizada de um obj RecordSet existente.
ultilizo como uma copia exata, sincronizada de um obj RecordSet existente.
Tópico encerrado , respostas não são mais permitidas