[resolvido] Pesquisar em Listbox e imprimir.

Moderador: Avelino Sampaio

Avatar do usuário
Carvalho
Mensagens: 143
Registrado em: 21 Ago 2015, 23:22

[resolvido] Pesquisar em Listbox e imprimir.

Mensagempor Carvalho » 03 Jul 2018, 17:14

senhores boa tarde,

Estou com um probleminha, venho usando um form com uma Listbox para seleção múltipla e pesquisa disponibilizado pelo senhor Avelino do aplicativo Maestro, para selecionar e imprimir, só que vem o problema, tenho 42.000 mil itens e tenho que selecionar 30 itens, só que quando acho um deles e seleciono, ai vou pesquisar outro item ele desmarca o que eu tinha selecionado anterior, como faço para evitar issso ? se eu selecionei ele fique, mesmo eu pesquisando outros itens até eu escolher todos. e imprimir.

seria possível isso ?

códigos que estou usando,

Código: Selecionar todos

Private Sub fncCarregalista(Optional filtro As String, Optional ordem As String)
Dim strSql As String
strSql = "SELECT Num,taag,PalletMontagem,Bloco,Fase,Qtd,DataReceb,StatusEstoque"
strSql = strSql & " FROM TbRelatorioPagoPorBlocoIten WHERE " & filtro
strSql = strSql & " ORDER BY taag;"
Me!Lista.RowSource = strSql
filtroLista = filtro
End Sub

Public Sub fncFiltrar(NomeCampoFoco As String)
Dim x As String, filtro As String, strSplit As String
Dim f(5) As String, cp(5) As Variant
Dim k As Variant, p As Byte
Dim booPos As Boolean

'------------------------------------------------------------------
' Variável x recebe o valor digitado na caixa de texto de filtragem
'-------------------------------------------------------------------
x = Me(NomeCampoFoco).Text: p = 0

'--------------------------------------------------------------------------------------
'Passa para a matrix Cp() todos os valores digitados nas caixas de texto de filtragens
'--------------------------------------------------------------------------------------
For p = 0 To 4
    cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, x, Me("tx" & p + 1))
Next

'----------------------------------------------------------------------------------------------------------------------------
' Passa para a matrix f() os campos a serem filtrados, com os respectivos valores digitados nas caixas de texto de filtragens
'-----------------------------------------------------------------------------------------------------------------------------
f(0) = "taag Like '*" & cp(0) & "*'"
f(1) = IIf(cp(1) = Chr(32), "PalletMontagem is null", "PalletMontagem Like '*" & cp(1) & "*'")
f(2) = IIf(cp(2) = Chr(32), "bloco is null", "bloco Like '*" & cp(2) & "*'")
f(3) = IIf(cp(3) = Chr(32), "Fase is null", "fase Like '*" & cp(3) & "*'")
f(4) = "StatusEstoque Like '*" & cp(4) & "*'"

'------------------------------------------------------------------------------------------
'Passa para Variável strSplit o comprimento de texto da cada caixa de texto de filtragens
'Comprimento zero(0) significa que a caixa de texto de filtragem se encontra vazia
'Exemplo: strSplit = 2|0|1|0
'Significa que os campos 2 e 4 não receberam valores para serem filtrados
'------------------------------------------------------------------------------------------
strSplit = Len(cp(0) & "") & "|" & Len(cp(1) & "") & "|" & Len(cp(2) & "") & "|" & Len(cp(3) & "") & "|" & Len(cp(4) & "")
k = Split(strSplit, "|")

'----------------------------------------------------------------------------------------------
'Filtro assume todos os valores de registros caso todos os campos de filtragens estejam limpos
'----------------------------------------------------------------------------------------------
filtro = "taag": p = 0

'------------------------------------------------------------------------------------------
'Monta a variável filtro com todos os campos de filtragens que possuirem valores digitados
'------------------------------------------------------------------------------------------
For p = 0 To UBound(k)
    If Val(k(p)) > 0 Then
        If booPos = False Then
            filtro = "taag" & " and " & f(p): booPos = True
        Else
            filtro = filtro & " AND " & f(p)
        End If
    End If
