MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Alterar fonte de dados de um subformulario

    Compartilhe

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Josué Carvalho em Ter 13 Out 2015, 13:56

    Prezados,

    Tenho um formulário em cujo detalhe há apenas um subformulário e nada mais. Contudo, no cabeçalho há uma combobox que seleciona a filial (facility) desejado. A partir desta seleção eu gostaria de atualizar a fonte de dados do sub-formulário.

    Tenho tentado o código abaixo mas indica erro na linha indicada. Qto ao Sql, o fiz copiando do sql original de uma consulta acrescentando as duas ultimas condições. Não parece haver erros ou problemas nesta parte.

    Código:
    Private Sub cmb_FacilityRef_Change()
    Dim vSQL As String

    vSQL = "SELECT Tab_Requisição.Data, Tab_Requisição.Numero, Tab_Requisição.Numero, IIf([TipoMov]='Banco' And [Cheque]<>0,'Manual',' ') AS TipoPagoBanco, IIf([TipoMov]='Banco',[Cheque],' ') AS ExpCheque, Tab_PlanDeCuenta.TipoMov, IIf(Val([Conta])=11100,[Cuenta],[Conta]) AS ExpConta, Tab_Requisição.Facility, Tab_ReqContab.Histórico, Tab_ReqContab.VlLancto, Tab_Requisição.CodAudit, 'INTEGRATED' AS CodLibro, 'Coste' AS TipoReg"
    vSQL = vSQL & "FROM Tab_Requisição INNER JOIN (Tab_PlanDeCuenta INNER JOIN Tab_ReqContab ON Tab_PlanDeCuenta.Rubrica = Tab_ReqContab.Conta) ON Tab_Requisição.Numero = Tab_ReqContab.Numero"
    vSQL = vSQL & "WHERE (((((Tab_Requisição.Flag1)=False) AND ((Tab_Requisição.Tipo)<>'Activo')"
    vSQL = vSQL & "AND (FACILITY)=('" & cmb_FacilityRef & "') AND (Not IsNull(AutorizadaPor)));"

    Forms![Frm_Jornal]![Frm_Jornal Subformulário].RecordSource = vSQL   '*** Erro nesta linha => Objeto não aceita propried ou método

    [Frm_Jornal Subformulário].Requery

    End Sub

    Alguém pode me ajudar a encontrar a solução?

    Desde já sou grato.

    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 299
    Registrado : 17/09/2010

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Pablo Neruda em Ter 13 Out 2015, 15:14

    Amigo, tenta mudar o recordsource para recorset.

    Eu uso assim para controles e formulários...


    Set FormAberto.Controls(Controle.Name).Recordset = rs(3)


    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.] Elohim Manutenção & Sistemas
    ..............Powered by MS Access with VBA code..............
    ............http://www.elohimsistemas.com.br/...........

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Josué Carvalho em Ter 13 Out 2015, 16:25

    Pablo,

    Desculpe meu raso conhecimento, mas não entendi o comando... Poderia "destrinchá-lo" por favor?
    De qqer modo, muito obrigado!

    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 299
    Registrado : 17/09/2010

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Pablo Neruda em Ter 13 Out 2015, 17:29

    Considerando que a sua referencia ao sub formulário esteja correta faça essa alteração na sua linha

    mude isso: Forms![Frm_Jornal]![Frm_Jornal Subformulário].RecordSource = vSQL

    para isso: Set Forms![Frm_Jornal]![Frm_Jornal Subformulário].Recordset = vSQL



    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.] Elohim Manutenção & Sistemas
    ..............Powered by MS Access with VBA code..............
    ............http://www.elohimsistemas.com.br/...........

    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 299
    Registrado : 17/09/2010

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Pablo Neruda em Ter 13 Out 2015, 17:43

    Aqui estou numa máquina nova sem muitos exemplos mas a referencia correta para usar o recorset seria assim:

    Set Forms![Formulário]![SubFormulário].Form.Recordset = vSQL


    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.] Elohim Manutenção & Sistemas
    ..............Powered by MS Access with VBA code..............
    ............http://www.elohimsistemas.com.br/...........

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Josué Carvalho em Ter 13 Out 2015, 19:31

    Agora indica que o objeto é obrigatório ... Sad

    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 299
    Registrado : 17/09/2010

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Pablo Neruda em Qua 14 Out 2015, 16:13

    Tenta isso, dando certo você altera depois...

    Private Sub cmb_FacilityRef_Change()

    Dim BD as Database
    Dim RS as Recordset
    Dim vSQL As String

    Set DB = CURRENTDB()

    vSQL = "SELECT Tab_Requisição.Data, Tab_Requisição.Numero, Tab_Requisição.Numero, IIf([TipoMov]='Banco' And [Cheque]<>0,'Manual',' ') AS TipoPagoBanco, IIf([TipoMov]='Banco',[Cheque],' ') AS ExpCheque, Tab_PlanDeCuenta.TipoMov, IIf(Val([Conta])=11100,[Cuenta],[Conta]) AS ExpConta, Tab_Requisição.Facility, Tab_ReqContab.Histórico, Tab_ReqContab.VlLancto, Tab_Requisição.CodAudit, 'INTEGRATED' AS CodLibro, 'Coste' AS TipoReg"
    vSQL = vSQL & "FROM Tab_Requisição INNER JOIN (Tab_PlanDeCuenta INNER JOIN Tab_ReqContab ON Tab_PlanDeCuenta.Rubrica = Tab_ReqContab.Conta) ON Tab_Requisição.Numero = Tab_ReqContab.Numero"
    vSQL = vSQL & "WHERE (((((Tab_Requisição.Flag1)=False) AND ((Tab_Requisição.Tipo)<>'Activo')"
    vSQL = vSQL & "AND (FACILITY)=('" & cmb_FacilityRef & "') AND (Not IsNull(AutorizadaPor)));"


    SET RS = BD.OPENRECORSET(vSQL)

    Forms![Frm_Jornal]![Frm_Jornal Subformulário].Recordset = RS

    [Frm_Jornal Subformulário].Requery

    End Sub


    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.] Elohim Manutenção & Sistemas
    ..............Powered by MS Access with VBA code..............
    ............http://www.elohimsistemas.com.br/...........

    Josué Carvalho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 06/10/2015

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Josué Carvalho em Qua 14 Out 2015, 19:29

    Pablo, muito obrigado pela ajuda.

    Como proposta a outros que tenham problemas semelhantes, deixo aqui uma outra ideia que também resolveu a minha questão:

    Para além de uma instrução SQL base (e grande o suficiente) ainda precisava de que o usuário selecionasse um campo e este fosse agregado aos critérios de seleção dos registros. Então acrescentei ao filtro do subformulário a instrução:

    [Facility] = [cmb_FacilityRef]

    Sendo o primeiro o campo da tabela e o segundo a ComboBox pela qual o usuário indica a filial desejada.

    O código apresentado pelo Pablo me deram ideias de como incrementar também outras rotinas.

    Mais uma vez, obrigado!

    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 299
    Registrado : 17/09/2010

    Re: [Resolvido]Alterar fonte de dados de um subformulario

    Mensagem  Pablo Neruda em Qua 14 Out 2015, 20:24

    Bom!!! Very Happy


    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.] Elohim Manutenção & Sistemas
    ..............Powered by MS Access with VBA code..............
    ............http://www.elohimsistemas.com.br/...........

      Data/hora atual: Dom 11 Dez 2016, 00:15