Olá
Tentei que o ChatGPT ajudasse a criar o código o mais simples possivel para um filtro de multipla seleção, mas não funcionou
Tenho um Formulário “frmSaidasConsulta” que contém uma caixa de listagem desvinculada “ListaSelecao”, na origem de linha tenho uma tabela “tb000MtvMd” com um campo “CodMtvMd” com os seguintes registos 00 01 02 03 04 05 10 11 Neste mesmo Formulário “frmSaidasConsulta”, tenho uma ListaSaidas baseada numa consulta “qrySaidas” e essa consulta contem um campo “CodMtvMd” com vários registos do tipo 00 01 02 03 04 05 10 11 Então quero escolher na caixa de listagem os códigos “ListaSelecao” 00 05 10 E a ListaSaidas baseada na consulta “qrySaidas” me devolva todos os registos do tipo 00 05 10
O ChatGPT criou este, que não funcionou ou seja filtra mas apenas um código de cada vez e eu quero que filtre vários códigos aleatoriamente
que estarei a fazer de errado ou será que o ChatGPT não interpretou corretamente
Private Sub ListaSelecao_AfterUpdate()
'Variáveis para armazenar os valores selecionados e o filtro criado
Dim varItensSelecionados As Variant
Dim strSQL As String
Dim strFiltro As String
Dim i As Long
Me.ListaSelecao = Me.ListaSelecao.Column(0)
' Verifica se há itens selecionados na lista de seleção
If Not IsNull(Me.ListaSelecao.Value) Then
' Armazena os valores selecionados na caixa de combinação na variável varItensSelecionados
varItensSelecionados = Split(Me.ListaSelecao.Value, ",")
Else
' Define a variável varItensSelecionados como vazia
varItensSelecionados = Empty
End If
'Verifica se há valores na variável varItensSelecionados
If Not IsEmpty(varItensSelecionados) Then
'Cria uma string de filtro baseada nos valores selecionados
For i = LBound(varItensSelecionados) To UBound(varItensSelecionados)
strFiltro = strFiltro & "CodMtvMd='" & varItensSelecionados(i) & "' OR "
Next i
'Remove o último "OU" da string de filtro
strFiltro = Left(strFiltro, Len(strFiltro) - 4)
'Atualiza a origem de linha da ListaSaidas com base na nova consulta filtrada
Me.ListaSaidas.RowSource = "SELECT * FROM qrySaidas WHERE " & strFiltro
Else
'Se nenhum item estiver selecionado, exibe todos os registros da consulta original
Me.ListaSaidas.RowSource = "SELECT * FROM qrySaidas"
End If
' Força a atualização da lista de saídas
Me.Refresh
End Sub
Tentei que o ChatGPT ajudasse a criar o código o mais simples possivel para um filtro de multipla seleção, mas não funcionou
Tenho um Formulário “frmSaidasConsulta” que contém uma caixa de listagem desvinculada “ListaSelecao”, na origem de linha tenho uma tabela “tb000MtvMd” com um campo “CodMtvMd” com os seguintes registos 00 01 02 03 04 05 10 11 Neste mesmo Formulário “frmSaidasConsulta”, tenho uma ListaSaidas baseada numa consulta “qrySaidas” e essa consulta contem um campo “CodMtvMd” com vários registos do tipo 00 01 02 03 04 05 10 11 Então quero escolher na caixa de listagem os códigos “ListaSelecao” 00 05 10 E a ListaSaidas baseada na consulta “qrySaidas” me devolva todos os registos do tipo 00 05 10
O ChatGPT criou este, que não funcionou ou seja filtra mas apenas um código de cada vez e eu quero que filtre vários códigos aleatoriamente
que estarei a fazer de errado ou será que o ChatGPT não interpretou corretamente
Private Sub ListaSelecao_AfterUpdate()
'Variáveis para armazenar os valores selecionados e o filtro criado
Dim varItensSelecionados As Variant
Dim strSQL As String
Dim strFiltro As String
Dim i As Long
Me.ListaSelecao = Me.ListaSelecao.Column(0)
' Verifica se há itens selecionados na lista de seleção
If Not IsNull(Me.ListaSelecao.Value) Then
' Armazena os valores selecionados na caixa de combinação na variável varItensSelecionados
varItensSelecionados = Split(Me.ListaSelecao.Value, ",")
Else
' Define a variável varItensSelecionados como vazia
varItensSelecionados = Empty
End If
'Verifica se há valores na variável varItensSelecionados
If Not IsEmpty(varItensSelecionados) Then
'Cria uma string de filtro baseada nos valores selecionados
For i = LBound(varItensSelecionados) To UBound(varItensSelecionados)
strFiltro = strFiltro & "CodMtvMd='" & varItensSelecionados(i) & "' OR "
Next i
'Remove o último "OU" da string de filtro
strFiltro = Left(strFiltro, Len(strFiltro) - 4)
'Atualiza a origem de linha da ListaSaidas com base na nova consulta filtrada
Me.ListaSaidas.RowSource = "SELECT * FROM qrySaidas WHERE " & strFiltro
Else
'Se nenhum item estiver selecionado, exibe todos os registros da consulta original
Me.ListaSaidas.RowSource = "SELECT * FROM qrySaidas"
End If
' Força a atualização da lista de saídas
Me.Refresh
End Sub