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]Retorno de consulta utilizando recordset e field

    Compartilhe

    leandrombmb
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 31/03/2015

    [Resolvido]Retorno de consulta utilizando recordset e field

    Mensagem  leandrombmb em Ter 31 Mar 2015, 05:46

    Boa noite ! Sou iniciante em VBA, podem me ajudar?

    Tenho uma tabela conforme abaixo:

    id data de nascimento idade
    1 11/07/1980
    4 22/03/1984
    6 23/05/1992
    10 23/05/2003
    11 01/05/2012

    Criei uma consulta que traz todos os valores. (id, data de nascimento, idade)

    Tenho uma função “calculo_de_idade(Date) as integer”

    Preciso pegar todas as datas e passar pela função, pegar o resultado e guardar na tabela no campo idade respectivamente.
    Fiz este código, mas está dando erro "438, O objeto não suporta esta propriedade ou método (Erro 438)

    Public Sub Substitui()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim fld As DAO.Field
    Dim strSQL As String

    Set db = CurrentDb()

    strSQL = "SELECT Tb_Cadt_Familia.Cod_Faml, Tb_Cadt_Familia.[Data de Nascimento], Tb_Cadt_Familia.Idade_inscrito FROM Tb_Cadt_Familia;"

    Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)

    rst.MoveFirst
    Do Until rst.EOF
    For Each fld In rst.Fields
    rst.Edit
    fld.Tb_Cadt_Familia.Idade_inscrito = idade_completa((fld.Tb_Cadt_Familia.[Data de Nascimento]))
    rst.Update
    Next fld
    rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    End Sub

    Grato;
    Leandro

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Retorno de consulta utilizando recordset e field

    Mensagem  JPaulo em Ter 31 Mar 2015, 11:38

    Assim;

    Código:
    Public Sub Substitui()
    Dim rst As DAO.Recordset
    Dim fld As DAO.Field
    Dim strSQL As String


    strSQL = "SELECT * FROM Tb_Cadt_Familia"

    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

    If rst.RecordCount = 0 Then Exit Sub

    rst.MoveLast
    rst.MoveFirst
        Do Until rst.EOF
            For Each fld In rst.Fields
            rst.Edit
            rst!Idade = calculo_de_idade(rst![Data de Nascimento])
            rst.Update
            Next fld
        rst.MoveNext
        Loop
    rst.Close: Set rst = Nothing
    End Sub


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    leandrombmb
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 31/03/2015

    Resolvido - Retorno de consulta utilizando recordset e field

    Mensagem  leandrombmb em Ter 31 Mar 2015, 13:43

    Bom dia Amigo !
    Muito obrigado...
    Deus te abençoe


    Estou muito feliz, agradeço pela ajuda, tenho que integrar o programa hoje. No meu programa a função calculava a idade assim que você digitasse a data de nascimento. O problema que depois, um dia a pessoa ia fazer aniversário, e a idade iria ficar desatualizada. Agora vou configurar para que assim que abrir o programa roda esta query. Este exemplo pode ajudar muita gente que está começando...

    Jesus disse:E eu vos digo a vós: Pedi, e dar-se-vos-á; buscai, e achareis; batei, e abrir-se-vos-á;
    Porque qualquer que pede recebe; e quem busca acha; e a quem bate abrir-se-lhe-á.

    Lucas 11:9-10

    Se você tiver um tempinho,poderia me explicar o código um pouco, grato.

    Leandro


    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Retorno de consulta utilizando recordset e field

    Mensagem  JPaulo em Ter 31 Mar 2015, 14:20

    Obrigado pelo retorno o forum agradece;

    Código comentado;

    Public Sub Substitui()
    Dim rst As DAO.Recordset
    Dim fld As DAO.Field
    Dim strSQL As String

    'Faz um select a todos os campos da tabela
    strSQL = "SELECT * FROM Tb_Cadt_Familia"
    'Abre o recordset do SQL acima
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    'Se não encontrar registros, morre aqui
    If rst.RecordCount = 0 Then Exit Sub
    'Se encontrar, vai para o ultimo e volta ao primeiro
    rst.MoveLast
    rst.MoveFirst
    Do Until rst.EOF
    For Each fld In rst.Fields
    rst.Edit
    'Faz um update ao campo Idade, chamando a função de Calcular pelo campo Data de Nascimento
    rst!Idade = calculo_de_idade(rst![Data de Nascimento])
    rst.Update
    Next fld
    rst.MoveNext
    Loop
    rst.Close: Set rst = Nothing
    End Sub


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    leandrombmb
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 31/03/2015

    Retorno de consulta utilizando recordset e field

    Mensagem  leandrombmb em Ter 31 Mar 2015, 14:58

    Obrigado, Posso dizer que são vários recordset, e cada recordest possui um field, em cada field têm todos os campos de um registro, faz um loop para varrer do primeiro ao último field e outro loop para varrer todos os recordset.
    Preciso de estudar mais esta bibliotecas para entender as coleções.

    Grato.

      Data/hora atual: Ter 06 Dez 2016, 05:43