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]Inserção automática de registros.

    Compartilhe
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Ter 06 Jun 2017, 06:56

    Bom dia.

    Este é meu primeiro tópico, e estou com uma dúvida.

    Possuo um formulário chamado "frmBoletos" para fazer a emissão de boletos de cobrança. Neste formulário seleciono o cliente, a data do primeiro vencimento e a quantidade de parcelas, entre outros campos de menor importância. Pois bem, após informar estes campos, é gerado automaticamente no subformulário "frmBoletosSub" 1 registro para cada parcela informada no formulário "frmBoletos" e ao clicar em imprimir, sai impresso os boletos (4 por folha). Até aí tudo bem, acontece que ao cadastrar o cliente, eu especifico para ele uma data de vencimento, que pode ser qualquer dia do mês. Então existem vários clientes com várias datas de vencimentos. Eu preciso que ao abrir o formulário "frmBoletos", eu selecionasse o dia do mês para vencimento e que o sistema imprimisse de uma só vez todos os boletos de todos os clientes que tivessem o vencimento marcado para o dia escolhido. Lembrando que neste caso o nº de parcelas por padrão seria 12.

    Vou tentar explicar melhor: Existem 10 clientes em que o vencimento é para o dia 15 de cada mês. Eu preciso que o sistema procure os clientes com esta data de vencimento e insira 10 registros e em cada registro 12 parcelas. Filtrar os clientes é fácil, faria o filtro no relatório baseado em uma consulta. Eu não sei como fazer é para inserir os registros um por um e cada qual com as 12 parcelas no subform, procurei mas não consegui descobrir, já que meu conhecimento em VBA é relativamente pouco.

    Espero que alguém possa me ajudar.

    Att
    Emerson
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qua 07 Jun 2017, 00:14

    Alguém tem alguma idéia de como resolver isso? Acredito que não seja tão difícil, mas isso para quem sabe.
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3012
    Registrado : 06/11/2009

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Assis em Qua 07 Jun 2017, 01:01

    Boa noite
    Poste aí a tabela, e o formulário "frmBoletos"


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qua 07 Jun 2017, 09:20

    Bom dia Assis

    Obrigado pela atenção.

    Segue em anexo parte do BD.


    Att.
    Emerson
    Anexos
    Boletos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (52 Kb) Baixado 11 vez(es)
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3012
    Registrado : 06/11/2009

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Assis em Qua 07 Jun 2017, 12:11

    Ponha pelo menos 2 (Dois) Clientes

    Aguardo


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qua 07 Jun 2017, 13:57

    Bom dia Assis.

    Há dois clientes cadastrados, Emerson e Evandro.

    Att
    Emerson.
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3012
    Registrado : 06/11/2009

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Assis em Qua 07 Jun 2017, 18:19

    Boa tarde

    [Você precisa estar registrado e conectado para ver este link.]

    Aguardo


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qui 08 Jun 2017, 00:11

    Boa tarde Assis.

    Segue em anexo o BD com a inclusão de 1 novo registro. O que fiz foi entrar no form frmBoletos e incluir um novo lançamento para o cliente Evandro, e as parcelas geram automaticamente ao colocar a data do primeiro vencimento.

    Att.
    Emerson
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3012
    Registrado : 06/11/2009

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Assis em Qui 08 Jun 2017, 00:49

    Teste e comente
    Anexos
    Boletos Assis.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (52 Kb) Baixado 10 vez(es)


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qui 08 Jun 2017, 01:35

    Olá Assis.

    Como já havia comentado, filtrar por data eu consigo fazer através da consulta, assim como tu fez. O que eu preciso saber é como imprimir(gerar os boletos) de todos os clientes cadastrados.

    Deixa te explicar de uma maneira mais fácil de entender e sem filtros. Eu preciso que ao entrar no formulário frmBoletos, eu clique no botão imprimir (no form que te enviei não existe nenhum botão imprimir, o código está no evento após atualizar do campo PrimeiroVencimento) e ele fizesse automaticamente 1 lançamento para cada cliente cadastrado. Se houver 50 clientes cadastrados, ele irá gerar 50 novos lançamentos. Para gerar as parcelas é mais fácil porque eu escolho o número de parcelas, mas no caso dos clientes, hoje tem um número, amanhã terá um novo número, e é aí que me complico.

    Dá uma olhada no código que está no evento Após Atualizar do campo PrimeiroVencimento, bem como a função CalcParc, acho que vai ajudar a tu compreender o que preciso.

    Att
    Emerson
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Seg 12 Jun 2017, 18:08

    Boa tarde,
    Se bem percebi, nem precisa de form. Basta ter função que crie 1 registo na tabela para cada cliente. É isto?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Seg 12 Jun 2017, 19:46

    Boa tarde Alexandre.

    Sim, basicamente é isto. Não sei se tu olhou o exemplo que enviei, mas repare que há 2 clientes cadastrados, mas poderiam ser 200 e estes 200 gerarão 12 boletos automaticamente, através da função calcparc que está no form frmBoletos. O que eu necessito é alguma função que ao entrar no form eu clique no botão e ele crie um registro para cada um dos clientes cadastrados e para cada registro insira 12 boletos no subform frmBoletosSub.

    O problema é que são 200 clientes por mês que são gerados os boletos, no outro mês são outros 200 clientes, no terceiro mês mais 200 e assim por diante, no total são em torno de 2400 clientes. Por isso preciso desta função, para facilitar e muito a vida de quem vai inserir estes dados. Observação, estes boletos não são bancários, são como um carnê, mas com a aparência de um boleto.

    Se tu puder ajudar, ficarei muito, muito agradecido, pois já tinha perdido a esperança de ter alguma ajuda.

    Att.
    Emerson
    Anexos
    Boletos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (233 Kb) Baixado 10 vez(es)
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Ter 13 Jun 2017, 09:02

    Bom dia,
    Pelo que vi, a função está a funcionar bem mas só trabalha o cliente activo no form e você quer que ele faça a execução para todos os clientes da tabela
    É isto que quer?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Ter 13 Jun 2017, 14:41

    Bom dia Alexandre.

    Exatamente isto. Preciso que ao abrir o form frmBoletos e clicar em um botão gere 1 registro para cada cliente e para cada cliente 12 registros no subform.
    Não estou acomodado, estou procurando alguma outra solução, mas não tô conseguindo. Por isso estou muito precisando de ajuda.

    Att.
    Emerson
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Ter 13 Jun 2017, 15:52

    Veja se serve como pretende
    lembre-se de fazer cópia de bd, salvaguardando dados existentes
    Código:
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, rs As DAO.Recordset, i As Byte, rs1 As DAO.Recordset
        Dim Xdimi As Integer
       
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Vendas WHERE PrimeiroVencimento=#" & PrimeiroVencimento & "#")
        Do While Not Rst.EOF
            Set rs = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta where Código = " & Rst("CódigoVendas"))
            Set rs1 = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta where Código = " & Rst("CódigoVendas") & " and ValorPago > 0")
       
            If Not rs1.EOF Then
                MsgBox "Esta Venda ja foi parcelada e contém pagamentos efetuados. " & Chr(10) & "" & "Não será possivel refazer parcelamento !!!", vbCritical, ":::  APTA SISTEMAS  ::::"
                GoTo Seguinte
            End If
               
            If Not rs.EOF Then
                If MsgBox("Já existe um parcelamento para esta Venda !!! " & Chr(10) & "Deseja substituir pelos novos valores? ", vbYesNo + vbExclamation + vbDefaultButton1, ":::  APTA SISTEMAS  ::::") = vbYes Then
                    CurrentDb.Execute "Delete * from VendasSubFormConsulta where Código = " & Me.CódigoVendas & ""
                Else
                    GoTo Seguinte
                End If
            End If
           
            If Me.ValorParcela > 0 Then
                For i = 1 To 12
                    With rs
                        .AddNew
                        !Código = Rst("CódigoVendas")
                        !NºTítulo = Format(i, "00")
                        !DataVencimento = DateAdd("m", i - 1, (Me.PrimeiroVencimento))
                        !ValorTítulo = Round(Rst("ValorParcela"), 2)
                        !Cliente = Rst("Cliente")
                        !Adress = Rst("Endereço")
                        !Bairro = Rst("Bairro")
                        !Cidade = Rst("Cidade")
                        !Estado = Rst("Estado")
                        !CEP = Rst("CEP")
                        !CPF = Rst("CPF")
                        !DataEmissão = Me.DataEmissão
                        .Update
                    End With
                Next
            Else
                CurrentDb.Execute "Delete * from VendasSubFormConsulta where Código = " & Rst("CódigoVendas")
            End If
    Seguinte: Rst.MoveNext
        Loop
        rs.Close
        Set rs = Nothing
        Set Rst = Nothing
        Me.frmBoletos.Requery
        Me.frmBoletosSub.Requery


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Ter 13 Jun 2017, 16:15

    Muito obrigado Alexandre, irei testar de imediato.

    Emerson
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qua 14 Jun 2017, 07:00

    Bom dia Alexandre.

    Não consegui adequar o teu código para o que preciso. Sei que tu criou ele de acordo com o que te expliquei. A idéia na verdade é a mesma, mas passei o dia todo procurando encaixar para o que necessito mas não consegui. Procurei alguma maneira de filtrar os clientes por dia do mês para gerar os boletos através do teu código, mas não encontrei.

    No exemplo em anexo, tu vai ver que no cadastro de clientes, há o campo Vencimento Padrão, que se refere ao dia do mês apenas, e no form frmBoletos, criei 4 campos não acoplados, 1 para o dia do mês, outro para o mês, outro para o ano e um terceiro onde concateno os 3 campos gerando a data no formato abreviada. Na verdade mesmo, irei criar depois do código estar como desejo, um formulário de entrada, onde digitarei estes campos (e não no form frmBoletos) e ao clicar, o código geraria os lançamentos para cada cliente que têm a data de vencimento especificada no dia do mês do formulário de entrada. O problema é que não consegui achar uma maneira de filtrar os clientes por data, quer dizer, filtrar é fácil, mas como fazer o programa entender que terá que gerar os boletos apenas para estes clientes, já que estão em outra tabela que não a de Vendas.

    No teu código, alterei algumas coisas, como as verificações se existem lançamentos das parcelas e se já tem alguma paga não pode excluir. Porque já que irá lançar automaticamente, não terá necessidade de fazer estas verificações.

    Te peço mais uma vez, por favor, a tua ajuda. Não estou acomodado só esperando a ajuda cair do céu, tanto é que desde o meio-dia, até agora 03:00 da madrugada, estava debruçado em cima do programa, mas não achei solução.

    Att
    Emerson
    Anexos
    Boletos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (253 Kb) Baixado 2 vez(es)
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Qua 14 Jun 2017, 07:51

    Bom dia,
    Esqueça as explicações anteriores. Explique tudo de novo como pretende.

    Comece a nomear de forma normalizada (txtData-caixa de texto da data, cxcCliente-caixa de combinação de cliente, cmdExecutar-botão de comando para executar, etc). Vai ajudar muito na compreensão do código


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qui 15 Jun 2017, 02:45

    Bom dia Alexandre.

    Desculpe se não estou conseguindo explicar direito. Vou me esforçar para demonstrar o mais claro possível, o que desejo.

    No formulário frmClientes, que é baseado na tabela Fornecedores (o nome é este mesmo), existem os campos comuns em um cadastro e também há os campos TipoPlano (uma combox que pesquisa os dados na tabela Planos) e VencimentoPadrão (cadastra apenas o dia do mês, ex: 01,10,15,30).

    Bueno, no formulário frmBoletos, atente por favor para a combox cxcCliente, onde no evento Após Atualizar existem as expressões abaixo:

    Me.txtCodPlano = Me.cxcCliente.Column(9)
    Me.ValorParcela = DLookup("txtValor", "Planos", "[CodPlano] = [txtCodPlano]")

    O campo txtCodPlano é não acoplado, que serve apenas para receber o nº do Código da tabela Planos, que servirá para lançar através do DLookup, no campo ValorParcela, como diz o nome, o Valor da Parcela, conforme o tipo de plano que há no cadastro do cliente. Isso tudo teria que estar na função que tu criou para mim.

    Outra coisa importante, no form frmBoletos, há 4 campos, txtDia, txtMês, txtAno e PrimeiroVencimento. Neste último campo será armazenada a data em formato abreviado da concatenação dos 3 primeiros campo (dia, mês e Ano), e servirá tão somente para dizer a função que a data de vencimento do primeiro boleto a gerar será esta (por exemplo: primeiro vencimento 14/07/2017, 2º 14/08/2017 e assim por diante até 12 parcelas). Eu fiz em 3 campos, porque preciso que a função filtre somente os clientes que têm a data de vencimento padrão, no dia que é lançado no campo txtDia.

    Estou enviando o BD novamente, com algumas alterações. Espero que tenha sido um pouco mais claro. Se não fui, chame que prontamente te responderei. Só tive tempo de responder agora a noite, pois tive um dia muito cheio.

    Grato pela atenção.

    Emerson
    Anexos
    Boletos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (258 Kb) Baixado 6 vez(es)
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Qui 15 Jun 2017, 16:35

    Boa tarde,
    Fiquei sem perceber em que acontecimento quer despoletar o código de criação de boletos. AoAlterar o txtDia?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qui 15 Jun 2017, 22:56

    Boa noite.

    Não Alexandre, seria no evento ao clicar do botão cmdExecutar. O campo txtDia é apenas para mostrar à função, quais os clientes que seriam filtrados para a geração dos boletos. Se no campo txtDia tu digitar 10, a função deve entender que serão gerados boletos apenas para os clientes que tem como vencimento padrão no seu cadastro, o dia 10. Os outros campos, txtMês e txtAno, serão concatenados juntamente com o campo txtDia, no campo PrimeiroVencimento, que mostra a função a data de venciemento do primeiro boleto a ser gerado. Lembrando que o valor padrão do campo QuantParc é 12, quer dizer que serão gerados sempre 12 boletos para cada cliente.

    Tomara que tenha sido claro, se não fui, basta chamar.

    Att
    Emerson
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Sex 16 Jun 2017, 10:30

    Bom dia,
    Veja se funciona
    Código:
    Private Sub cmdExecutar_Click()
       
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       
        Dim Rst As DAO.Recordset, rs As DAO.Recordset, i As Byte, rs1 As DAO.Recordset
        Dim Xdimi As Integer
       
        If MsgBox("Confirma a criação de boletos?", vbYesNo + vbDefaultButton2) = vbNo Then Exit Sub
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Vendas LEFT JOIN Fornecedores ON Vendas.Cliente=Fornecedores.Código WHERE CF='C' and Vencimento=" & txtDia)
        Do While Not Rst.EOF
            Set rs = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta where Código = " & Rst("CódigoVendas"))
            For i = 1 To 12
                With rs
                    .AddNew
                    !Código = Rst("CódigoVendas")
                    !NºTítulo = Format(i, "00")
                    !DataVencimento = DateAdd("m", i - 1, (Me.PrimeiroVencimento))
                    !ValorTítulo = Round(Rst("ValorParcela"), 2)
                    !Cliente = Rst("Cliente")
                    !Endereço = Rst("Endereço")
                    !Bairro = Rst("Bairro")
                    !Cidade = Rst("Cidade")
                    !Estado = Rst("Estado")
                    !CEP = Rst("CEP")
                    !CPF = Rst("CPF")
                    !DataEmissão = Me.DataEmissão
                    .Update
                End With
            Next
    Seguinte: Rst.MoveNext
        Loop
        rs.Close
        Set rs = Nothing
        Set Rst = Nothing
        Me.frmBoletos.Requery
        Me.frmBoletosSub.Requery
    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
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Seg 19 Jun 2017, 07:36

    Bom dia Alexandre.

    Quero em primeiro lugar, agradecer pela grande ajuda que tu vem prestando a mim. Quanto ao código, ainda não está funcionando, porque dá algumas mensagens de erro, mas acredito que seja algum pequeno detalhe. Testei e retestei diversas alterações no teu código, mas não consegui fazer funcionar. As mensagens de erro que aparecem dependendo do que alterei são: Tipo não coincidente na expressão  e também Parâmetros insuficientes eram esperados 1 (ou até mesmo 2).

    Eu associei as tabelas Fornecedores e Vendas, mas também não funcionou. Coloco o BD em anexo e se não for pedir muito, tu pode dar uma olhada nele.

    Att.
    Emerson
    Anexos
    Boletos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (257 Kb) Baixado 14 vez(es)
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Seg 19 Jun 2017, 20:25

    Boa noite,
    Bd sem dados não ajuda a testar
    Código:
    Private Sub cmdExecutar_Click()
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, rs As DAO.Recordset, i As Byte, rs1 As DAO.Recordset
        Dim Xdimi As Integer
       
        If MsgBox("Confirma a criação de boletos?", vbYesNo + vbDefaultButton1) = vbNo Then Exit Sub
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Vendas LEFT JOIN Fornecedores ON Vendas.Cliente = Fornecedores.NomeFornecedor WHERE CódigoCF=1 and VencimentoPadrão=" & txtDia)
        Do While Not Rst.EOF
            Set rs = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta where Código = " & Rst("CódigoVendas"))
            For i = 1 To 12
                With rs
                    .AddNew
                    !Código = Rst("CódigoVendas")
                    !NºTítulo = Format(i, "00")
                    !DataVencimento = DateAdd("m", i - 1, (Me.PrimeiroVencimento))
                    !ValorTítulo = Round(Rst("ValorParcela"), 2)
                    !Cliente = Rst("Cliente")
                    !Endereço = Rst("Endereço")
                    !Bairro = Rst("Bairro")
                    !Cidade = Rst("Cidade")
                    !Estado = Rst("Estado")
                    !CEP = Rst("CEP")
                    !CPF = Rst("CPF")
                    !DataEmissão = Me.DataEmissão
                    .Update
                End With
            Next
    Seguinte: Rst.MoveNext
        Loop
        Rst.Close
        Set Rst = Nothing
        Set Rst = Nothing
        Me.Requery
        Me.frmBoletosSub.Requery
    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
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Ter 20 Jun 2017, 06:40

    Bom dia Alexandre.

    Os únicos dados que o Bd necessita nesta etapa, estão na tabela Fornecedores, onde há 8 clientes cadastrados. Ao executar o código que tu criou, é que serão incluídos os dados na tabela Vendas e Vendas sub-formulário.

    Quanto ao código, ao clicar no botão cmdExecutar, não acontece nada. Fiz alterações no código, mas não funcionou. Desculpe o incômodo e peço só mais um pouco de paciência, acredito que com algum pequeno ajuste o código vá funcionar.

    Att
    Emerson
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Ter 20 Jun 2017, 22:43

    Boa noite,
    Código:
    Private Sub cmdExecutar_Click()
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, rs As DAO.Recordset, i As Byte, rs1 As DAO.Recordset
        Dim Xdimi As Integer
       
        If MsgBox("Confirma a criação de boletos?", vbYesNo + vbDefaultButton1) = vbNo Then Exit Sub
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Fornecedores WHERE CódigoCF=1 and VencimentoPadrão=" & txtDia)
       
        Do While Not Rst.EOF
            Set rs = CurrentDb.OpenRecordset("select * from Vendas ORDER BY CódigoVendas")
            With rs
                .AddNew
                !CódigoVendas = Rst("CódigoFornecedor")
                !Cliente = Rst("NomeFornecedor")
                !DataEmissão = Me.DataEmissão
                !ValorParcela = Round(Rst("TipoPlano"), 2)
                !QuantParc = 12
                !ValorTotal = 12 * Round(Rst("TipoPlano"), 2)
                .Update
            End With
            Set rs = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta")
            For i = 1 To 12
                With rs
                    .AddNew
                    !Código = Rst("CódigoFornecedor")
                    !NºTítulo = Format(i, "00")
                    !DataVencimento = DateAdd("m", i - 1, (Me.PrimeiroVencimento))
                    !ValorTítulo = Round(Rst("TipoPlano"), 2)
                    !Cliente = Rst("Código")
                    !Endereço = Rst("Endereço")
                    !Bairro = Rst("Bairro")
                    !Cidade = Rst("Cidade")
                    !Estado = Rst("Estado")
                    !CEP = Rst("CEP")
                    !CPF = Rst("CPF")
                    !DataEmissão = Me.DataEmissão
                    .Update
                End With
            Next
    Seguinte: Rst.MoveNext
        Loop
        Rst.Close
        Set Rst = Nothing
        Set Rst = Nothing
        Me.Requery
        Me.frmBoletosSub.Requery
    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
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Qui 22 Jun 2017, 17:01

    Bom dia Alexandre.

    Teu código tá funcionando quase que perfeitamente. Demorei pra te dar retorno porque tava fazendo uns testes, e alterei alguns poucos detalhes no teu código, só pra adequar para o que preciso.

    A tabela Vendas está relacionada com a tabela Vendas sub-formulário através dos campos CódigoVendas e Código. O único detalhe que tá faltando no código e que não consegui acertar é que preciso que ao inserir os boletos, o sistema coloque no campo Código da tabela Vendas sub-formulário, o mesmo valor que está no campo Código da tabela Vendas.

    Da maneira como está o código abaixo, ele lança no campo Código o mesmo valor que está no primeiro lançamento da tabela Vendas, ou seja, ficam todos os boletos relacionados a um mesmo lançamento das Vendas. Enquanto que na tabela Vendas, através do Loop que tu colocou no código, cria corretamente os lançamentos, mas os boletos ficam relacionados somente ao primeiro lançamento da tabela Vendas.

    Código:
       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, rs As DAO.Recordset, i As Byte, rs1 As DAO.Recordset
        Dim Xdimi As Integer
        
        If MsgBox("Confirma a criação de boletos?", vbYesNo + vbDefaultButton1) = vbNo Then Exit Sub
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Fornecedores WHERE CódigoCF=1 and VencimentoPadrão=" & txtDia)
        
        Do While Not Rst.EOF
            Set rs = CurrentDb.OpenRecordset("select * from Vendas ORDER BY CódigoVendas")
            With rs
                .AddNew
                !CódigoVendas = IIf(DCount("[CódigoVendas]", "Vendas") = 0, 1, DMax("[CódigoVendas]", "Vendas") + 1)
                !Cliente = Rst("NomeFornecedor")
                !DataEmissão = Me.DataEmissão
                !ValorParcela = Round(Rst("ValorParcela"), 2)
                !QuantParc = 12
                !ValorTotal = 12 * Round(Rst("ValorParcela"), 2)
                .Update
            End With
            Set rs1 = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta where Código = " & Me.CódigoVendas & "")
            For i = 1 To 12
                With rs1
                    .AddNew
                    !Código = Me.CódigoVendas
                    !NºTítulo = Format(i, "00")
                    !DataVencimento = DateAdd("m", i - 1, (Me.PrimeiroVencimento))
                    !ValorTítulo = Round(Rst("ValorParcela"), 2)
                    !Cliente = Rst("Código")
                    !Endereço = Rst("Endereço")
                    !Bairro = Rst("Bairro")
                    !Cidade = Rst("Cidade")
                    !Estado = Rst("Estado")
                    !CEP = Rst("CEP")
                    !CPF = Rst("CPF")
                    !DataEmissão = Me.DataEmissão
                    .Update
                End With
            Next
    Seguinte: Rst.MoveNext
        Loop
        Rst.Close
        Set Rst = Nothing
        Set Rst = Nothing
        Me.Requery
        Me.frmBoletosSub.Requery

    É apenas isso que tá faltando.

    Att.
    Emerson
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Alexandre Neves em Qui 22 Jun 2017, 22:06

    Boa noite,
    Código:
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, rs As DAO.Recordset, i As Byte, rs1 As DAO.Recordset, lngCodigo as long
        Dim Xdimi As Integer
       
        If MsgBox("Confirma a criação de boletos?", vbYesNo + vbDefaultButton1) = vbNo Then Exit Sub
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Fornecedores WHERE CódigoCF=1 and VencimentoPadrão=" & txtDia)
       
        Do While Not Rst.EOF
            Set rs = CurrentDb.OpenRecordset("select * from Vendas ORDER BY CódigoVendas")
            lngCodigo=IIf(DCount("[CódigoVendas]", "Vendas") = 0, 1, DMax("[CódigoVendas]", "Vendas") + 1)
            With rs
                .AddNew
                !CódigoVendas = lngCodigo
                !Cliente = Rst("NomeFornecedor")
                !DataEmissão = Me.DataEmissão
                !ValorParcela = Round(Rst("ValorParcela"), 2)
                !QuantParc = 12
                !ValorTotal = 12 * Round(Rst("ValorParcela"), 2)
                .Update
            End With
            Set rs1 = CurrentDb.OpenRecordset("select * from VendasSubFormConsulta where Código = " & Me.CódigoVendas & "")
            For i = 1 To 12
                With rs1
                    .AddNew
                    !Código = = lngCodigo
                    !NºTítulo = Format(i, "00")
                    !DataVencimento = DateAdd("m", i - 1, (Me.PrimeiroVencimento))
                    !ValorTítulo = Round(Rst("ValorParcela"), 2)
                    !Cliente = Rst("Código")
                    !Endereço = Rst("Endereço")
                    !Bairro = Rst("Bairro")
                    !Cidade = Rst("Cidade")
                    !Estado = Rst("Estado")
                    !CEP = Rst("CEP")
                    !CPF = Rst("CPF")
                    !DataEmissão = Me.DataEmissão
                    .Update
                End With
            Next
    Seguinte: Rst.MoveNext
        Loop
        Rst.Close
        Set Rst = Nothing
        Set Rst = Nothing
        Me.Requery
        Me.frmBoletosSub.Requery
    Tens que começar a agilizar o raciocinio lógico


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Emerson73
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 71
    Registrado : 22/05/2017

    Re: [Resolvido]Inserção automática de registros.

    Mensagem  Emerson73 em Sex 23 Jun 2017, 03:46

    Boa noite Alexandre.

    Agora ficou perfeito o código.

    Em um dos testes que fiz, coloquei no campo CódigoVendas e Código, o mesmo comando usando o IIf, só não fiz por meio de variáveis. Então dava erro de relacionamento, mas o erro estava por que não fiz a declaração.

    Até acredito que não seja o problema de raciocínio lógico, mas sim por pouco conhecimento em VBA, mas estou começando a estudar e dentro de pouco tempo espero estar melhor.

    Muito obrigado pela tua ajuda e paciência. Me ajudou muito.

    Emerson.

      Data/hora atual: Sab 18 Nov 2017, 13:51