Next p

'--------------------------------------------
'Carrga a listbox com os registros filtrados
'--------------------------------------------
'Call fncCarregalista("Nota > 0 And Função =  forms!frmFiltraListBox!TxtFunção")
Call fncCarregalista(filtro)

End Sub



Provérbios 1:7 “O temor do SENHOR é o princípio do saber, mas os loucos desprezam a sabedoria e o ensino.”

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Carvalho
Mensagens: 143
Registrado em: 21 Ago 2015, 23:22

Re: Pesquisar em Listbox e imprimir.

Mensagempor Carvalho » 14 Jul 2018, 22:23

Alguma sugestão pessoal ?
Provérbios 1:7 “O temor do SENHOR é o princípio do saber, mas os loucos desprezam a sabedoria e o ensino.”

Avatar do usuário
Damasceno Jr.
Mensagens: 364
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Pesquisar em Listbox e imprimir.

Mensagempor Damasceno Jr. » 11 Ago 2018, 01:06

grande Carvalho... que tal criar uma outra listbox para receber os dados a serem filtrados?

Tipo, uma com todos os itens e outra com os itens que serão usados como filtro. Assim, a medida que vai clicando duas vezes em um item ele vai passando pra outra listbox. No final, é só usar a listbox dos itens selecionados para fazer o que quiseres.
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Avatar do usuário
Carvalho
Mensagens: 143
Registrado em: 21 Ago 2015, 23:22

Re: [Resolvido] Pesquisar em Listbox e imprimir.

Mensagempor Carvalho » 11 Ago 2018, 10:36

Fala ai Damasceno.... a sua ideia foi show, coloquei uma outra listbox ao lado e na tabela coloquei um campo chamado Imprimir do tipo Sim/Não,

ai quando eu clico duas vezes em um item ele faz um Update no campo sim/não de acordo com o item da lixtbox, passando para a outra que criei, e fiz mais, uma múltipla seleção para passar para a outra listbox, pois vai a ver casos em que vai ser muitos itens e se for de um por um vai demorar muito, agora tem as 2 opções. ficou show.

abaixo os códigos que usei.

Código: Selecionar todos

'aqui passar para a outra list box ao clicar 2 vezes
Private Sub Lista_DblClick(Cancel As Integer)
 
    CurrentDb.Execute "UPDATE temp7_TbLogistica SET Imprimir = True WHERE PalletMontagem = '" & Lista.Column(1) & "'"
   
    Lista2.Requery
    Lista.Requery
End Sub

' essa aqui retira o item caso a pessoa tenha clicado errado
Private Sub Lista2_DblClick(Cancel As Integer)
    CurrentDb.Execute "UPDATE temp7_TbLogistica SET Imprimir = false WHERE PalletMontagem = '" & Lista2.Column(0) & "'"
    Lista.Requery
    Lista2.Requery
End Sub

' e essa aqui é a de múltipla seleção para passar para a outra listbox os itens selecionados
Private Function FncInserirItens()
Dim db As Database
Dim obj As Variant
Set db = CurrentDb()
Dim tb As Recordset

'abri o bd para inserir que vaiinserir as informações
Set tb = CurrentDb.OpenRecordset("temp7_TbLogistica")

For Each obj In Me!Lista.ItemsSelected
With tb
tb.Edit
CurrentDb.Execute "update temp7_TbLogistica SET Imprimir = true where PalletMontagem = '" & Me!Lista.Column(1, obj) & "'"
tb.Update
End With
Next obj

tb.Close
Set tb = Nothing
db.Close
Set db = Nothing
        Lista2.Requery
    Lista.Requery
End Function



Obrigado.
Provérbios 1:7 “O temor do SENHOR é o princípio do saber, mas os loucos desprezam a sabedoria e o ensino.”

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Formulários”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 3 visitantes