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

    [Resolvido]SQL Query p/ desmultiplicar campo composto

    avatar
    gpessoa
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty [Resolvido]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!

    [Resolvido]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
    [Resolvido]SQL Query p/ desmultiplicar campo composto AttachmentBD_FA01.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (408 Kb) Baixado 5 vez(es)


    Última edição por gpessoa em 27/3/2021, 12:25, 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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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!
    [Resolvido]SQL Query p/ desmultiplicar campo composto Forum_13


    envio em anexo uma BD com a estrutura e dados do exemplo acima
    Anexos
    [Resolvido]SQL Query p/ desmultiplicar campo composto AttachmentBD_FA01.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (340 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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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
    [Resolvido]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 4 vez(es)
    avatar
    gpessoa
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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!
    [Resolvido]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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 8019
    Registrado : 05/11/2009

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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 : 23
    Registrado : 01/08/2012

    [Resolvido]SQL Query p/ desmultiplicar campo composto Empty Re: [Resolvido]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!

      Data/hora atual: 18/9/2021, 18:41