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]Laço FOR NEXT - Como indexar variáveis?

    avatar
    LUCIEL-UDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 19/12/2011

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Laço FOR NEXT - Como indexar variáveis?

    Mensagem  LUCIEL-UDI 30/5/2013, 17:37

    Private Sub Título_Enter()

    For X = 1 To Var_QtParcelas
    If IsNull(Vencimento) = True Then
    DataVencimento = Var_DataFaturamento + Var_Pz1 ' PRECISO SUBSTITUIR O 1 PELO X. COMO FAZER ISSO?
    Vencimento = DataVencimento
    X = X + 1
    End If
    Next X

    End Sub
    ____________________________________________

    Meus amigos, bom dia!

    Não sei se o título está correto com o problema que estou precisando resolver.

    Já expus acima minha dúvida, mas abaixo descrimino toda a lógica do programa, caso seja necessário para entender minha dúvida e poderem me ajudar:

    Ao tirar um pedido, o usuário terá a opção de preencher até 13 campos de pagamento. Vamos supor que em um pedido o usuário optou pelo prazo de pagamento 30/60/90 DD - 3 parcelas.

    Em outro formulário, preciso dar entrada nas duplicatas que foram geradas por esse pedido através de seu faturamento.

    Na primeira parte, o sistema pede que seja preenchido os seguintes campos: DATA FATURAMENTO / Nº NOTA FISCAL / VALOR FATURADO

    Na segunda parte, quero que o sistema atribua os devidos valores aos títulos automaticamente, baseado nas informações acima. Ou seja, quero que o sistema me dê as seguintes informações: DATAS DOS VENCIMENTOS DOS TÍTULOS / NÚMEROS DOS TÍTULOS / VALOR DOS TÍTULOS

    Então, o usuário informou que o prazo de pagamento seriam 30/60/90 dias - três parcelas. Essas informações foram arquivadas na tabela CADASTRO DO PEDIDO, com os campos:

    Prz1 'Prazo pagamento um
    Prz2 'Prazo pagamento dois
    Prz3 'Prazo pagamento três
    ...
    Prz13 'Prazo pagamento treze
    QTPARCELAS 'Armazena quantos campos acima foram preenchidos pelo usuário

    Em outra tabela chamada FATURAMENTO, há os campos DATAFATURAMENTO / NOTAFISCAL e VALORFATURADO. Suponhamos que o usuário digitou as informações:

    DATAFATURAMENTO: 28/05/13
    NOTAFISCAL: 789456
    VALORFATURADO: 3.000,00

    <<<< AGORA ENTRA MINHA DIFICULDADE ONDE PRECISO DA AJUDA DOS "UNIVERSITÁRIOS" >>>>


    Na abertura do formulário CONTROLEDUPLICATAS onde vou cadastrar os títulos (duplicatas) que serão armazenadas na Tabela DUPLICATAS eu transporto os campos dos prazos para variáveis já definidas no módulo VARIÁVEIS, exemplo:

    Var_Pz1 = Prz1
    Var_Pz2 = Prz2 ' e assim sucessivamente até que todas as variáveis estejam alimentadas com os campos dos prazos
    Var_QtParcelas = QtParcelas

    Seguindo nosso exemplo hipotético, o PRZ1 e o VAR_PZ1 = 30 / PRZ2 e o VAR_PZ2 = 60 / PRZ3 e o VAR_PZ3 = 90 e o campo quantidade parcelas ficou: Var_QtParcelas e QtParcelas = 3

    No subformulário irei usar essas variáveis com um laço FOR NEXT, para preencher os campos da Tabela DUPLICATAS:

    NºDOCUMENTO = Número da Nota Fiscal com o sinal de "/" acrescido pela quantidade de parcelas. Exemplo: 789456/1 depois 789456/2 e 789456/3 conforme nosso raciocínio.

    VENCIMENTODUPL = Será a DATAFATURAMENTO + PRZ1, ou seja: = 28/05/13 + 30 = 27/06/13, depois = 28/05/13 + 60(Prz2) = 27/07/13 e = 28/05/13 + 90(Prz3) = 26/08/13.

    VALORDUPL = VALORFATURADO dividio pelo campo QTPARCELAS, ou seja, 3.000,00 / 3 = 1.000,00


    Ao abrir o formulário CONTROLEDUPLICATAS_SUBFORMULÁRIO eu atribuo a variável X como inteiro, que será usada no laço For Next posteriormente:

    Private Sub Form_Load()

    Dim X As Integer
    Dim DataVencimento As String

    X = 0
    DataVencimento = ""

    End Sub
    __________________________________________________

    Como fazer para atribuir um indexador na variável VAR_PZ, de forma que quando o laço For Next for executado eu atribua valores as variáveis Var_Pz1, Var_Pz2, Var_Pz3 e etc...

    Pensei usar um parantêse mas não deu certo, Exemplo: Var_Pz(X), onde o X será o 1, o 2 e quantos forem até que atinja o valor máximo de quantidade de parcelas.

    Private Sub Título_Enter()

    For X = 1 To Var_QtParcelas
    If IsNull(Vencimento) = True Then
    DataVencimento = Var_DataFaturamento + Var_Pz1 ' PRECISO SUBSTITUIR O 1 PELO X. COMO FAZER ISSO?
    Vencimento = DataVencimento
    X = X + 1
    End If
    Next X

    End Sub
    ------------------------------------------------------------
    Agradeço pela atenção. Obrigado!

    Luciel
    avatar
    Convidado
    Convidado


    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  Convidado 30/5/2013, 21:50

    Tente assim:

    For X = 1 To Var_QtParcelas
    If IsNull(Vencimento) = True Then
    DataVencimento = Var_DataFaturamento + CInt("Var_Pz" & " & X & ")
    Vencimento = DataVencimento
    X = X + 1
    End If
    Next X

    Cumprimentos.
    avatar
    LUCIEL-UDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 19/12/2011

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  LUCIEL-UDI 30/5/2013, 22:29

    Obrigado Piloto pela ajuda, mas NÃO deu certo.

    Aparaceu uma mensagem de erro: Erro em tempo de Execução: 13 - Tipos incompatíveis.

    avatar
    Convidado
    Convidado


    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  Convidado 31/5/2013, 00:05

    Como são carregadas as variaveis Var_Pz(x)?
    São baseadas em algum campo do form?


    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  Convidado 31/5/2013, 00:10

    Envie um pequeno exemplo com o formulario e tabela envolvidos.

    Cunprimentos.
    avatar
    LUCIEL-UDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 19/12/2011

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  LUCIEL-UDI 31/5/2013, 02:32

    Oi Piloto. Não dá para enviar parte do sistema, pois é muita coisa envolvida e iria ficar um tempão só para desmembrar para enviar, mas veja se entende com as explicações que descrevi no começo do tópico e junte com estas:

    As variáveis Var_Pz1, Var_Pz2, Var_Pz3, Var_Pz4... até Var_Pz13, são alimentadas pelos campos Prz1, Prz2, Prz3 respectivamente.

    Exemplo: Um usuário cadastra um prazo de pagamento com 30/60/90 dias. O campo Prz1 = 30, o Prz2 = 60, Prz3 = 90 e o campo QtParcelas será igual a 3.

    Depois para facilitar o uso desta informação, eu transfiro esses dados para variáveis, sendo que a variável Var_Pz1 = Prz1, Var_Pz2 = Prz2, Var_Pz2 = Prz2 e a variável Var_QtParcelas = QtParcelas

    Agora eu quero que o campo DataVencimento seja igual a variável Var_DataFaturamento + a variável Var_Pz1 e demais prazos de pagamento, ficando assim:

    DATA FATURAMENTO: 25/05/13
    PRAZO DE PAGAMENTO: 30/60/90
    QUANTIDADE DE PARCELAS: 3

    Neste exemplo temos um loop de 3 laços, que são as quantidades de parcelas.

    Logo, preciso usar o FOR NEXT para atribuir a variável Data de Faturamento (Var_DataFaturamento) os seguintes valores:

    Loop 1: For X = 1 to QtParcelas 'Igual a 3

    DataVencimento = Var_DataFaturamento (que é 25/05/13) + Var_PzX (que é igual a 30), tendo como resultado: 24/06/13

    Loop 2: For X = 2 to QtParcelas 'Igual a 3

    DataVencimento = Var_DataFaturamento (que é 25/05/13) + Var_PzX (que é igual a 60), tendo como resultado: 24/07/13

    Loop 3: For X = 3 to QtParcelas 'Igual a 3

    DataVencimento = Var_DataFaturamento (que é 25/05/13) + Var_PzX (que é igual a 90), tendo como resultado: 23/08/13
    --------------------------------------------------------

    Eu não estou sabendo é como usar o X do FOR NEXT junto a variável Var_Pz1, ou seja, substituir o 1, o 2 e etc, pelo X.

    Espero ter explicado direito.

    Aguardo ajuda dos amigos.

    Obrigado.






    avatar
    Convidado
    Convidado


    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  Convidado 31/5/2013, 05:48

    Utilize o próprio campo diretamente no procedimento:


    Private Sub Comando0_Click()
    Dim X As Integer

    For X = 1 To 3
    MsgBox Me("ptz" & X)
    Next X
    End Sub


    cumprimentos.
    avatar
    LUCIEL-UDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 19/12/2011

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  LUCIEL-UDI 31/5/2013, 22:17

    Piloto, estamos chegando perto do final do problema.

    Analisei sua ideia e refiz de acordo com minha necessidade.

    Veja que no Formulário1 funciona legal, mas não tem o uso das variáveis que preciso. Já no Formulário2 tem o que eu preciso, mas está dando incompatibilidade no formato das variáveis.

    Sei que és um rapaz esperto e vai me ajudar a achar uma solução. Wink

    Aguardo vosso retorno ou de algum outro amigo do Forum.

    Abraços;

    Luciel
    Anexos
    [Resolvido]Laço FOR NEXT - Como indexar variáveis? AttachmentBDExemploDatas.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (44 Kb) Baixado 10 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  JPaulo 3/6/2013, 13:24

    Duas soluções;

    1ª Solução:
    Num modulo:



    Public Var_QtParcelas As Integer
    Public myArray(1 To 3) As Integer


    No fomulario:


    Private Sub Comando0_Click()
    Dim X As Integer

    Var_QtParcelas = Me.QtParcelas.Value

    myArray(1) = Me.Pz1.Value
    myArray(2) = Me.Pz2.Value
    myArray(3) = Me.Pz3.Value

    For X = 1 To Var_QtParcelas
    MsgBox myArray(X)
    DataVencimento = DataFaturamento + myArray(X)
    MsgBox DataVencimento
    Next X
    End Sub

    _____________________________________________________________

    2ª Solução:
    Num modulo:



    Public Var_QtParcelas As Integer
    Public VarPz1 As Integer
    Public VarPz2 As Integer
    Public VarPz3 As Integer

    Public Function RecebeVariaveis()
    Application.TempVars.Add "VarPz1", Forms!Formulário1.Form!Pz1.Value
    Application.TempVars.Add "VarPz2", Forms!Formulário1.Form!Pz2.Value
    Application.TempVars.Add "VarPz3", Forms!Formulário1!.Form!Pz3.Value
    VarPz1 = TempVars("VarPz1")
    VarPz2 = TempVars("VarPz2")
    VarPz3 = TempVars("VarPz3")
    End Function


    No fomulario:


    Private Sub Form_Load()
    Call RecebeVariaveis
    End Sub


    Private Sub Comando0_Click()
    Dim X As Integer

    Var_QtParcelas = Me.QtParcelas.Value

    For X = 0 To Var_QtParcelas - 1
    MsgBox CStr(TempVars(X).Value)

    DataVencimento = DataFaturamento + CStr(TempVars(X).Value)
    MsgBox DataVencimento
    Next X
    End Sub



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Folder_announce_new Instruções SQL como utilizar...
    avatar
    LUCIEL-UDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 39
    Registrado : 19/12/2011

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  LUCIEL-UDI 4/6/2013, 00:03

    Obrigado João Paulo!

    A primeira solução foi a mais aceitável, pois o meu sistema é bem mais complexo do que o exemplo que coloquei, pois contem formulário e subformulário, logo, tive que fazer algumas adaptações até conseguir fazer funcionar. Tentei a segunda solução, mas não deu certo. Tenho muito a aprender. rs

    No meu caso tive que criar um conjunto a parte de variáveis e no formulário creditar os valores dos campos para elas. Depois no subformulário, peguei essas variáveis e creditei seus valores em outras, só assim o sistema reconheceu e deu certo. Segue como ficou:

    No Módulo

    Public Var_Prz1, Var_Prz2, Var_Prz3, Var_Prz4, Var_Prz5, Var_Prz6, Var_Prz7, Var_Prz8, Var_Prz9, Var_Prz10, Var_Prz11, Var_Prz12, Var_Prz13 As Integer
    Public Var_QtParcelas, ContPrz As Integer
    Public Var_Pz(1 To 13) As Integer


    No Formulário

    Private Sub Form_Open(Cancel As Integer)

    Var_DataFaturamento = Me.DataFaturamento.Value
    Var_ValorFaturado = Me.ValorFaturado.Value
    Var_NotaFiscal = Me.NotaFiscal.Value
    Var_QtParcelas = Me.QtParcelas.Value
    Var_Prz1 = Me.Prz1.Value
    Var_Prz2 = Me.Prz2.Value
    Var_Prz3 = Me.Prz3.Value
    Var_Prz4 = Me.Prz4.Value
    Var_Prz5 = Me.Prz5.Value
    Var_Prz6 = Me.Prz6.Value
    Var_Prz7 = Me.Prz7.Value
    Var_Prz8 = Me.Prz8.Value
    Var_Prz9 = Me.Prz9.Value
    Var_Prz10 = Me.Prz10.Value
    Var_Prz11 = Me.Prz11.Value
    Var_Prz12 = Me.Prz12.Value
    Var_Prz13 = Me.Prz13.Value

    End Sub


    No Subformulario

    Private Sub Form_Load()

    ContPrz = 1

    End Sub


    Private Sub Título_Enter()

    Var_Pz(1) = Var_Prz1
    Var_Pz(2) = Var_Prz2
    Var_Pz(3) = Var_Prz3
    Var_Pz(4) = Var_Prz4
    Var_Pz(5) = Var_Prz5
    Var_Pz(6) = Var_Prz6
    Var_Pz(7) = Var_Prz7
    Var_Pz(Cool = Var_Prz8
    Var_Pz(9) = Var_Prz9
    Var_Pz(10) = Var_Prz10
    Var_Pz(11) = Var_Prz11
    Var_Pz(12) = Var_Prz12
    Var_Pz(13) = Var_Prz13


    If ContPrz <> Var_QtParcelas Then
    Vencimento = Var_DataFaturamento + Var_Pz(ContPrz)
    MsgBox Vencimento
    ContPrz = ContPrz + 1
    End If

    End Sub

    Mais uma vez, obrigado a todos os mestres que tem nos ajudado. Valeu e que DEUS OS ABENÇOE!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  JPaulo 4/6/2013, 11:35

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Laço FOR NEXT - Como indexar variáveis? Empty Re: [Resolvido]Laço FOR NEXT - Como indexar variáveis?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 17:44