FILTRO_MSFLEXGRID_ACCESS
Dia rapaziada, venho tentando fazer um filtro em um MsFlexGrid e nao tenho o resuldato
esperado, alquem pode me dizer onde estou errando ?
Criterios que usei sem sucesso:
Sub para fazer o filtro no banco e deixar o MsFlexGrid exatamente com o item selecionado,
Mais nao seleciona nada, porque ?
Neste banco [Ô]Access[Ô]eu salvo um campo chamado [Ô]Itens[Ô] que fica assim no banco
ID Dta Itens
1 10/11/2010 15:34:47 Rosca S/Fim Diamentro 310 m,m x 4600
1 10/11/2010 15:34:47 Valv. Dosadora Diant. de 8[Ô][Ô] Tam. 1700 m,m[Ô]
1 10/11/2010 15:34:47 Rosca S/Fim Diamentro 310 m,m x 4600
2 10/11/2010 21:06:54 Montagem de Esteira
2 10/11/2010 21:06:54 Montagem de Granulador
3 11/11/2010 10:50:54 Valv. Dosadora Diant. de 8[Ô][Ô] Tam. 1700 m,m[Ô]
3 11/11/2010 10:50:54 Rosca S/Fim Diamentro 310 m,m x 4600
Usando o vbtab no listbox(neste campos = (Itens,Qtde,VUnit,SbTl) destaquei apenas para visualizar, vou salvando ID,Dta,(Itens,Qtde,VUnit,SbTl),TipoProjeto,TotalProjeto,FatorAplicado,NClt
Agora eu tenho outro projeto de estudo usando um banco [Ô]MySQL[Ô] e funciona perfeitamente, no meu
ponto de vista, eh a unica diferenca entre um projeto e outro, pois neste atual estou usando um
banco [Ô]Access 2000[Ô], se eh isso como posso fazer este filtro no [Ô]Access 2000[Ô].
Valeu a atencao de todos os colegas do VbMania, Valeu...
esperado, alquem pode me dizer onde estou errando ?
Criterios que usei sem sucesso:
SQL = [Ô]SELECT * FROM TbProjeto WHERE Nome like [ô][Ô] & TxtBsc.Text & [Ô]%[ô] order by Nome[Ô]
SQL = [Ô]SELECT * FROM TbProjeto WHERE Itens like [ô][Ô] & Replace(TxtBsc.Text, [Ô][ô][Ô], [Ô][ô][Ô]) & [Ô]%[ô][Ô]
Sub para fazer o filtro no banco e deixar o MsFlexGrid exatamente com o item selecionado,
Mais nao seleciona nada, porque ?
Neste banco [Ô]Access[Ô]eu salvo um campo chamado [Ô]Itens[Ô] que fica assim no banco
ID Dta Itens
1 10/11/2010 15:34:47 Rosca S/Fim Diamentro 310 m,m x 4600
1 10/11/2010 15:34:47 Valv. Dosadora Diant. de 8[Ô][Ô] Tam. 1700 m,m[Ô]
1 10/11/2010 15:34:47 Rosca S/Fim Diamentro 310 m,m x 4600
2 10/11/2010 21:06:54 Montagem de Esteira
2 10/11/2010 21:06:54 Montagem de Granulador
3 11/11/2010 10:50:54 Valv. Dosadora Diant. de 8[Ô][Ô] Tam. 1700 m,m[Ô]
3 11/11/2010 10:50:54 Rosca S/Fim Diamentro 310 m,m x 4600
Usando o vbtab no listbox(neste campos = (Itens,Qtde,VUnit,SbTl) destaquei apenas para visualizar, vou salvando ID,Dta,(Itens,Qtde,VUnit,SbTl),TipoProjeto,TotalProjeto,FatorAplicado,NClt
Private Sub TxtBsc_Change()
Dim SQL As String
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô][Ô] & TxtBsc.Text & [Ô]%[ô] order by NClt[Ô]
Set rs = cn.Execute(SQL)
With MsFlexProjeto
.Rows = .Rows + 1
.FixedRows = 1
.FixedCols = 0
.Rows = 1
.FormatString = [Ô]Registro |Data [Ô]
Do While Not rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = IIf(IsNull(rs!ID), [Ô][Ô], rs!ID)
.TextMatrix(.Rows - 1, 1) = IIf(IsNull(rs!Dta), [Ô][Ô], rs!Dta)
.TextMatrix(.Rows - 1, 2) = IIf(IsNull(rs!Itens), [Ô][Ô], rs!Itens)
.TextMatrix(.Rows - 1, 3) = IIf(IsNull(rs!Qtde), [Ô][Ô], rs!Qtde)
.TextMatrix(.Rows - 1, 4) = IIf(IsNull(rs!VUnit), [Ô][Ô], rs!VUnit)
.TextMatrix(.Rows - 1, 5) = IIf(IsNull(rs!SbTl), [Ô][Ô], rs!SbTl)
.TextMatrix(.Rows - 1, 6) = IIf(IsNull(rs!TipoProjeto), [Ô][Ô], rs!TipoProjeto)
.TextMatrix(.Rows - 1, 7) = IIf(IsNull(rs!TotalProjeto), [Ô][Ô], rs!TotalProjeto)
.TextMatrix(.Rows - 1, 8) = IIf(IsNull(rs!FatorAplicado), [Ô][Ô], rs!FatorAplicado)
.TextMatrix(.Rows - 1, 9) = IIf(IsNull(rs!NClt), [Ô][Ô], rs!NClt)
.TextMatrix(.Rows - 1, 0) = Format(.TextMatrix(.Rows - 1, 0), [Ô]000000[Ô])
.TextMatrix(.Rows - 1, 4) = Format(.TextMatrix(.Rows - 1, 4), [Ô]currency[Ô])
.TextMatrix(.Rows - 1, 5) = Format(.TextMatrix(.Rows - 1, 5), [Ô]currency[Ô])
.TextMatrix(.Rows - 1, 7) = Format(.TextMatrix(.Rows - 1, 7), [Ô]currency[Ô])
rs.MoveNext
Loop
For i = 1 To .Rows - 1
If .TextMatrix(i, 1) = TxtBsc.Text Then
.TopRow = i
.RowSel = i
Exit For
End If
Next
End With
End Sub
Agora eu tenho outro projeto de estudo usando um banco [Ô]MySQL[Ô] e funciona perfeitamente, no meu
ponto de vista, eh a unica diferenca entre um projeto e outro, pois neste atual estou usando um
banco [Ô]Access 2000[Ô], se eh isso como posso fazer este filtro no [Ô]Access 2000[Ô].
Valeu a atencao de todos os colegas do VbMania, Valeu...
Usando desta forma, cosultando direto no form atraves de um [Ô]InputBox[Ô] para digitar o codigo
de registro (ID), ele so retorna um item e descosidera o restante. Exemplo: ID = 000003 =
tres itens, valvula, rosca e porca, resultado retornado = valvula ?
Funcao para consulta:
Chamado a funcao:
Colegas, como posso resolver esta questao...
de registro (ID), ele so retorna um item e descosidera o restante. Exemplo: ID = 000003 =
tres itens, valvula, rosca e porca, resultado retornado = valvula ?
Funcao para consulta:
Public Function ConsultaProjeto(ByVal EntraID As Integer) As Variant
Set rs = CreateObject([Ô]ADODB.Recordset[Ô])
With rs
.Open [Ô]Select * From TbProjeto Where ID=[Ô] & EntraID & [Ô][Ô], cn, adOpenKeyset, adLockOptimistic
If .RecordCount = 0 Then
MsgBox [Ô]Código Inválido[Ô], vbExclamation, [Ô]Erro[Ô]
Else
FrmProjeto.TxtReg.Text = (!ID)
FrmProjeto.TxtDta.Text = IIf(IsNull(!Dta), Empty, !Dta)
FrmProjeto.CboTipServ.Text = IIf(IsNull(!TipoProjeto), Empty, !TipoProjeto)
FrmProjeto.TxtClt.Text = IIf(IsNull(!NClt), Empty, !NClt)
FrmProjeto.TxtTlProj.Text = IIf(IsNull(!TotalProjeto), Empty, !TotalProjeto)
FrmProjeto.TxtFtUso.Text = IIf(IsNull(!FatorAplicado), Empty, !FatorAplicado)
FrmProjeto.ListMov.AddItem [Ô] [Ô] & (rs!Itens) & vbTab & (rs!Qtde) & vbTab & _
(rs!VUnit) & vbTab & (rs!SbTl)
End If
.Close
End With
End Function
Chamado a funcao:
Private Sub lvBConlProd_Click()
Dim EntraID As Integer
EntraID = InputBox([Ô]Digite o Código[Ô], [Ô]Consulta[Ô])
ConsultaProjeto (EntraID)
End Sub
Colegas, como posso resolver esta questao...
Esta faltando a primeiro sinal de %
SQL = [Ô]SELECT * FROM TbProjeto WHERE Nome [ô]%[Ô] &TxtBsc.Text & [Ô]%[ô] order by Nome[Ô]
usando o acces tente alterar o seguinte
SQL = [Ô]SELECT * FROM TbProjeto WHERE Nome like [ô][Ô] & TxtBsc.Text & [Ô]*[ô] order by Nome[Ô]
no lugar de % coloque *
Ha tá.. e mesmo, nao vi .. banco acess, tem que colocar o * no primeiro tambem.
Pronto, assim vai funcionar
SQL = [Ô]SELECT * FROM TbProjeto WHERE Nome [ô]*[Ô] &TxtBsc.Text & [Ô]*[ô] order by Nome[Ô]
Pronto, assim vai funcionar
Vamos lá, regras do Like:
Like [ô]* variavel *[ô] = pesquisa em qualquer parte da string, ex: ca= carla, jessica, geocasta
Like [ô]variavel*[ô] = pesquisa tudo que comece com que foi digitado ex: ca = carla
Like [ô]*variavel[ô] = pesquisa tudo que termine com que foi digitado ex: ca = jessica
regras simples de muita utilidade.
Like [ô]* variavel *[ô] = pesquisa em qualquer parte da string, ex: ca= carla, jessica, geocasta
Like [ô]variavel*[ô] = pesquisa tudo que comece com que foi digitado ex: ca = carla
Like [ô]*variavel[ô] = pesquisa tudo que termine com que foi digitado ex: ca = jessica
regras simples de muita utilidade.
Usei as duas formas:
Na minha sub, mais sem sucesso:
Colegas, ainda estou sem entender o porque ? Marcelo valeu pela regra do comando [Ô]Like[Ô]
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô][Ô] & TxtBsc.Text & [Ô]*[ô] order by NClt[Ô]
= Dica MarceloSQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô]*[Ô] & TxtBsc.Text & [Ô]*[ô] order by NClt[Ô]
= DIa XXXANGELSXXXNa minha sub, mais sem sucesso:
Private Sub TxtBsc_Change()
Dim SQL As String
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô][Ô] & TxtBsc.Text & [Ô]%[ô] order by NClt[Ô]
Set rs = cn.Execute(SQL)
With MsFlexProjeto
.Rows = .Rows + 1
.FixedRows = 1
.FixedCols = 0
.Rows = 1
.FormatString = [Ô]Registro |Data [Ô]
Do While Not rs.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = IIf(IsNull(rs!ID), [Ô][Ô], rs!ID)
.TextMatrix(.Rows - 1, 1) = IIf(IsNull(rs!Dta), [Ô][Ô], rs!Dta)
.TextMatrix(.Rows - 1, 2) = IIf(IsNull(rs!Itens), [Ô][Ô], rs!Itens)
.TextMatrix(.Rows - 1, 3) = IIf(IsNull(rs!Qtde), [Ô][Ô], rs!Qtde)
.TextMatrix(.Rows - 1, 4) = IIf(IsNull(rs!VUnit), [Ô][Ô], rs!VUnit)
.TextMatrix(.Rows - 1, 5) = IIf(IsNull(rs!SbTl), [Ô][Ô], rs!SbTl)
.TextMatrix(.Rows - 1, 6) = IIf(IsNull(rs!TipoProjeto), [Ô][Ô], rs!TipoProjeto)
.TextMatrix(.Rows - 1, 7) = IIf(IsNull(rs!TotalProjeto), [Ô][Ô], rs!TotalProjeto)
.TextMatrix(.Rows - 1, 8) = IIf(IsNull(rs!FatorAplicado), [Ô][Ô], rs!FatorAplicado)
.TextMatrix(.Rows - 1, 9) = IIf(IsNull(rs!NClt), [Ô][Ô], rs!NClt)
.TextMatrix(.Rows - 1, 0) = Format(.TextMatrix(.Rows - 1, 0), [Ô]000000[Ô])
.TextMatrix(.Rows - 1, 4) = Format(.TextMatrix(.Rows - 1, 4), [Ô]currency[Ô])
.TextMatrix(.Rows - 1, 5) = Format(.TextMatrix(.Rows - 1, 5), [Ô]currency[Ô])
.TextMatrix(.Rows - 1, 7) = Format(.TextMatrix(.Rows - 1, 7), [Ô]currency[Ô])
rs.MoveNext
Loop
For i = 1 To .Rows - 1
If .TextMatrix(i, 1) = TxtBsc.Text Then
.TopRow = i
.RowSel = i
Exit For
End If
Next
End With
End Sub
Colegas, ainda estou sem entender o porque ? Marcelo valeu pela regra do comando [Ô]Like[Ô]
faça alguns teste, não tenho certeza mas se o campo for tipo numérico vc não deverá usar as aspas simples
ou talvez o,like so funcione em campo do tipo Texto
veja os teste que pode fazer
diretamente na query
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô]003*[ô] order by NClt[Ô]
ou
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like 3* order by NClt[Ô]
e tente usar a consulta e um campo do tipo texto
ou talvez o,like so funcione em campo do tipo Texto
veja os teste que pode fazer
diretamente na query
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô]003*[ô] order by NClt[Ô]
ou
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like 3* order by NClt[Ô]
e tente usar a consulta e um campo do tipo texto
Marcelo, fiz os testes, nao deu certo, mais tambem este campo (ID) eh tipo autonumeracao no access eh mole, agora o campo (NClt) eh tipo texto, dai eu fiz de outro forma,
mais sem sucesso ainda.
Minha Forma:
Sua Sugestao:
ou
Nao tenho o resultado esperado ainda ?
mais sem sucesso ainda.
Minha Forma:
SQL = [Ô]SELECT * FROM TbProjeto WHERE NClt like [ô]Ceramica*[ô] order by ID[Ô]
Sua Sugestao:
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô]0003*[ô] order by NClt[Ô]
ou
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô]3*[ô] order by NClt[Ô]
Nao tenho o resultado esperado ainda ?
Ferraz o que esta acontecendo afinal?
quais os dados da tabela? como esta aparecendo? como deveria aparecer?
quais os dados da tabela? como esta aparecendo? como deveria aparecer?
Marcelo ja falo pro ce, quenta ai, estou testando com mais calma suas dicas, meu amigo.
Tópico encerrado , respostas não são mais permitidas