MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Trabalhando com a expressão LEFT

    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 24/7/2019, 08:40

    Prezados bom dia a todos.

    Preciso de uma ajuda na expressão abaixo.

    .FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & ""

    Não sei como fazer e estou sendo sincero.

    Preciso que o FindFirst, leia os 5 primeiros números que estão em "CodProdutoOculta" e que seja iguais a cbocodprod.

    Exemplo:

    CodProdutoOculta = 27000-0
    cbocodprod= 27000

    Esse -0 a mais no código, impede que o mesmo me emita uma mensagem de repetição de produtos.  E isso não pode ocorrer.

    Lembrando que tenho o tamanho de códigos variando entre 4 e 6 dígitos.


    Agradeço desde já a ajuda.

    Abraços.

    Abaixo está a rotina completa que eu estou usando.

    Código:
    Private Sub cbocodprod_BeforeUpdate(Cancel As Integer)
    'aqui eu faço a verificação de duplicidade de artigos dentro do pedido.
    Dim frm As Recordset
        Set frm = Me.RecordsetClone
        With frm
        .FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & ""
            If Not .NoMatch Then
              If MsgBox("Deseja repetir esse artigo ?", vbYesNo + vbInformation + vbDefaultButton2, "Confirmação") = vbYes Then
            Else
               Cancel = True
               Me.cbocodprod.Undo
               End If
            End If
        End With
        Set frm = Nothing
    End Sub


    Última edição por Silvio em 24/7/2019, 13:09, editado 1 vez(es) (Razão : alteração no nome da propriedade.)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6954
    Registrado : 15/03/2013

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  ahteixeira em 24/7/2019, 14:06

    Olá Silvio,

    A origem dos dados já deverianestar com 5 digitos, nem que fosse noutro campo.
    Estou no celular, mas tente assim:

    FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped &"-0" & ""

    Abraço
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 24/7/2019, 14:15

    Boa tarde Alvaro.

    Sem resultados positivos. Passa batido, sem emitir a mensagem.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 24/7/2019, 14:25

    Boa tarde
    Faça o FindFirst e mais 4 FindNext
    Sobre ter 4, 5 ou 6 algarismos, como quer comparar em cada situação?


    .................................................................................
    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
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 24/7/2019, 15:02

    Alexandre boa noite.

    Nada também.

    Fiz desse modo, não sei se é o correto.

    Dim frm As Recordset
    Set frm = Me.RecordsetClone
    With frm
    .FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & "-0" & ""
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & "-0" & ""
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & "-0" & ""
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & "-0" & ""
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & "-0" & ""
    If Not .NoMatch Then
    If MsgBox("Deseja repetir esse artigo ?", vbYesNo + vbInformation + vbDefaultButton2, "Confirmação") = vbYes Then
    Else
    Cancel = True
    Me.cbocodprod.Undo
    End If
    End If
    End With
    Set frm = Nothing

    Poderia dar uma passada de olhos, nesse código, por favor !


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 24/7/2019, 16:09

    Boa noite Silvio

    Pelo que indicou, considerando que procura dado texto, será
    Dim frm As Recordset
    Set frm = Me.RecordsetClone
    With frm
    .FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed='" & Me.CodSubped & "-0'"
    if not .nomatch then 'encontrou 1º valor -> coloque-o em variável para usar depois
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed='" & Me.CodSubped & "-0'"
    if not .nomatch then 'encontrou 2º valor -> coloque-o em variável para usar depois
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed='" & Me.CodSubped & "-0'"
    if not .nomatch then 'encontrou 3º valor -> coloque-o em variável para usar depois
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed='" & Me.CodSubped & "-0'"
    if not .nomatch then 'encontrou 4º valor -> coloque-o em variável para usar depois
    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed='" & Me.CodSubped & "-0'"
    if not .nomatch then 'encontrou 5º valor -> coloque-o em variável para usar depois
    If Not .NoMatch Then
    If MsgBox("Deseja repetir esse artigo ?", vbYesNo + vbInformation + vbDefaultButton2, "Confirmação") = vbYes Then
    Else
    Cancel = True
    Me.cbocodprod.Undo
    End If
    End If
    End With
    Set frm = Nothing


    .................................................................................
    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
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 29/7/2019, 06:53

    Alexandre bom dia / boa tarde.

    Lamento por estar respondendo somente agora. Outras atividades aqui me impediram de dar prosseguimento ao tópico.

    Fiz conforme me orientou em tua resposta e não obtive o resultado desejado.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 29/7/2019, 13:10

    Boa tarde, Sílvio
    Faça pequeno db com dados representativos


    .................................................................................
    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
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 29/7/2019, 16:18

    Alexandre, segue o link do Google Drive.

    1- ir no FrmPedido.
    2- colocar a data.
    3- escolher a Pulla Bulla.
    4- escolher a coleção verão 2019/2020
    5- escolher qualquer vendedor.

    Sem as informações acima não roda o pedido.

    No subformulário, escolher qualquer item.
    1- tente repetir o mesmo.  eu tentei 0 27000, tente usar esse como base ou outro qualquer.


    As informações contidas nele foram alteradas  e mescladas.



    Última edição por Silvio em 30/7/2019, 07:25, editado 1 vez(es)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 29/7/2019, 17:31

    Boa noite,
    Tive de retirar as maningâncias do formulário para trabalhar com a tabela e o formulário. Deve facilitar em vez de complicar o trabalho

    Nem percebi bem o que explicou mas coloquei o seguinte código. Veja se é isto
    Código:
    Private Sub cbocodprod_BeforeUpdate(Cancel As Integer)
    'aqui eu faço a verificação de duplicidade de artigos dentro do pedido.
    Dim frm As Recordset
    Dim strProv As String, b As Byte
    Set frm = Me.RecordsetClone
    With frm
        .FindFirst "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped & ""
            If Not .NoMatch Then 'encontrou 1º valor -> coloque-o em variável para usar depois
                b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
                .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
                If Not .NoMatch Then 'encontrou 2º valor -> coloque-o em variável para usar depois
                    b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
                    .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
                    If Not .NoMatch Then 'encontrou 3º valor -> coloque-o em variável para usar depois
                        b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
                        .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
                            If Not .NoMatch Then 'encontrou 4º valor -> coloque-o em variável para usar depois
                                b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
                                .FindNext "CodProdutoOculta='" & Me.cbocodprod & "' And CodSubPed=" & Me.CodSubped
                                If Not .NoMatch Then 'encontrou 5º valor -> coloque-o em variável para usar depois
                                    b = b + 1: strProv = vbCrLf & frm(0) & "-" & frm(1) & "-" & frm(2) & "-" & frm(3) & "-" & frm(4) & "-" & (5)
                                    If Not .NoMatch Then
                                        If MsgBox("Deseja repetir esse artigo ?", vbYesNo + vbInformation + vbDefaultButton2, "Confirmação") = vbYes Then
                                    Else
                                        Cancel = True
                                        Me.cbocodprod.Undo
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        Set frm = Nothing
     End With
       
    If b > 0 Then MsgBox "Já existe(m) " & b & " registos com esta condição:" & vbCrLf & strProv
    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
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 30/7/2019, 07:24

    Alexandre bom dia/boa tarde.

    Lamento pelo transtorno que eu lhe fiz, mas não tinha como eu tirar algumas funções do formulário.

    Vou testar e lhe coloco a par.

    Grato.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 30/7/2019, 08:42

    Alexandre....

    Estou tentando mudar essa linha...

    If b > 0 Then MsgBox "Já existe(m) " & b & " registos com esta condição:" & vbCrLf & strProv

    para essa abaixo

    If b > 0 Then If MsgBox("Deseja repetir esse artigo ?" & vbCrLf & _
    "Já existe(m) " & b & " registos com esta condição:" & vbCrLf & _
    strProv, vbYesNo, "CONFIRMAÇÃO") = vbNo Then Exit Sub

    Porém o formulário que mostra as cores, ainda aparece, mesmo colocando não como resposta.

    Outra coisa.

    Se escolher a marca PULA BULA,na coleção verão 2019/20 verás que a rotina desenvolvida não funciona ( experimente o código 27000 e tente repetir o mesmo ), mas para as demais marcas, funciona e isso é muito bom.
    Creio que seja por causa do traço ( - ) que a mesma tem em seus códigos de produtos.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 30/7/2019, 12:37

    Boa tarde, Sílvio
    No inicio do form, onde tem
    Option Compare Database
    Option Explicit

    acrescente
    Private AbreFrmCor As Boolean

    No AfterUpdate onde tem
    If Forms!FrmPEdido!Forneoculta = "Pulla Bulla" Then
        DoCmd.OpenForm "FrmCor", , , , , , Me.cbocodprod.Column(1)
    End If

    altere para
    If Forms!FrmPEdido!Forneoculta = "Pulla Bulla" Then
        If AbreFrmCor Then DoCmd.OpenForm "FrmCor", , , , , , Me.cbocodprod.Column(1)
    End If

    No BeforeUpdate coloque
    If b > 0 Then
        If MsgBox("Deseja repetir esse artigo ?" & vbCrLf & "Já existe(m) " & b & " registos com esta condição:" & vbCrLf & strProv, vbYesNo, "CONFIRMAÇÃO") = vbNo Then AbreFrmCor = False: Exit Sub Else AbreFrmCor = True
    End If

    A segunda parte não posso ver agora, talvez logo ao fim do dia (estou de férias mas com muito trabalho)
    Abraço,


    .................................................................................
    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
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 18/11/2019, 19:10

    Boa noite,
    Como anda este assunto Silvio?


    .................................................................................
    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
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4634
    Registrado : 20/04/2011

    [Resolvido]Trabalhando com a expressão LEFT Empty Re: [Resolvido]Trabalhando com a expressão LEFT

    Mensagem  Silvio em 19/11/2019, 10:13

    Boa tarde Alexandre....

    Ato falho meu....já resolvido.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."

      Data/hora atual: 25/11/2020, 11:15