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]Carregar registro em formulário desvinculado

    avatar
    brunoluizmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 24/04/2019

    [Resolvido]Carregar registro em formulário desvinculado Empty [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  brunoluizmaia em 27/6/2019, 12:04

    Boas,

    Estou passando por um problema, tenho certeza que estou à fazer algo errado ou esquecendo alguma coisa. Já tentei tudo o que encontrei no fórum e não resolveu.

    Tenho um formulário "Orcamento" que possui um subformulario tipo datasheet, onde preencho vários itens e em cada item no campo "hora_total_prod" ao clicar abre um formulário desvinculado ("Horas_orcadas") para inserir as horas por setor.

    É neste formulário que estou com dificuldade, quando existe registro na tabela "DB_horas_orcadas" o formulário não carrega a informação e se preencho novamente e clico em salvar, ele atualiza os dados no registro correto.

    Coloco a parte do banco de dados para vossa ajuda.
    Anexos
    [Resolvido]Carregar registro em formulário desvinculado Attachmentorcamento.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (158 Kb) Baixado 10 vez(es)
    crysostomo
    crysostomo
    VIP
    VIP

    Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1011
    Registrado : 23/01/2018

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  crysostomo em 30/6/2019, 22:14

    Amigo, boa noite.
    Para se respondido com rapidez, anexe somente as partes que precisa ser resolvida, assim nós conseguiremos ver e atuar mais rápido.
    pelo que mostra no título e seu texto, basta arrastar seu horas_orcadas em um formulário e colocar para atualizar no formulário onde ele está
    Código:
    me.horas_orcadas.requery
    me.refresh


    .................................................................................
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    brunoluizmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 24/04/2019

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  brunoluizmaia em 1/7/2019, 09:20

    Bom dia!

    A parte que preciso de ajuda está no banco, se colocar menos que isso irá gerar muitos erros e não poderá ser testado.

    Vou tentar explicar novamente, espero conseguir transparecer.

    O formulário [Orcamento], possui um subformulário [DB_Sub_orcamento_subform],
    ao clicar no campo [horas_total_prod] do subform é aberto o formulário [horas_total_orcamento] para preenchimento das horas por departamento de trabalho,
    esse formulário soma as horas, e ao clicar em salvar ele salva o registro na tabela "DB_horas_orcadas" e cópia o registro para o campo no subform.

    ***Agora o problema.***

    Quando vou modificar ou consultar o orçamento, quando abro o formulário [Horas_Total_Orcamento] ele não carrega o registro da horas relacionado ao orçamento.
    Mas se eu preencho os campos e clico em salvar ele modifica o o registro correto na tabela.

    O formulário [Horas_Total_Orcamento] é desvinculado.

    Cumprimentos,

    Bruno Nunes
    Julio Lustosa
    Julio Lustosa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 23/02/2011

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  Julio Lustosa em 1/7/2019, 20:13

    Bruno, boa tarde!

    Fiz o que você pediu. Deletei alguns de seus códigos e apliquei a minha configuração.

    1º No campo hr_total_prod, apaguei a macro que você criou no evento Ao Clicar e criei um procedimento usando este evento:

    Código:

    Private Sub hr_total_prod_Click()

    Dim rs As DAO.Recordset

    DoCmd.OpenForm "Horas_total_orcamento", acNormal

    If CurrentProject.AllForms("horas_total_orcamento").IsLoaded Then
        'carrega o orcamento do frm principal com o id do registro na tabela DB_Sub_orcamento
        Forms!Horas_Total_Orcamento!idDbSubOrc = Me.id
        'Carrega o número do orçamento do subformulário.
        Forms!Horas_Total_Orcamento!numero_orcamento = Me.Parent.Num_Orc
        'carrega a seg de orcamento do sub frm
        Forms!Horas_Total_Orcamento!Seq_orcamento = Me.Seq_orcamento
        'carrega o numero do orçamento + sequência
        Forms!Horas_Total_Orcamento!numero_orcamento_seq = Me.Num_orc_seq
        
        Set rs = CurrentDb.OpenRecordset("SELECT * FROM DB_horas_orcadas WHERE Num_Orc =" & Me.Parent.Num_Orc, dbOpenSnapshot)
        
        'Aqui verifico se existe registro na tabela DB_horas_orcadas
        'com o número de orçamento informado no form principal
        If rs.RecordCount > 0 Then
            'Existindo o registro, carrego os campos do formulário Horas Total Orçamento
            'com os valores do registro encontrado.
            With Forms!Horas_Total_Orcamento
                !horas_rececao = rs!hr_rececao
                !horas_mascaramento = rs!hr_mascaramento
                !horas_textura = rs!hr_textura
                !horas_acido = rs!hr_acido
                !horas_foscagem = rs!hr_foscagem
                !horas_emb = rs!hr_embalagem
                !horas_polimento = rs!hr_polimento
                !horas_bancada = rs!hr_bancada
                !horas_total = rs!horas_totais
            End With
        End If
        'Fecho e limpo a variável rs do recordset.
        rs.Close: Set rs = Nothing
    End If

    End Sub

    2º Apaguei todos os eventos de formulários que você criou, criei o campo idDbSubOrc que receberá o valor do identificador da tabela DB_Sub_Orcamento e modifiquei os códigos dos botões salvar e fechar.

    [Resolvido]Carregar registro em formulário desvinculado Img210

    Código:

    Private Sub btn_salvar_Click()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("DB_horas_orcadas", dbOpenTable)

    rs.Index = "num_orc"
    rs.Seek "=", (Me.numero_orcamento)

    If Not rs.NoMatch Then
        rs.Edit
        Else
            rs.AddNew
    End If

    rs!Num_Orc = Me!numero_orcamento
    rs!seq_orc = Me!Seq_orcamento
    rs!num_orcamento_seq = Me!numero_orcamento_seq
    rs!hr_rececao = Me!horas_rececao
    rs!hr_mascaramento = Me!horas_mascaramento
    rs!hr_textura = Me!horas_textura
    rs!hr_acido = Me!horas_acido
    rs!hr_foscagem = Me!horas_foscagem
    rs!hr_embalagem = Me!horas_emb
    rs!hr_polimento = Me!horas_polimento
    rs!hr_bancada = Me!horas_bancada
    rs!horas_totais = Me!horas_total
    rs.Update

    rs.Close: Set rs = Nothing

    db.Execute "UPDATE DB_SUB_orcamento SET hr_total_prod = " & Me.horas_total & " WHERE id = " & Me.idDbSubOrc & ";"

    If db.RecordsAffected > 0 Then
        MsgBox "Total de horas atualizado na tabela DB_Sub_orcamento", vbInformation
    End If

    db.Close: Set db = Nothing

    Forms!orcamento!Sub_orcamento.Requery

    DoCmd.Close , "Horas_Total_Orcamento", acSaveNo

    End Sub



    Faça o teste e nos comunique se deu algo errado.

    Abraços.
    Anexos
    [Resolvido]Carregar registro em formulário desvinculado AttachmentDatabase16.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (347 Kb) Baixado 9 vez(es)
    avatar
    brunoluizmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 24/04/2019

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  brunoluizmaia em 2/7/2019, 09:53

    Julio, bom dia!

    Exatamente o que precisava, perfeito!

    Muito obrigado!!

    A única coisa foi a linha que faz o Requery no botão salvar, gerou erro, mas testei sem ela, funcionou perfeitamente!

    Coloco como resolvido o tópico!

    E digo também que este ensinamento resolveu outros problemas que estava enfrentando.

    Agradeço mais uma vez a sua ajuda e também à todos que mantém esse fórum em funcionamento.

    Cumprimentos,

    Bruno Nunes.
    avatar
    brunoluizmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 24/04/2019

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  brunoluizmaia em 2/7/2019, 15:12

    Júlio, boa tarde!

    Em resposta, eu fiz o teste e achei que seria fácil de resolver um problema. Mas definitivamente não está fácil.

    Quando vou gerar uma segunda linha de orçamento o formulário "Horas_total_orcamento" abre com os dados da linha anterior. Ele deveria abrir em branco.

    Testei colocar o campo "idDBSubOrc"

    'rs.Index = "idDbSubOrc"
    'rs.Seek "=", (Me.idDbSubOrc)



    'If Not rs.NoMatch Then
    ' rs.Edit
    ' Else
    ' rs.AddNew

    Só que o Access gera um erro dizendo que o "id"DbSubOrc" não é um número index válido.
    Creio que é este o caminho, mas não estou conseguindo fazer.

    Conto com sua ajuda ou de outro mestre disponível no fórum.

    Cumprimentos,

    Bruno Nunes

    tauron
    tauron
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1109
    Registrado : 07/12/2011

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  tauron em 2/7/2019, 17:34

    Tente indicar os campos assim

    rs("seucamponatabela")=me.seucamponoformulario

    rs("index")=me.idDBSubOrc
    rs("seek") = me.idDBSubOrc
    Julio Lustosa
    Julio Lustosa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 23/02/2011

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  Julio Lustosa em 3/7/2019, 00:02

    Bruno, boa noite!

    Isto está ocorrendo porque o procedimento que carrega os dados no formulário de Horas Total Orçamento pega o primeiro registro que ele filtra usando como condição o número do orçamento.

    Como na tabela Db_horas_orcadas você fez três registros usando o número de orçamento 2, então ele carrega no recordset estes 3 registros mas só irá imprimir no formulário somente o primeiro.

    O certo seria usar o id do registro que está na tabela Db_Sub_orcamento (que é de onde você seleciona o registro para carrega o form desvinculado), mas este id não é cadastrado na tabela Db_horas_orcadas.

    Então, para solucionar este problemas, criei na tabela Db_horas_orcadas um campo chamado idSubOrcamento. Este campo será relacionado à tabela Db_Sub_orcamento. Quando você selecionar o registro, seja novo ou para ser editado, ele vai carregar o formulário com os dados corretos.

    No formulário desvinculado, modifico novamente o botão Salvar para que consiga salvar o id na tabela Db_hora_orcada.

    PS.: No sub formulário, quando o registro for novo, ao clicar no campo hr_total_prod ele irá atualizar o subformulário para que ele salve o novo id para que no formulário desvinculado, o procedimento do botão Salvar consiga salvar o id na tabela Db_hora_orcada. Caso contrário ele gera um erro e/ou pode acabar sobrescrevendo um registro diferente.

    Espero ter ajudado.
    Anexos
    [Resolvido]Carregar registro em formulário desvinculado AttachmentDatabase16.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (174 Kb) Baixado 2 vez(es)
    avatar
    brunoluizmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 24/04/2019

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  brunoluizmaia em 3/7/2019, 10:27

    Obrigado, Júlio e Tauron!!

    Júlio,

    Era isso mesmo que tentei fazer, mas sem sucesso. Falta-me conhecimentos que vou adquirindo com a ajuda de vocês.

    No entanto, quando faço um novo orçamento, gera um erro na requery do botão salvar do form "Horas_total_orcamento", dizendo que o requery não pode ser aplicado, devido o registro não ter salvo antes.

    Então para registro eu corrigi este erro, salvando o registro antes.

    Como! No evento click do campo "Horas_total" do sub form, salvo o registro. Com 'Docmd.runcommand acCmdSave'


    Coloco em anexo o arquivo corrigido caso, alguém necessite no futuro.

    Agradeço novamente a ajuda e ensinamentos.

    Sem este fórum e as pessoas que nele estão, eu não teria chegado até este momento do sistema.

    Cumprimentos e até a próxima.

    Bruno Nunes
    Anexos
    [Resolvido]Carregar registro em formulário desvinculado AttachmentDatabase163.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (271 Kb) Baixado 6 vez(es)
    avatar
    brunoluizmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 24/04/2019

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  brunoluizmaia em 3/7/2019, 10:43

    Esqueci o resolvido! lol!

    Conteúdo patrocinado

    [Resolvido]Carregar registro em formulário desvinculado Empty Re: [Resolvido]Carregar registro em formulário desvinculado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/10/2019, 03:41