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

    [Resolvido]Saber se um numero esta dentro de um intervalo

    Compartilhe
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Sex 09 Fev 2018, 19:51

    Olá
    Tenho uma tabela com os campos ...

    Campo1 | Campo2 | Campo3 ! Campo4


    Campo1 = Cadastrado manualmente sequencia inicial
    Campo2 = Cadastrado manualmente sequencia final
    Campo3 = Calculado , extrai o saldo total do intervalo campo 1 e 2
    Campo4 = Desejo obter o Saldo real ( Campo 1 e 2 ) conforme forem feitos os lançamentos no formulario


    Obs...
    No campo 1 e 2 existem em cada um, uma numeração especifica ... No campo 3 eu calculo o intervalo entre os números do campo 1 e 2 === ex. 10 - 3 = Campo3 = 7 /// Até ai OK

    Só que tenho um formulário que usa estes numero do campo 1 e 2 sendo assim eu preciso dar baixa no total disponível ,

    tenho as sequencias inicial e final , ou ora só a sequencia inicial que foi lançado armazenei into em outra tabela , o problema é como saber que o numero que lancei esta dentro de uma destas sequencias do campo 1 e 2 , talvez fazer uma varredura e ver se o numero lançado se encaixa dentro de um intervalo cadastrado no campo 1 e 2 e dai localizar a linha e em seguida dar baixa que seria o campo 4 com o resultado ou saldo disponível .


    Como criar essa baixa para obter o saldo real do campo 1 e 2 ?


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Sab 10 Fev 2018, 03:09

    Pensei em fazer um loop varrendo a tabela registro por registro e comparando o numero lançado se ele pertence a um intervalo entre campo 1 e 2 de algum registro /// e caso se encaixe OK, encontrou o registro para dar a baixa ...


    Mas como montar esse loop que precisa de uma consulta antes para obter a sequencia inicial e final para ver se o numero lançado esta dentro deste intervalo ?


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Sab 10 Fev 2018, 11:49

    Paulo

    Assim, sem ver o projeto, fica um tanto difícil de entender.

    Sugiro que anexe parte do teu projeto com alguns dados, para que

    o pessoal analise e tentem chegar numa solução.

    [ ]'s
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Sab 10 Fev 2018, 13:17

    Segue parte do projeto ...

    no form Cadastro_Ato esta a questão onde lanço e no sub dele é onde mostra os dados , ao lado do campo Total do sub é onde preciso do Saldo Real ...
    Anexos
    Projeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.1 Mb) Baixado 11 vez(es)


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Sab 10 Fev 2018, 19:16

    Tive uma ideia talvez precise ajustar .......

    Linha = DLookup("[Campo1]>=" & Me.NLancado And "[Campo2]<=" & Me.NLancado, "Tabela", "[Campo1]")

    OBJETIVO DLookup === Verifica na tabela onde o campo1 é maior ou igual que o NumeroLançado e campo2 onde é menor ou igual que o NumeroLançado e guarda na variável  Linha o valor do campo1 /// dai encontrou a linha .......
    Com a referencia da linha ja encontrada acima ...
    Faço uma strSQL UPDATE passando o valor de Linha e atualizo o campo4 com o saldo real ( só que como eu posso pegar o valor que ja esta em campo4 e somar com minha variável ValorLançado e atualizar esse campo4 ) ?

    Eu preciso comparar meu numero lançado , com dois valores na tabela para descobrir a linha do registro.

    e...
    não sei se o DLookup esta montado corretamente, para o meu objetivo.

    --------------------------------------------------------------------------------------------
    Assim para meu teste, esta retornando no DLookup ... (Linha)

    Erro em tempo de execução '13':
    Tipos incompativeis

    NLancado = 12659222
    Linha = DLookup("[NumeroSelo]", "SELOSESTOQUE", "[NumeroSelo]=>" & NLancado And "[SequencialFinal]=<" & NLancado)  'Erro nessa linha...
    MsgBox "Valor Encontrado" & Linha
    -------===-------
    >>>No MsgBox acima deveria retornar o valor do campo [NumeroSelo] ,  que indica que encontrou a linha do registro correspondente.
    os campos [NumeroSelo] e [SequencialFinal] na tabela "SELOSESTOQUE" estão como === Numero e decimal
    --------------------------------------------------------------------------------------------

    Tentei assim tbm e deu erro ...
    Linha = DLookup("[NumeroSelo]", "SELOSESTOQUE", "[NumeroSelo] >= '" & NLancado & "' And [SequencialFinal] <= '" & NLancado & "'")

    >> ------------ e assim ------------- <<
    NLancado = 12659222
    Linha = DLookup("[NumeroSelo]", "SELOSESTOQUE", "[NumeroSelo] <= " & NLancado & " And [SequencialFinal] >= " & NLancado & "")
    MsgBox "Valor Encontrado" & Linha
    -------
    Erro em tempo de execução '-2147352567 (80020009)':
    Este Recordset não pode ser atualizado
    >> ------------//-----//-------------- <<
    .
    Anexos
    ERRO-.jpg
    Você não tem permissão para fazer download dos arquivos anexados.
    (42 Kb) Baixado 3 vez(es)


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Dom 11 Fev 2018, 07:26

    Paulo


    A sintaxe do Dlookup() está errada, não funciona desse jeito.

    Estou analisando teu projeto, para saber exatamente onde deve ser colocado o algorítimo que precisa.

    Pelo que entendi, teremos que fazer uma varredura no intervalo de selos de cada registro, certo?

    O campo NumeroSelo dá o inicio desse intervalo,

    mas, onde é digitado o selo a ser comparado e se não existir, adicionar?

    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Dom 11 Fev 2018, 09:30

    No formulario Cadastro_Ato   ,  no campo  ( NumeroSelo ) e no campo ( SequencialFinal ) .

    ora sera digitado só um  ( NumeroSelo )  e ora sera digitado uma pequena sequencia dentro do intervalo sendo assim sera digitado no campo  ( NumeroSelo ) e no campo ( SequencialFinal )

    obs.
    Na tabela Selos_Cancelados_Usados precisa ser criado o campo saldo, que é onde pretendo gravar o saldo real. Ou em SELOSESTOQUE ...

    Pois quando lanço "salvo" dados no formulário Cadastro_Ato ele salva dados na tabela emolumentos e na tabela Selos_Cancelados_Usados .

    Selos_Cancelados_Usados === é para o controle do que foi lançado e cancelado e o que ainda esta disponível em relação ao estoque.


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 16:49

    Estou tentando assim

    Código:
       Dim Rs As DAO.Recordset
        
        Set Rs = CurrentDb.OpenRecordset("SELOSESTOQUE")
        
        NLancado = 12767357
        
        Do While Not Rs.EOF
            Teste = DLookup("[NumeroSelo]", "SELOSESTOQUE", "[NumeroSelo] <= " & NLancado & " And [SequencialFinal] >= " & NLancado & "")
            If Len(Teste) = 8 Then
                conta1 = Left(Teste, 5)
                conta2 = Left(NLancado, 5)
            End If
            If conta1 = conta2 Then
                MsgBox "Valor Encontrado = " & Teste
                Rs.Close
                Exit Sub
            End If
        Rs.MoveNext
        Loop
        Rs.Close
        MsgBox "Loop completado com sucesso."


    Pois a linha
    Teste = DLookup("[NumeroSelo]", "SELOSESTOQUE", "[NumeroSelo] <= " & NLancado & " And [SequencialFinal] >= " & NLancado & "")
    já retorna o que eu preciso ...  

    preciso ajustar o loop para verificar os registros ...

    pois ele não esta repetindo quando essa linha não satisfaz

    If conta1 = conta2 Then


    esta caindo em

    MsgBox "Loop completado com sucesso."

    mas parece não estar repetindo o loop nos registros seguintes


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 18:45

    Paulo

    Coloque esse código no evento Após atualizar da caixa de texto NumeroSelo:


    Código:

    Dim Rs As Recordset, NLancado As Double, LLancado As Double
    Dim frm As Form

        Set frm = Me.Sub_Pedidos.Form
            
        Set Rs = frm.RecordsetClone
        
        Rs.MoveFirst
        NLancado = Me.NumeroSelo
        
        Do While Not Rs.EOF
             If Rs!NumeroSelo <= NLancado And Rs!SequencialFinal >= NLancado Then
                Me.Sub_Pedidos.Form.Bookmark = Rs.Bookmark
                MsgBox "Valor Encontrado "
                Exit Sub
                    
            End If
            Rs.MoveNext
        Loop
        Rs.Close
    End Sub


    Veja que ele já mostra o registro no subform quando encontrado.
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 18:55

    Tive que montar isso aqui  ...


    Código:
    Public Function lote(ByVal NLancado As Long)
        If Len(NLancado) = 8 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],5) = " & Left(NLancado, 5) & _
            " And Right([NumeroSelo],3) <= " & Right(NLancado, 3) & _
            " And Right([SequencialFinal],3) >= " & Right(NLancado, 3) & "")
            MsgBox "Valor Encontrado = " & NLote
        ElseIf Len(NLancado) = 7 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],4) = " & Left(NLancado, 4) & _
            " And Right([NumeroSelo],3) <= " & Right(NLancado, 3) & _
            " And Right([SequencialFinal],3) >= " & Right(NLancado, 3) & "")
            MsgBox "Valor Encontrado = " & NLote
        ElseIf Len(NLancado) = 6 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],4) = " & Left(NLancado, 4) & _
            " And Right([NumeroSelo],2) <= " & Right(NLancado, 2) & _
            " And Right([SequencialFinal],2) >= " & Right(NLancado, 2) & "")
            MsgBox "Valor Encontrado = " & NLote
        End If
    End Function


    porem estou passando o parametro da função assim no form

    Call lote(1171830)

    mas não mostra nenhuma mensagem  ,  mas ja testei os IF separadamente e estão retornando certinho.

    só ao chamar a função e passar o numero que não acontece nada ...


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 18:58

    Teste o que enviei
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 19:02

    OK,  Noobezinho  Vou testar agora e ja retorno...


    Mas por que os IF funcionam fora de função ,  e quando coloquei em uma função para passar o numero lançado via Call  no parametro as mensagens não aparecem ,  Não acontece nada ?


    Montei a função ERRADO
    ou...
    Passei o parâmetro ERRADO

    Como corrigir ?


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 19:07

    Onde colocou a função, em que módulo?
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 19:09

    Módulo === Functions

    e dei um Call ao abrir do form


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 19:18

    É por isso que não funfa.

    Lembre-se como se referir a controles do formulário.

    Deixe a função na folha de classe do formulário, se quiser deixar no módulo, escreva a referencia completa para o controle:

    Forms!Cadatro_Ato!NomeDoControle.
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 19:27

    Bem lembrado,  havia esquecido. Obrigado

    porem no meu caso ficaria como  pois coloquei o Call  no Form_Load do Cadatro_Ato ?

    Código:
    Private Sub Form_Load()
        Call lote(1171830)
    End Sub

    Coloquei a função na mesma folha do form e mesmo assim não acontece nada.

    ou o ERRO esta na Função ?


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 19:42


    Como é pra verificar a sequencia inicial e final,

    deveria continuar no evento após atualizar do numeroSelo
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 19:46

    OK, entendi,  é que pretendo toda vez que ter que usar essa função para descobrir a linha do registro eu não precisar ficar digitando e sim chamar via Call e gravar o retorno em uma variavel para eu usar em uma consulta strSQL ...


    veja...

    Código:
    Public Function lote(ByVal NLancado As Long)
        If Len(NLancado) = 8 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],5) = " & Left(NLancado, 5) & _
            " And Right([NumeroSelo],3) <= " & Right(NLancado, 3) & _
            " And Right([SequencialFinal],3) >= " & Right(NLancado, 3) & "")
            MsgBox "Valor Encontrado = " & NLote
            SequenciaInicial = NLote
        ElseIf Len(NLancado) = 7 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],4) = " & Left(NLancado, 4) & _
            " And Right([NumeroSelo],3) <= " & Right(NLancado, 3) & _
            " And Right([SequencialFinal],3) >= " & Right(NLancado, 3) & "")
            MsgBox "Valor Encontrado = " & NLote
            SequenciaInicial = NLote
        ElseIf Len(NLancado) = 6 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],4) = " & Left(NLancado, 4) & _
            " And Right([NumeroSelo],2) <= " & Right(NLancado, 2) & _
            " And Right([SequencialFinal],2) >= " & Right(NLancado, 2) & "")
            MsgBox "Valor Encontrado = " & NLote
            SequenciaInicial = NLote
        End If
    End Function

    Código:
    Private Sub btn_01_Click()
        Numero = Me.NumeroSelo
        Call lote(Numero)
        strSQL = "SELECT * FROM SELOSESTOQUE WHERE NumeroSelo= " & SequenciaInicial
    End Sub


    Última edição por PauloMaia em Seg 12 Fev 2018, 19:53, editado 4 vez(es)


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 19:49

    Então coloque-a em um botão de comando.
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 19:54

    Assim veja...

    Código:
    Public Function lote(ByVal NLancado As Long)
        If Len(NLancado) = 8 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],5) = " & Left(NLancado, 5) & _
            " And Right([NumeroSelo],3) <= " & Right(NLancado, 3) & _
            " And Right([SequencialFinal],3) >= " & Right(NLancado, 3) & "")
            MsgBox "Valor Encontrado = " & NLote
            SequenciaInicial = NLote
        ElseIf Len(NLancado) = 7 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],4) = " & Left(NLancado, 4) & _
            " And Right([NumeroSelo],3) <= " & Right(NLancado, 3) & _
            " And Right([SequencialFinal],3) >= " & Right(NLancado, 3) & "")
            MsgBox "Valor Encontrado = " & NLote
            SequenciaInicial = NLote
        ElseIf Len(NLancado) = 6 Then
            NLote = DLookup("[NumeroSelo]", "SELOSESTOQUE", _
            "Left([NumeroSelo],4) = " & Left(NLancado, 4) & _
            " And Right([NumeroSelo],2) <= " & Right(NLancado, 2) & _
            " And Right([SequencialFinal],2) >= " & Right(NLancado, 2) & "")
            MsgBox "Valor Encontrado = " & NLote
            SequenciaInicial = NLote
        End If
    End Function

    Código:
    Private Sub btn_01_Click()
        Numero = Me.NumeroSelo
        Call lote(Numero)
        Set db = CurrentDb()
        strSQL = "SELECT * FROM SELOSESTOQUE WHERE NumeroSelo= " & SequenciaInicial
        Workspaces(0).Databases(0).Execute strSQL
    End Sub


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 20:02

    Se estiver fufando, ótimo!

    Agora é só aproveitar esse mesmo botão e continuar o código para salvar o selo e o que precisar.

    Acredito que não precise daqueles msgboxs() só pra dizer que encontrou a sequência, só servirá para atrasar.

    Use ele apenas para confirmar e/ou concluir uma operação.
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 20:06

    Ta certo ....


    Estava pensando aqui , na minha consulta strSQL eu preciso antes de atualizar o campo saldo da tabela de estoque eu preciso pegar o valor que esta lá e somar a mais com os que eu estou lançando para ter sempre saldo atualizado certo .


    tem idéia de como fazer ?


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 20:44

    Fiz assim ...


    Código:
        If Me.SeqFinal > 0 Then
            SaldoBaixa = (Me.SeqFinal - Me.SeqInicial) + 1
        Else
            SaldoBaixa = 1
        End If

        selo = Me.SeqInicial
        Call lote(selo)
       
        SaldoGravadoTabela = DLookup("[TotalUsado]", "SELOSESTOQUE", "[NumeroSelo]= " & SequenciaInicial & "")
        SaldoReal = SaldoGravadoTabela + SaldoBaixa
       
        strSQL = "UPDATE SELOSESTOQUE SET TotalUsado = " & SaldoReal & " WHERE NumeroSelo = " & SequenciaInicial


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Seg 12 Fev 2018, 20:50

    Assim:

    Docmd RunSQL "UPDATE SELOSESTOQUE SET TotalUsado = " & SaldoReal & " WHERE NumeroSelo = " & SequenciaInicial )

    Esse comando já executa a senteça SQL.
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Seg 12 Fev 2018, 21:02

    OK,  Obrigado , eu não conhecia este comando ...

    Docmd.RunSQL ("UPDATE SELOSESTOQUE SET TotalUsado = " & SaldoReal & " WHERE NumeroSelo = " & SequenciaInicial)

    ----------------------------------------------------

    Aproveitando , preciso fazer referencia a um campo de uma consulta ,  esta certo assim ...

    Código:
       If SaldoReal <= [cs_Sub_EstoqueSelos]![Total] Then
            DoCmd.RunSQL ("UPDATE SELOSESTOQUE SET TotalUsado = " & SaldoReal & " WHERE NumeroSelo = " & SequenciaInicial)
        Else
            MsgBox "Selos excedidos para este lote " & SequenciaInicial & vbCrLf & "Total = " & SaldoGravadoTabela, vbCritical, NomeAplicativo & " , Erro"
        End If


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Ter 13 Fev 2018, 07:48

    Preciso ver todo o código que está fazendo, para ver isso.

    Mas, não pode se referir a um campo da consulta, pois ela existe no momento.

    Porém, antes de enviar, pense comigo:

    Com o método Docmd.RunSQL, já grava o novo número na tabela.

    O subformulário Sub-Pedidos reflete a tabela Selos Estoque.

    Portanto, poderá fazer assim:

    -RunSql - grava na tabela

    -Se o botão de comando está no form principal:
    Me.Sub-Pedidos.Form.Requery ' atualiza o subFormulário.

    Agora ficou fácil:

    TotalUsado= (Me.Sub-Pedidos.Form!SequencialFinal-Me.Sub-Pedidos.Form![NumeroSelo)+1







    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Ter 13 Fev 2018, 13:03

    Entendi a lógica sua, vou usar assim ...  Muito Obrigado.


    Noobezinho ,  estou precisando só de mais um detalhe ... veja


    preciso gerar um txt com os dados de uma consulta ... cada registro em uma linha do txt

    vou ter 2 campos data   ===  dataini e datafim === para buscar a consulta no período e um btn === Gerar TXT
    que...
    ** Sempre gere um txt novo num caminho indicado e um nome indicado "via vba" **
    e para isso ...
    preciso de um loop que vá registro por registro desse período na consulta pegue todos os valores de cada registro e junte em uma linha ,

    ........
    ........
    ........
    ...

    cada registro com os dados daquele registro em uma linha.


    preciso informar campo por campo no momento do loop em que estiver gerando a linha, pois tem campo que precisarei tirar o R$  , tirar a barra das datas ,  ou até em algum campo formatar para acrescentar 0000000  ,  ou seja preciso formatar os valores dos campos para inserir no txt.

    e na ultima linha depois que acabarem os registros preciso de uma linha somatória que de a somatória de 3 campos destes inseridos pelo loop...


    pode me ajudar ...


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"
    avatar
    PauloMaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 02/05/2014

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  PauloMaia em Qua 14 Fev 2018, 01:47

    OK, Noobezinho

    MUITO OBRIGADO PELA AJUDA .....


    [ TÓPICO ENCERRADO - RESOLVIDO ] cheers


    .................................................................................
    O Conhecimento é uma Bagagem que não pesa, porem sempre que saimos para uma nova viagem... lembramos que podiamos ter levado algo a mais conosco.......
    "Não critique quem cair, ajude-o a erguer-se, tal como você gostaria que fizessem com você se estivesse no mesmo caso"
    "A vaidade é o pior dos defeitos porque engana a nós mesmos pois por mais que seja sábio, há sempre alguém mais sábio que você"

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Saber se um numero esta dentro de um intervalo

    Mensagem  Noobezinho em Qua 14 Fev 2018, 06:54

    Paulo

    Vi tuas msgs hoje (qua-cinzas) pela manhã)

    Então resolveu.

    Que bom que pude ajudar no que pude Wink

    Valeu pelo retorno!


    Boa sorte!

      Data/hora atual: Qua 23 Maio 2018, 21:18