MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    SQL Query p/ desmultiplicar campo composto

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 22/3/2021, 10:30

    Boa tarde ao Forum,

    Tenho um produto composto, cuja referencia (sku) é composta por 4 outros produtos simples (sku), separados por um hífen (-) entre si,

    O que eu preciso é um SQL query syntax para desmultiplicar este produto composto (multiple skus separados pelo hífen) de forma a verificar em cada um dos produtos simples o campo stock e  fazer o update do campo stock no produto composto, em função do valor mais baixo encontrado!

    SQL Query p/ desmultiplicar campo composto Forum_12


    Alguém que possa ajudar?
    Ficaria muito grato!

    envio em anexo uma BD com a estrutura e dados do exemplo acima
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA01.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (408 Kb) Baixado 7 vez(es)


    Última edição por gpessoa em 12/2/2022, 17:08, editado 4 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 22/3/2021, 11:49

    Bom dia
    Antes, dê seguimento a temas ainda abertos, de forma a respeitar os colegas que tentaram e ajudaram
    https://www.maximoaccess.com/t12052-exportar-campo-memo-rich-text-para-xml#94204
    https://www.maximoaccess.com/t35455-adicionar-linha-em-campo-existente#242661


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 22/3/2021, 12:26

    Antes, dê seguimento a temas ainda abertos, de forma a respeitar os colegas que tentaram e ajudaram

    Bom dia Alexandre,
    Já alterei para resolvido;
    as minhas desculpas pela falta de atenção!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 22/3/2021, 14:00

    Deveria ter explicado como resolveu, de forma a ajudar outros colegas que tenham a mesma dúvida. É esse o espírito do fórum

    Sobre esta dúvida, cole num módulo
    Código:
    Function QtMaisBaixa(strCodigo As String)
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset
        QtMaisBaixa = 0
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm WHERE Instr(1,sku,'-')=0")
        Do Until Rst.EOF
            If InStr(1, strCodigo, Rst("sku")) > 0 Then
                If Rst("stock") > QtMaisBaixa Then QtMaisBaixa = Rst("stock")
            End If
            Rst.MoveNext
        Loop
        Rst.MoveFirst
        Do Until Rst.EOF
            If InStr(1, strCodigo, Rst("sku")) > 0 Then
                If Rst("stock") < QtMaisBaixa Then QtMaisBaixa = Rst("stock")
            End If
            Rst.MoveNext
        Loop
    End Function

    e na consulta, utilize
    SELECT sku, qtmaisbaixa(sku) as MaisBaixo FROM nvm;


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gpessoa gosta desta mensagem

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 22/3/2021, 20:53

    Muito Obrigado Alexandre!
    Funciona perfeitamente. Very Happy
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 27/3/2021, 12:34

    Bom dia Alexandre,

    Sem querer abusar, no seguimento do assunto inicial, tenho mais duas situações que se for possível, gostaria de obter ajuda!
         
    - Pretendia obter os EAN para o produto composto com base no produto simples, separado por |
    - Pretendia obter as Imagens para o produto composto com base nos sku do produto composto +  todos os sku dos produtos simples, acrescido de .jpg e separado por |

    Mais uma vez, muito obrigado!
    SQL Query p/ desmultiplicar campo composto Forum_13


    envio em anexo uma BD com a estrutura e dados do exemplo acima
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA01.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (340 Kb) Baixado 3 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 27/3/2021, 15:01

    Boa tarde
    Código:
    Function EANs(strCodigo As String)
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        If InStr(1, strCodigo, "-") = 0 Then
            Rst.FindFirst "sku='" & strCodigo & "'"
            EANs = Rst("EAN")
        Else
            Do Until Len(strCodigo) = 0
                If InStr(1, strCodigo, "-") = 0 Then
                    Rst.FindFirst "sku='" & strCodigo & "'"
                    If Not Rst.NoMatch Then
                        EANs = EANs & "|" & Rst("EAN")
                        strCodigo = ""
                    End If
                Else
                    Rst.FindFirst "sku='" & Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1) & "'"
                    If Not Rst.NoMatch Then
                        EANs = EANs & "|" & Rst("EAN")
                        strCodigo = Mid(strCodigo, InStr(1, strCodigo, "-") + 1)
                    End If
                End If
            Loop
        End If
        If InStr(1, EANs, "|") > 0 Then EANs = Mid(EANs, 2)
    End Function

    Código:
    Function Imagens(strCodigo As String)
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset, strImagemGeral As String
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        If InStr(1, strCodigo, "-") = 0 Then
            Rst.FindFirst "sku='" & strCodigo & "'"
            Imagens = Rst("Imagem")
        Else
            Do Until Len(strCodigo) = 0
                If InStr(1, strCodigo, "-") = 0 Then
                    Rst.FindFirst "sku='" & strCodigo & "'"
                    If Not Rst.NoMatch Then
                        strImagemGeral = strImagemGeral & "-" & Mid(Rst("Imagem"), 1, InStr(1, Rst("Imagem"), ".") - 1)
                        Imagens = Imagens & "|" & Rst("Imagem")
                        strCodigo = ""
                    End If
                Else
                    Rst.FindFirst "sku='" & Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1) & "'"
                    If Not Rst.NoMatch Then
                        strImagemGeral = strImagemGeral & "-" & Mid(Rst("Imagem"), 1, InStr(1, Rst("Imagem"), ".") - 1)
                        Imagens = Imagens & "|" & Rst("Imagem")
                        strCodigo = Mid(strCodigo, InStr(1, strCodigo, "-") + 1)
                    End If
                End If
            Loop
        End If
        If Len(strImagemGeral) > 0 Then
            Imagens = Mid(strImagemGeral, 2) & ".jpg|" & Mid(Imagens, 2)
        End If
    End Function

    Na consulta
    SELECT [Tipo produto], sku, qtmaisbaixa(sku) AS Stock,EANs(sku) AS EAN,Imagens(sku) as Imagem FROM nvm;


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gpessoa gosta desta mensagem

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 30/3/2021, 01:54

    Olá Alexandre,

    Que categoria…   Very Happy  
    Mais uma vez, muito obrigado!

    Aproveitei e dupliquei o modulo inicial para poder controlar tb as existências dos produtos compostos (existências por armazém)! Cool

    Ao passar estes módulos para a BD de produção, detetei um problema:
    em alguns casos, o produto composto inclui produtos simples que por qualquer motivo, ainda não foram criados, o que origina o bloqueio do sistema!
    Criei um exemplo [sku055-sku005] na BD em anexo.
    A minha interpretação para possíveis soluções:
    • Criar um modulo que possa filtar os produtos simples inexistentes, com base nos produtos compostos, para que possam entretanto ser criados…
    ou
    • Criar um alerta de erro, e abortar, mas se possível, no alerta, listar o(s) produto(s) em falta!

    Se não for abusar em demasiado, gostaria ainda de:
      - Obter o [nvm.pvp] do produto composto com base na soma dos PVP dos produtos simples.
      - Obter o [nvm.nome] para o produto composto com base e ordem no nome do produto simples (assim, bastar-me-ia fazer os respetivos ajustes).
      - Atualizar o campo [nvm.box] com o valor do Stock por Armazém (se existir)…
    Exemplo (com base nos dados abaixo): ns0 pt66 es2 nl25
        ns0 [nvm.stock] deve constar sempre, mesmo que o valor seja 0 (zero)
       pt66 [amz_pt.stock_pt] so deve constar se for >0
       es2 [amz_es.stock_es] so deve constar se for >0
       fr0 [amz_fr.stock_fr] so deve constar se for >0
       nl25 [amz_nl.stock_nl] so deve constar se for >0


    envio em anexo uma BD com a estrutura e dados dos exemplos acima
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA01_02.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (133 Kb) Baixado 6 vez(es)
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 21/4/2021, 16:32

    Boa tarde Alexandre,

    Já consegui obter o [nvm].[nome], alterando o modulo EAN (ficou perfeito)!
    Tb consegui atualizar o campo [nvm].[box], não como pretendia pois mostra tudo e não só se existir…
    Ficou assim: ns0 pt66 es2 fr nl25 (o fr não devia estar ai, mas resolve!)

    Contudo, se o Alexandre pudesse dar uma ajudinha extra nos restantes pendentes, muito agradecia:
    nomeadamente:
    - Criar um modulo para obter o [nvm].[pvp] do produto composto com base na soma dos PVP dos produtos simples.

    - Criar um modulo que possa filtrar os produtos simples, com base nos produtos compostos, para verificar se existem na tabela e em caso negativo, possam entretanto ser criados… (para resolver o problema de bloquear)

    Grato pela atenção e disponibilidade!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 21/4/2021, 18:00

    Boa tarde
    Não entendi. Explique todos os pormenores, O que pretende e como vai utilizar (consulta, relatório, formulário, ...) em cada situação pretendida


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 21/4/2021, 18:34

    Boa tarde Alexandre,

    No caso do obter o PVP, o que pretendia é um modulo idêntico ao EANs que o Alexandre já fez o favor de criar, mas em vez de "juntar" os campos PVP, que os SOME!

    veja no o exemplo baixo já ajustado por mim...

    na consulta obtenho algo do género 10+25+25 e o que pretendia era obter este somatório, ou seja 60
    Código:
    Function PVPs(strCodigo As String)
        '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        If InStr(1, strCodigo, "-") = 0 Then
            Rst.FindFirst "sku='" & strCodigo & "'"
            PVPs = Rst("PVP")
        Else
            Do Until Len(strCodigo) = 0
                If InStr(1, strCodigo, "-") = 0 Then
                    Rst.FindFirst "sku='" & strCodigo & "'"
                    If Not Rst.NoMatch Then
                        PVPs = PVPs & "+" & Rst("PVP")
                        strCodigo = ""
                    End If
                Else
                    Rst.FindFirst "sku='" & Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1) & "'"
                    If Not Rst.NoMatch Then
                        PVPs = PVPs & "+" & Rst("PVP")
                        strCodigo = Mid(strCodigo, InStr(1, strCodigo, "-") + 1)
                    End If
                End If
            Loop
        End If
        If InStr(1, PVPs, "+") > 0 Then PVPs = Mid(PVPs, 2)
    End Function

    Na consulta
    SELECT [Tipo produto], sku, qtmaisbaixa(sku) AS Stock,EANs(sku) AS EAN,Imagens(sku) as Imagem, PVPs(sku) AS PVP FROM nvm;


    no Caso dos produtos simples que compõem os produtos compostos e que não existem na tabela, basicamente preciso de algo que me permita criar uma consulta para poder saber quais são, dado que a sua não existência bloqueia o sistema...
    como descrevi no meu post acima de 30/03/2021...

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 21/4/2021, 18:57

    Para PVPs
    Código:
    Function PVPs(strCodigo As String) As Single
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        If InStr(1, strCodigo, "-") = 0 Then
            Rst.FindFirst "sku='" & strCodigo & "'"
            PVPs = Rst("PVP")
        Else
            Do Until Len(strCodigo) = 0
                If InStr(1, strCodigo, "-") = 0 Then
                    Rst.FindFirst "sku='" & strCodigo & "'"
                    If Not Rst.NoMatch Then
                        PVPs = PVPs + Rst("PVP")
                        strCodigo = ""
                    End If
                Else
                    Rst.FindFirst "sku='" & Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1) & "'"
                    If Not Rst.NoMatch Then
                        PVPs = PVPs + Rst("PVP")
                        strCodigo = Mid(strCodigo, InStr(1, strCodigo, "-") + 1)
                    End If
                End If
            Loop
        End If
    End Function

    Sobre a outra parte, explique detalhadamente e dê exemplo


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gpessoa gosta desta mensagem

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 22/4/2021, 18:01

    Boa tarde Alexandre,
    Muito obrigado pelo modulo acima; funciona na perfeição! Very Happy

    Sobre o segundo assunto, vamos ver se me consigo explicar…
    Imaginemos o seguinte cenário:
    Um produto composto por 5 produtos simples, mas na tabela só existem 4 produtos simples criados…
    No presente exemplo, o sku004 não existe na tabela!
    O que eu preciso saber é qual ou quais destes 5 produtos simples não esta na tabela para eu o(s) poder criar!
    SQL Query p/ desmultiplicar campo composto Forum_14


    Última edição por gpessoa em 22/4/2021, 18:08, editado 2 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 22/4/2021, 18:07

    Boa tarde
    Não consegue criar um produto composto sem ter alguma das partes.
    Como sabe o código da parte se ela não existe?
    Penso que se deve debruçar no início do produto composto. Fica resolvido pela raíz


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 22/4/2021, 18:54

    Olá Alexandre,
    Não devia, mas a verdade é que aconteceu pq ate agora eu não tinha nenhum controlo sobre os produtos compostos...
    Basicamente juntava as referencias individuas (tabelas dos fornecedores) e criava os compostos, como se de um artigo simples se tratasse!
    Agora com os módulos que o Alexandre fez o favor de criar, já me permite controlar esses artigos tendo sempre por base os artigos simples...
    Mas infelizmente não esta a funcionar pq o sistema bloqueia  Crying or Very sad

    e como são umas centenas de compostos, encontrar as referencias que estão em falta é como encontrar uma agulha num palheiro!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 22/4/2021, 20:44

    Crie tabela Inexistentes com campo sku
    execute este procedimento para preencher a tabela
    Código:
    Sub PreencheInexistentes()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset, RstP As DAO.Recordset, RstI As DAO.Recordset
        CurrentDb.Execute "DELETE * FROM Inexistentes"
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        Set RstP = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        Set RstI = CurrentDb.OpenRecordset("SELECT * FROM Inexistentes")
        Do Until Rst.EOF
            RstP.MoveFirst
            strCodigo = Rst("sku")
            If InStr(1, strCodigo, "-") = 0 Then
                RstP.FindFirst "sku='" & strCodigo & "'"
                If RstP.NoMatch Then
                    RstI.FindFirst "sku='" & strCodigo & "'"
                    If RstI.NoMatch Then
                        RstI.AddNew
                        RstI!sku = strCodigo
                        RstI.Update
                    End If
                End If
            Else
                Do Until Len(strCodigo) = 0
                    If InStr(1, strCodigo, "-") = 0 Then
                        RstP.FindFirst "sku='" & strCodigo & "'"
                        If RstP.NoMatch Then
                            RstI.FindFirst "sku='" & strCodigo & "'"
                            If RstI.NoMatch Then
                                RstI.AddNew
                                RstI!sku = strCodigo
                                RstI.Update
                            End If
                        End If
                        strCodigo = ""
                    Else
                        RstP.FindFirst "sku='" & Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1) & "'"
                        If RstP.NoMatch Then
                            RstI.FindFirst "sku='" & Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1) & "'"
                            If RstI.NoMatch Then
                                RstI.AddNew
                                RstI!sku = Mid(strCodigo, 1, InStr(1, strCodigo, "-") - 1)
                                RstI.Update
                            End If
                        End If
                        strCodigo = Mid(strCodigo, InStr(1, strCodigo, "-") + 1)
                    End If
                Loop
            End If
            Rst.MoveNext
        Loop
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gpessoa gosta desta mensagem

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 4/5/2021, 17:57

    Muito Obg Alexandre!
    Para as minhas necessidades atuais, resolveu... Cool
    Estou muito grato,
    Bem haja!
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Modulo p/ eliminar inexistentes

    Mensagem  gpessoa 17/1/2022, 23:49

    Boa tarde Alexandre,

    Não querendo abusar da sua boa vontade, precisava de ajuda para mais um modulo, na linha dos anteriores, desta feita para:

    Tenho um campo "relaciondos" que contem produtos "sku" que se relacionam com ele...

    O problema é que com o passar do tempo, alguns (muitos) artigos vão sendo descontinuados e são desativados, no entanto continuam a aparecer como relacionados...

    Ou seja, preciso de uma ferramenta para ver se o "sku" indicado em no campo ralacionados existe no campo sku, e caso não exista, que o remova!

    desde já grato pela atenção!

    abraço
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA03.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (171 Kb) Baixado 3 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 22/1/2022, 20:43

    Boa noite
    Tem que começar a fazer o código e apenas pedir ajuda para tirar dúvidas
    Código:
    Sub RemoveInexistentes()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset, sku As String, strRelacionados As String
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        Do Until Rst.EOF
            strRelacionados = "" & Rst("Relacionados")
            Do Until strRelacionados = ""
                If InStr(1, strRelacionados, "|") = 0 Then
                    sku = strRelacionados
                    strRelacionados = ""
                ElseIf Left(strRelacionados, 1) = "|" Then
                    strRelacionados = Mid(strRelacionados, InStr(1, strRelacionados, "|") + 1)
                Else
                    sku = Mid(strRelacionados, 1, InStr(1, strRelacionados, "|") - 1)
                    strRelacionados = Mid(strRelacionados, InStr(1, strRelacionados, "|") + 1)
                End If
                If InStr(1, Rst("sku"), sku) = 0 Then
                    Rst.Edit
                    Rst("relacionados") = Replace(Rst("relacionados"), "|" & sku, "")
                    Rst("relacionados") = Replace(Rst("relacionados"), sku & "|", "")
                    Rst("relacionados") = Replace(Rst("relacionados"), sku, "")
                    Rst.Update
                End If
                If Len("" & Rst("relacionados")) = 0 Then Exit Do
            Loop
            Rst.MoveNext
        Loop
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 23/1/2022, 23:44

    Olá Alexandre,

    Em primeiro lugar quero agradecer, o tempo e dedicação que tem dedicado as minhas solicitações!

    Compreendo o que me quer dizer, mas criar uma coisas destas esta a anos luz das minhas capacidades...

    Felizmente existem boas pessoas como o Alexandre que, quando podem la vão ajudando!

    Sobre este modulo:

    ele não faz Sad  o que eu queria...

    esta a eliminar quase todas as linhas do campo relacionados, mesmo quando o sku existe!
    para alem disso, eu esqueci-me de indicar e referenciar, que tb deve tem em conta o campo publicado (entretanto já inserido na BD abaixo);
    recapitulando:
    preciso de uma ferramenta para ver se o "sku" indicado em no campo relacionados existe no campo sku, e caso não exista, que o remova, ou mesmo que exista, se o campo “publicado” for igual a zero, também deve remover!
    Ou seja:
    Se o “sku” não existir, remove do campo relacionados
    Se o “publicado” for igual a zero, tb remove do campo relacionados

    Ver imagem:
    SQL Query p/ desmultiplicar campo composto Relaci10

    desde já grato pela atenção possível!

    Abraço
    Guilherme
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA04.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (170 Kb) Baixado 2 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 24/1/2022, 15:07

    Boa tarde
    Claro que não faz tudo de uma vez mas comece pelo primeiro passo. Comece pelo fluxograma das operações e vá por cada passo
    Código:
    Sub RemoveInexistentes()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst As DAO.Recordset, sku As String, arrSKU, strRelacionados As String, i As Integer
        CurrentDb.Execute "UPDATE nvm SET Relacionados=Null WHERE Publicado='0'"
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM nvm")
        Do Until Rst.EOF
            arrSKU = Split("" & Rst("Relacionados"), "|")
            For i = 0 To UBound(arrSKU)
                If InStr(1, Rst("sku"), arrSKU(i)) = 0 Then
                    Rst.Edit
                    Rst("relacionados") = Replace(Rst("relacionados"), "|" & arrSKU(i), "")
                    Rst("relacionados") = Replace(Rst("relacionados"), arrSKU(i) & "|", "")
                    Rst("relacionados") = Replace(Rst("relacionados"), arrSKU(i), "")
                    Rst.Update
                End If
            Next
            Rst.MoveNext
        Loop
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 28/1/2022, 17:59

    Boa tarde Alexandre,
    Só hoje pude testar o modulo e infelizmente tb não esta a funcionar...
    remove tudo; o campo fica sem nada! Crying or Very sad
    SQL Query p/ desmultiplicar campo composto Relaci10
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 28/1/2022, 20:41

    Boa noite
    Comparei registo a registo, quer que compare cada sku com existência em qualquer campo da tabela?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 29/1/2022, 00:55

    Boa noite Alexandre,

    Envio abaixo um desenho ilustrativo daquilo que pretendo...

    SQL Query p/ desmultiplicar campo composto Relaci11
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 29/1/2022, 01:40

    Olá Alexandre,
    Para finalizar o meu projeto, para além do pedido no ultimo post, preciso só de um último módulo…
    Pretendo criar no campo “acessorios” uma lista de “sku” com o separador ”|”, com base no campo “link” e onde o campo ”publicado” é maior que 0 (zero)

    Ver exemplo ilustrativo abaixo:
    SQL Query p/ desmultiplicar campo composto Acesso10

    Envio também base de dados para melhor analise!

    Desde já grato por toda a sua atenção e disponibilidade!

    Abraço
    Guilherme
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA05.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (165 Kb) Baixado 5 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 29/1/2022, 11:41

    Bom dia
    Vamos pela penúltima mensagem que enviou
    Explique em cada caso porque o sku deve ficar ou retirar porque encontro sku que fica e não vejo nenhum relacionado e no id=12 o publicado=0 e mantém o sku?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 29/1/2022, 13:14

    Bom dia Alexandre,
    Se percebi bem a sua questão;
    Se publicado = 0 Não altera o campo relacionados (só nessas linhas).
    SQL Query p/ desmultiplicar campo composto Relaci12
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 29/1/2022, 16:40

    Boa tarde

    A descrição não está clara, por isso é difícil acertar
    veja que refere
    (a laranja) remove porque o campo "publicado" é igual a zero
    (a verde) não altera porque o campo "publicado" é igual a zero
    ou seja quando o campo "publicado" é igual a zero remove ou não altera?

    Na última bd que enviou não encontro dados significativos das situações que pretende nem explicou linha a linha a razão de ficar ou excluir
    Veja se é isto, caso contrário, tem de acertar primeiro na descrição do que pretende
    Código:
    Sub RemoveInexistentes()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim Rst1 As DAO.Recordset, Rst2 As DAO.Recordset, sku As String, arrSKU, stracessorios As String, i As Integer
        Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM nvm WHERE Publicado='1'")
        Set Rst2 = CurrentDb.OpenRecordset("SELECT * FROM nvm WHERE Publicado='1'")
        Do Until Rst1.EOF
            arrSKU = Split("" & Rst1("acessorios"), "|")
            For i = 0 To UBound(arrSKU)
                Rst2.FindFirst "sku='" & arrSKU(i) & "'"
                If Rst2.NoMatch Then
                    Rst1.Edit
                    Rst1("acessorios") = Replace(Rst1("acessorios"), "|" & arrSKU(i), "")
                    Rst1("acessorios") = Replace(Rst1("acessorios"), arrSKU(i) & "|", "")
                    Rst1("acessorios") = Replace(Rst1("acessorios"), arrSKU(i), "")
                    Rst1.Update
                End If
            Next
            Rst1.MoveNext
        Loop
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gpessoa gosta desta mensagem

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 29/1/2022, 18:12

    Boa tarde Alexandre,
    Só tive que alterar o nome do campo que é compostos e não acessorios...
    Mas faz aquilo que pretendia! SQL Query p/ desmultiplicar campo composto 1f600

    Muito agradecido!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 29/1/2022, 19:13

    Faltou o "Resolvido"


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 29/1/2022, 19:34

    Olá Alexandre,

    Ainda não o fiz porque estava a contar com o pedido na mensagem 25!

    Veja o que pode fazer para concluir o meu projeto,

    Depois combinamos um almoço, pago eu! Very Happy

    Abraço
    Guilherme
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 29/1/2022, 21:52

    Tem de explicar detalhadamente o que pretende. Na imagem, escreva o que deve ficar e o que deve sair e porquê


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 29/1/2022, 23:01

    Olá Alexandre,

    veja se consegue perceber (pelo desenho e descrição no mesmo) o que se pretende...

    SQL Query p/ desmultiplicar campo composto Acesso11

    qualquer duvida, disponha!

    Abraço
    Guilherme
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 30/1/2022, 12:09

    Bom dia
    Será isto:
    Código:
    Sub RemoveInexistentes()
        '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'
        Dim RstBase As DAO.Recordset, RstFiltro As DAO.Recordset
        CurrentDb.Execute ("UPDATE nvm SET acessorios=Null")
        Set RstBase = CurrentDb.OpenRecordset("SELECT * FROM nvm WHERE Publicado='1'")
        Do Until RstBase.EOF
            Set RstFiltro = CurrentDb.OpenRecordset("SELECT sku FROM nvm WHERE link='" & RstBase("link") & "' and publicado<>'0'")
            Do Until RstFiltro.EOF
                If RstBase("Acessorios") = RstFiltro("sku") Then 'se sku for igual
                ElseIf RstBase("Acessorios") Like RstFiltro("sku") & "|*" Then 'se começa com o sku
                ElseIf RstBase("Acessorios") Like "*|" & RstFiltro("sku") Then 'se acaba com o sku
                ElseIf RstBase("Acessorios") Like "*|" & RstFiltro("sku") & "|*" Then 'se tem incluído o sku
                Else
                    RstBase.Edit
                    If Len("" & RstBase("Acessorios")) > 0 Then RstBase("Acessorios") = RstBase("Acessorios") & "|"
                    RstBase("Acessorios") = RstBase("Acessorios") & RstFiltro("sku")
                    RstBase.Update
                End If
                RstFiltro.MoveNext
            Loop
            RstBase.MoveNext
        Loop
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 1/2/2022, 21:52

    Olá Alexandre,
    Faz exatamente o que pedi! Smile

    Contudo, ao instalar na BD de produção, detetei que cometi um erro na conceção deste modulo, ou seja:
    O modulo não deve criar em "acessorios" o sku da própria linha, dado que ele próprio já faz parte!

    Desculpe este meu erro e veja se pode retificar...

    veja se consegue perceber (pelo desenho e descrição no mesmo) o que se pretende...
    SQL Query p/ desmultiplicar campo composto Acesso12

    Abraço
    Guilherme
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Alexandre Neves 1/2/2022, 22:41

    Boa noite
    Código:
    Sub RemoveInexistentes()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim RstBase As DAO.Recordset, RstFiltro As DAO.Recordset
        CurrentDb.Execute ("UPDATE nvm SET acessorios=Null")
        Set RstBase = CurrentDb.OpenRecordset("SELECT * FROM nvm WHERE Publicado='1'")
        Do Until RstBase.EOF
            Set RstFiltro = CurrentDb.OpenRecordset("SELECT sku FROM nvm WHERE link='" & RstBase("link") & "' and publicado<>'0'")
            Do Until RstFiltro.EOF
                If RstBase("sku") = RstFiltro("sku") Then
                ElseIf RstBase("Acessorios") = RstFiltro("sku") Then
                ElseIf RstBase("Acessorios") Like RstFiltro("sku") & "|*" Then
                ElseIf RstBase("Acessorios") Like "*|" & RstFiltro("sku") Then
                ElseIf RstBase("Acessorios") Like "*|" & RstFiltro("sku") & "|*" Then
                Else
                    RstBase.Edit
                    If Len("" & RstBase("Acessorios")) > 0 Then RstBase("Acessorios") = RstBase("Acessorios") & "|"
                    RstBase("Acessorios") = RstBase("Acessorios") & RstFiltro("sku")
                    RstBase.Update
                End If
                RstFiltro.MoveNext
            Loop
            RstBase.MoveNext
        Loop
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gpessoa gosta desta mensagem

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 4/2/2022, 20:10

    Excelente!
    Era mesmo isto Very Happy

    Muito, mas mesmo muito obrigado pelo disponibilidade, paciência e dedicação!

    Grande Abraço
    Guilherme

    ps:
    tentei enviar MP mas não esta ativa;
    pergunto se me pode envia MP com o seu contato,
    pelo que percebi é do Porto e eu teria muito gosto em conhece-lo pessoalmente e convida-lo para almoçar!

    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 12/2/2022, 17:04

    Boa tarde Alexandre,

    Relativamente ao ultimo modulo (ver abaixo) solicito mais uma vez a ajuda do Alexandre para um "melhoramento" do mesmo...

    Já andei aqui varias horas a tentar fazer por mim, mas não consigo!  SQL Query p/ desmultiplicar campo composto 1f602
    Tentei varias alternativas nas linhas "RstBase" e "RstFiltro", mas não chego lá...

    Assim, exemplifico na imagem abaixo o que pretendo, bem como também envio BD com esta tabela e o respetivo modulo.


    SQL Query p/ desmultiplicar campo composto Acesso14



    Código:
    Sub CriaAcessoriosV2()
         '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'
        Dim RstBase As DAO.Recordset, RstFiltro As DAO.Recordset
        CurrentDb.Execute ("UPDATE nvm SET acessorios=Null")
        Set RstBase = CurrentDb.OpenRecordset("SELECT * FROM nvm WHERE publicado>'0'")
        Do Until RstBase.EOF
            Set RstFiltro = CurrentDb.OpenRecordset("SELECT sku FROM nvm WHERE link='" & RstBase("link") & "' and publicado>'0'")
            Do Until RstFiltro.EOF
                If RstBase("sku") = RstFiltro("sku") Then
                ElseIf RstBase("Acessorios") = RstFiltro("sku") Then
                ElseIf RstBase("Acessorios") Like RstFiltro("sku") & "|*" Then
                ElseIf RstBase("Acessorios") Like "*|" & RstFiltro("sku") Then
                ElseIf RstBase("Acessorios") Like "*|" & RstFiltro("sku") & "|*" Then
                Else
                    RstBase.Edit
                    If Len("" & RstBase("Acessorios")) > 0 Then RstBase("Acessorios") = RstBase("Acessorios") & "|"
                    RstBase("Acessorios") = RstBase("Acessorios") & RstFiltro("sku")
                    RstBase.Update
                End If
                RstFiltro.MoveNext
            Loop
            RstBase.MoveNext
        Loop
    End Sub
    Anexos
    SQL Query p/ desmultiplicar campo composto AttachmentBD_FA06.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (172 Kb) Baixado 5 vez(es)
    avatar
    gpessoa
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 01/08/2012

    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  gpessoa 7/4/2022, 16:41

    Boa tarde Alexandre,

    Sei que é uma pessoa ocupada e certamente ainda não teve oportunidade de rever a minha solicitação acima (Mensagem 38)…

    Será que é exequível fazer o que pretendo?

    Desde já grato pela atenção possível!

    Conteúdo patrocinado


    SQL Query p/ desmultiplicar campo composto Empty Re: SQL Query p/ desmultiplicar campo composto

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:43