MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    [Resolvido]Percorrer registros de um tabela

    avatar
    Antonybrazil
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/04/2011

    [Resolvido]Percorrer registros de um tabela Empty Percorrer registros de um tabela

    Mensagem  Antonybrazil 16/7/2012, 17:36

    Bom dia pessoal. Estou precisando de ajuda para escrever um código. Abaixo está a ideia do código, no entanto não consigo passar a ideia pro VBA. Alguma sugestão?

    Private Sub Comando89_Click()

    Dim db As DataBase, rs As Recordset
    Dim Contar As Integer

    Set db = CurrentDb 'abre o banco de dados
    Set rs = db.OpenRecordset("Vacina") 'abre a tabela
    Contar = rs.RecordCount 'Contar o número registros tabela Vacina

    For i = 1 To Contar 'Percorrer do primeiro até o ultimo registro da tabela Vacina (acho que não é assim!)

    If Not IsNull("HBdata" & i) Then 'Verificar se os campos Hbdata1, Hbdata2, hbdata3 e hbdata4 não são nulos(acho que q tb não é assim!!)

    Comando1 , comando2, etc
    avatar
    Antonybrazil
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/04/2011

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Antonybrazil 16/7/2012, 17:39

    Faltou o finalzinho. Desculpa aí.

    Private Sub Comando89_Click()

    Dim db As DataBase, rs As Recordset
    Dim Contar As Integer

    Set db = CurrentDb 'abre o banco de dados
    Set rs = db.OpenRecordset("Vacina") 'abre a tabela
    Contar = rs.RecordCount 'Contar o número registros tabela Vacina

    For i = 1 To Contar 'Percorrer do primeiro até o ultimo registro da tabela Vacina (acho que não é assim!)

    If Not IsNull("HBdata" & i) Then 'Verificar se os campos Hbdata1, Hbdata2, hbdata3 e hbdata4 não são nulos(acho que q tb não é assim!!)
    Comando1 , comando2, etc
    End If

    Next ' Vai para o proximo registro



    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Alexandre Neves 16/7/2012, 18:18

    Boa tarde, Antony

    Eu escreveria assim:


    Private Sub CmdVacina_Click()

    Dim rs As Recordset

    Set rs =Currentdb.OpenRecordset("SELECT * FROM Vacina;") 'abre a tabela

    Do While not rs.eof
    If Not IsNull("HBdata" & i) Then 'Verificar se os campos Hbdata1, Hbdata2, hbdata3 e hbdata4 não são nulos(acho que q tb não é assim!!)
    'Condição 1 - se nenhum campo for nulo
    If Not (IsNull(rs("HBdata1")) or IsNull(rs("HBdata2")) or IsNull(rs("HBdata3")) or IsNull(rs("HBdata1"))) Then
    'Condição 2 - se, pelo menos, um dos campos for nulo
    If IsNull(rs("HBdata1")) or IsNull(rs("HBdata2")) or IsNull(rs("HBdata3")) or IsNull(rs("HBdata1")) Then
    Comando1 , comando2, etc
    End If
    Loop ' Vai para o proximo registro
    set rs=nothing
    End Sub

    - Escolha entre condições 1 e2
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Alexandre Neves 16/7/2012, 18:18

    Boa tarde, Antony

    Eu escreveria assim:


    Private Sub CmdVacina_Click()

    Dim rs As Recordset

    Set rs =Currentdb.OpenRecordset("SELECT * FROM Vacina;") 'abre a tabela

    Do While not rs.eof
    If Not IsNull("HBdata" & i) Then 'Verificar se os campos Hbdata1, Hbdata2, hbdata3 e hbdata4 não são nulos(acho que q tb não é assim!!)
    'Condição 1 - se nenhum campo for nulo
    If Not (IsNull(rs("HBdata1")) or IsNull(rs("HBdata2")) or IsNull(rs("HBdata3")) or IsNull(rs("HBdata1"))) Then
    'Condição 2 - se, pelo menos, um dos campos for nulo
    If IsNull(rs("HBdata1")) or IsNull(rs("HBdata2")) or IsNull(rs("HBdata3")) or IsNull(rs("HBdata1")) Then
    Comando1 , comando2, etc
    End If
    Loop ' Vai para o proximo registro
    set rs=nothing
    End Sub

    - Escolha entre as condições 1 e2
    avatar
    Antonybrazil
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/04/2011

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Antonybrazil 16/7/2012, 18:52

    Boa tarde. O programa esta travando pois ele esta entrando em um ciclo infinito do Do While. Alguma dica? obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Alexandre Neves 16/7/2012, 19:09

    Pois é, Antony

    Foquei na leitura do código e esqueci-me de verificar o circuito do mesmo.
    Coloque
    Do While not rs.eof
    If Not IsNull("HBdata" & i) Then 'Verificar se os campos Hbdata1, Hbdata2, hbdata3 e hbdata4 não são nulos(acho que q tb não é assim!!)
    'Condição 1 - se nenhum campo for nulo
    If Not (IsNull(rs("HBdata1")) or IsNull(rs("HBdata2")) or IsNull(rs("HBdata3")) or IsNull(rs("HBdata1"))) Then
    'Condição 2 - se, pelo menos, um dos campos for nulo
    If IsNull(rs("HBdata1")) or IsNull(rs("HBdata2")) or IsNull(rs("HBdata3")) or IsNull(rs("HBdata1")) Then
    Comando1 , comando2, etc
    End If
    rs.movenext
    Loop ' Vai para o proximo registro
    set rs=nothing
    End Sub
    avatar
    Antonybrazil
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/04/2011

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Antonybrazil 16/7/2012, 20:58

    Obrigado pela grande força! Grande parte do código já deu certo. O problema é que eu preciso gravar as informações extraídas em outra tabela. E não estou sabendo como pois daí eu teria que abrir outra tabela "CurrentDb.OpenRecordset". Alguma idéia? obrigado


    Dim rs As Recordset
    Dim difdias As Integer, difmeses As Integer
    Dim QT As Integer, CodigoVacina As Integer, i As Integer

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM VacinasAdulto;") 'Abre a tabela

    Do While Not rs.EOF 'Inicia o circuito
    QT = 0
    CodigoVacina = rs("CodigoVacinasAD")

    For i = 1 To 4
    If Not IsNull(rs("HBdata" & i)) Then
    difdias = DateDiff("d", rs("HBdata" & i), Date)
    difmeses = DateDiff("m", rs("HBdata" & i), Date)
    QT = QT + 1
    End If
    Next

    Select Case QT
    Case 0
    rs.AddNew 'inclui novo registro
    rs("CodigoRelatVac") = CodigoVacina
    rs("Vacina") = "Hepatite B"
    rs("Dose") = "Primeira"
    rs("Atraso") = ""
    rs.Update 'grava o registro inserido
    Case 1
    If difdias > 30 Then
    rs.AddNew 'inclui novo registro
    rs("CodigoRelatVac") = CodigoVacina
    rs("Vacina") = "Hepatite B"
    rs("Dose") = "Segunda"
    rs("Atraso") = difdias - 30 & " dias"
    rs.Update 'grava o registro inserido
    End If
    Case 2
    If difdias > 150 Then
    rs.AddNew 'inclui novo registro
    rs("CodigoRelatVac") = CodigoVacina
    rs("Vacina") = "Hepatite B"
    rs("Dose") = "Terceira"
    rs("Atraso") = difdias - 150 & " dias"
    rs.Update 'grava o registro inserido
    End If
    Case 3
    If difdias > 180 Then
    rs.AddNew 'inclui novo registro
    rs("CodigoRelatVac") = CodigoVacina
    rs("Vacina") = "Hepatite B"
    rs("Dose") = "Quarta"
    rs("Atraso") = difdias - 180 & " dias"
    rs.Update 'grava o registro inserido
    End If
    End Select


    rs.MoveNext
    Loop ' Vai para o proximo registro

    Set rs = Nothing
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Alexandre Neves 16/7/2012, 21:49

    Apenas inseriu código para acrescentar na própria tabela
    Escreva onde pretende fazer o quê. Depois, tenta-se traduzir em código
    avatar
    Antonybrazil
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/04/2011

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Antonybrazil 17/7/2012, 01:57

    Toda parte referente a add.new eu preciso adicionar na Tabela RelatorioVacina.
    avatar
    Antonybrazil
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/04/2011

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Antonybrazil 17/7/2012, 02:17

    Boa noite. Deu certo agora Alexandre. Obrigado pela grande força. Abraços

    Private Sub Comando89_Click()

    Dim rs As Recordset
    Dim difdias As Integer, difmeses As Integer
    Dim QT As Integer, CodigoVacina As Integer, i As Integer

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM VacinasAdulto;") 'Abre a tabela

    Do While Not rs.EOF 'Inicia o circuito
    QT = 0
    CodigoVacina = rs("CodigoVacinasAD")

    For i = 1 To 4
    If Not IsNull(rs("HBdata" & i)) Then
    difdias = DateDiff("d", rs("HBdata" & i), Date)
    difmeses = DateDiff("m", rs("HBdata" & i), Date)
    QT = QT + 1
    End If
    Next

    Select Case QT
    Case 0
    CurrentDb.Execute " INSERT INTO RelatorioVacina (CodigoRelatVac, Vacina, Dose, Atraso) VALUES ('" & CodigoVacina & " ', 'Hepatite B', 'Primeira', '');"
    Case 1
    If difdias > 30 Then
    CurrentDb.Execute " INSERT INTO RelatorioVacina (CodigoRelatVac, Vacina, Dose, Atraso) VALUES ('" & CodigoVacina & " ', 'Hepatite B', 'Segunda', '" & difdias - 30 & " dias" & " ');"
    End If
    Case 2
    If difdias > 150 Then
    CurrentDb.Execute " INSERT INTO RelatorioVacina (CodigoRelatVac, Vacina, Dose, Atraso) VALUES ('" & CodigoVacina & " ', 'Hepatite B', 'Terceira', '" & difdias - 150 & " dias" & " ');"
    End If
    Case 3
    If difdias > 180 Then
    CurrentDb.Execute " INSERT INTO RelatorioVacina (CodigoRelatVac, Vacina, Dose, Atraso) VALUES ('" & CodigoVacina & " ', 'Hepatite B', 'Quarta', '" & difdias - 180 & " dias" & " ');"
    End If
    End Select


    rs.MoveNext
    Loop ' Vai para o proximo registro

    Set rs = Nothing

    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Alexandre Neves 17/7/2012, 10:10

    Ainda bem que resolveu
    Tema resolvido, resolvido marcado
    Desta, marco eu

    Conteúdo patrocinado


    [Resolvido]Percorrer registros de um tabela Empty Re: [Resolvido]Percorrer registros de um tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 08:34