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

    Compartilhe

    leandrombmb
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    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
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9261
    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


    .................................................................................
    Contribua com o maximoaccess, ajude a melhorar este que é o seu site na NET.

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

    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 : 24
    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

    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9261
    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


    .................................................................................
    Contribua com o maximoaccess, ajude a melhorar este que é o seu site na NET.

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

    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 : 24
    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 27 Jun 2017, 11:27