FILTRAR REGISTROS
bom estou filtrando com o seguinte código
If Combo1.Text = "Biologia" Then
Data1.RecordSource = "Select * from Biologia where ano like '*" & Combo2.Text & "'"
Data1.Refresh
DBGrid1.Refresh
so que no esta filtrando será porque este código esva num outro projeto e filtrando texto e para numero é diferente
o que seria
If Combo1.Text = "Biologia" Then
Data1.RecordSource = "Select * from Biologia where ano like '*" & Combo2.Text & "'"
Data1.Refresh
DBGrid1.Refresh
so que no esta filtrando será porque este código esva num outro projeto e filtrando texto e para numero é diferente
o que seria
para número
Data1.RecordSource = "Select * from Biologia where ano like " & Combo2.Text
para texto
Data1.RecordSource = "Select * from Biologia where ano like '" & Combo2.Text & "'"
caso queria todos que iniciem com o valor de combo2.text (tanto faz número ou texto):
Data1.RecordSource = "Select * from Biologia where ano like '" & Combo2.Text & "%'"
caso queria todos que tenham o valor de combo2.text em qualquer posição (tanto faz número ou texto):
Data1.RecordSource = "Select * from Biologia where ano like '%" & Combo2.Text & "%'"
Data1.RecordSource = "Select * from Biologia where ano like " & Combo2.Text
para texto
Data1.RecordSource = "Select * from Biologia where ano like '" & Combo2.Text & "'"
caso queria todos que iniciem com o valor de combo2.text (tanto faz número ou texto):
Data1.RecordSource = "Select * from Biologia where ano like '" & Combo2.Text & "%'"
caso queria todos que tenham o valor de combo2.text em qualquer posição (tanto faz número ou texto):
Data1.RecordSource = "Select * from Biologia where ano like '%" & Combo2.Text & "%'"
claro jean rodar ele roda igual ao meu mais faz igualzinho nao filtra
certo...
vamos adiante: qual o valor de combo1.text e de combo2.text?
no banco, tem alguma coisa com isso?
vamos adiante: qual o valor de combo1.text e de combo2.text?
no banco, tem alguma coisa com isso?
Se o valor do campo "ano" é data, utilize # na sua consulta sql...
combo 1
biologia
ciencias
espanhol
fisica
historia
informatica
ingles
matematica
portugues
quimica
educaçao artistica
educação fisica
sociologia
e o combo dois e so o ano de 1990 a 2002
e ao clicar nas materias abre as tabelas respectivas
biologia
ciencias
espanhol
fisica
historia
informatica
ingles
matematica
portugues
quimica
educaçao artistica
educação fisica
sociologia
e o combo dois e so o ano de 1990 a 2002
e ao clicar nas materias abre as tabelas respectivas
Grande Willian vamos ver se te ajuda
eu particularmente não gosto muito de usar os objetos Text, LAbels e etc.. com filtro direto eu prefiro pre definilos como uma variavel
Dim criterio As String 'variavel do filtro
Dim vMAT As Integer 'nome da disciplina
'monta o criterio de filtro
criterio = Chr$(39) & Combo1.Text & "*" & Chr(39)
Set Tcp2 = Db.OpenRecordset("SELECT * FROM TABELA WHERE disciplina LIKE " & criterio, , , 3)
no caso do data use
Data1.RecordSource = "SELECT * FROM TABELA WHERE disciplina LIKE " & criterio
o problema q vc quer fazer um filtro em uma consulta SQL e depois na mesma consulta sql realizar um novo filtro , se um dos filtros fosse fixo ai tudo bem mas os sendo dinamicos não da certo, ja teve ate outros topicos no vbmania sobre o mesmo assunto, ai entra aquela dica q eu tava te falando outro dia lembra ?
agora se por acaso este combo inicial q vc tem as disciplinas , matematica, portugues etc..
vc poderia fazer uma primeira consulta do tipo
dim Sql as string
dim Sql2 as string
dim vANO as date
if combo1.text = "portugues" then
Sql = "SELECT * FROM tabela WHERE diciplina='portugues'"
elseif ......
ai depois q definir o ano vc termina o filtro
exemplo vc definiu o ano de 1992
vANO = Combo2.text
Sql2 = Sql & "And WHERE ano="&vANO
ai vc carrega o data
Data1.Recordsource = Sql2
Data1.Refresh
OBS: eu escrevi o codigo direto no VBmania, pode ter alguma coisa errada q passou desapercebido ....
Se precisar entre no msn
Um grande abraço
eu particularmente não gosto muito de usar os objetos Text, LAbels e etc.. com filtro direto eu prefiro pre definilos como uma variavel
Dim criterio As String 'variavel do filtro
Dim vMAT As Integer 'nome da disciplina
'monta o criterio de filtro
criterio = Chr$(39) & Combo1.Text & "*" & Chr(39)
Set Tcp2 = Db.OpenRecordset("SELECT * FROM TABELA WHERE disciplina LIKE " & criterio, , , 3)
no caso do data use
Data1.RecordSource = "SELECT * FROM TABELA WHERE disciplina LIKE " & criterio
o problema q vc quer fazer um filtro em uma consulta SQL e depois na mesma consulta sql realizar um novo filtro , se um dos filtros fosse fixo ai tudo bem mas os sendo dinamicos não da certo, ja teve ate outros topicos no vbmania sobre o mesmo assunto, ai entra aquela dica q eu tava te falando outro dia lembra ?
agora se por acaso este combo inicial q vc tem as disciplinas , matematica, portugues etc..
vc poderia fazer uma primeira consulta do tipo
dim Sql as string
dim Sql2 as string
dim vANO as date
if combo1.text = "portugues" then
Sql = "SELECT * FROM tabela WHERE diciplina='portugues'"
elseif ......
ai depois q definir o ano vc termina o filtro
exemplo vc definiu o ano de 1992
vANO = Combo2.text
Sql2 = Sql & "And WHERE ano="&vANO
ai vc carrega o data
Data1.Recordsource = Sql2
Data1.Refresh
OBS: eu escrevi o codigo direto no VBmania, pode ter alguma coisa errada q passou desapercebido ....
Se precisar entre no msn
Um grande abraço
Cara olha o codigo abaixo, considerando o form tenha
1 combo - carregando as disciplinas para 1Âê filtragem
2 textbox - para informar o ano
3 um botao - para realizar a operação
4 um grid para mostrar os dados filtrados (pode ser qualquer outro componente)
5 um data conforme exemplo
no evento do botão
Private Sub Command1_Click()
Dim vSQL1 As String 'montagem da primeira SQL
Dim vSQL2 As String 'montagem da segunda SQL
Dim criterio As String 'criterio de filtro pelo ano
'monta a primeira parte da consulta SQL
If Combo1.Text = "Português" Then
vSQL1 = "SELECT * FROM Português"
ElseIf Combo1.Text = "Matematica" Then
vSQL1 = "SELECT * FROM Matematica"
ElseIf Combo1.Text = "Biologia" Then
vSQL1 = "SELECT * FROM Biologia"
End If
'obtem o ano DE FILTRO
criterio = Chr$(39) & Text1.Text & "*" & Chr(39)
'monta a segunda consulta SQL
vSQL2 = vSQL1 & " Where ANO LIKE " & criterio
'carrega o data e atualiza o objeto data
Data1.RecordSource = vSQL2
Data1.Refresh
End Sub
te mandei o exemplo funcionando por email, mas coloquei o exemplo no forum para outros olharem e matarem alguma dvida
1 combo - carregando as disciplinas para 1Âê filtragem
2 textbox - para informar o ano
3 um botao - para realizar a operação
4 um grid para mostrar os dados filtrados (pode ser qualquer outro componente)
5 um data conforme exemplo
no evento do botão
Private Sub Command1_Click()
Dim vSQL1 As String 'montagem da primeira SQL
Dim vSQL2 As String 'montagem da segunda SQL
Dim criterio As String 'criterio de filtro pelo ano
'monta a primeira parte da consulta SQL
If Combo1.Text = "Português" Then
vSQL1 = "SELECT * FROM Português"
ElseIf Combo1.Text = "Matematica" Then
vSQL1 = "SELECT * FROM Matematica"
ElseIf Combo1.Text = "Biologia" Then
vSQL1 = "SELECT * FROM Biologia"
End If
'obtem o ano DE FILTRO
criterio = Chr$(39) & Text1.Text & "*" & Chr(39)
'monta a segunda consulta SQL
vSQL2 = vSQL1 & " Where ANO LIKE " & criterio
'carrega o data e atualiza o objeto data
Data1.RecordSource = vSQL2
Data1.Refresh
End Sub
te mandei o exemplo funcionando por email, mas coloquei o exemplo no forum para outros olharem e matarem alguma dvida
Tópico encerrado , respostas não são mais permitidas