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]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.
    avatar
    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 310
    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..............

    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!
    avatar
    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 310
    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..............
    avatar
    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 310
    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..............

    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
    avatar
    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 310
    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..............

    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!
    avatar
    Pablo Neruda
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 310
    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..............

      Data/hora atual: Dom 19 Nov 2017, 21:24