MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    Trabalhando com a expressão LEFT

    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Trabalhando com a expressão LEFT Empty Trabalhando com a expressão LEFT

    Mensagem  Silvio em 24/7/2019, 12: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, 17: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 : 6285
    Registrado : 15/03/2013

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  ahteixeira em 24/7/2019, 18: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 : 4411
    Registrado : 20/04/2011

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Silvio em 24/7/2019, 18: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 : 7356
    Registrado : 05/11/2009

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 24/7/2019, 18: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 : 4411
    Registrado : 20/04/2011

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Silvio em 24/7/2019, 19: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 : 7356
    Registrado : 05/11/2009

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 24/7/2019, 20: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 : 4411
    Registrado : 20/04/2011

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Silvio em 29/7/2019, 10: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 : 7356
    Registrado : 05/11/2009

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 29/7/2019, 17: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 : 4411
    Registrado : 20/04/2011

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Silvio em 29/7/2019, 20: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, 11: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 : 7356
    Registrado : 05/11/2009

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 29/7/2019, 21: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 : 4411
    Registrado : 20/04/2011

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Silvio em 30/7/2019, 11: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 : 4411
    Registrado : 20/04/2011

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Silvio em 30/7/2019, 12: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 : 7356
    Registrado : 05/11/2009

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Alexandre Neves em 30/7/2019, 16: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

    Conteúdo patrocinado

    Trabalhando com a expressão LEFT Empty Re: Trabalhando com a expressão LEFT

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/8/2019, 13:24