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

3 participantes

    While em RecordSet - verificar dados em duas tabelas

    leandro_clp
    leandro_clp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    Registrado : 26/12/2010

    While em RecordSet - verificar dados em duas tabelas Empty While em RecordSet - verificar dados em duas tabelas

    Mensagem  leandro_clp 20/6/2016, 00:38

    Boa noite pessoal.

    Estou fazendo uma verificação de dados entre duas tabelas onde a segunda (Tab_Venda_ID) receberá apenas o registro (sequencial) que não constar na primeira (Tab_Venda_ID_Emitidos).

    O ID é gravado através de uma caixa de controle que possui o "valor padrão" =NextNumSimples ()

    Fiz a função abaixo que grava o registro caso ele já exista, porem o usuário terá de clicar novamente para que ele faça a verificação.

    Tentei de varias formas usar "While", mas sem sucesso...isso evitaria que o usuário clicasse 2 ou 3 vezes caso existam pedidos com o mesmo numero.

    Alguma sugestão ? ...segue a função:

    Public Function NextNumSimples() As Long

    Dim DB As DAO.DATABASE
    Dim rst As DAO.Recordset

    Set DB = CurrentDb()
    Set rst = DB.OpenRecordset("SELECT id_venda FROM Tab_Venda_ID")

    With rst
       If .BOF And .EOF Then
           NextNumSimples = 0
       Else
           .MoveFirst
           NextNumSimples = !id_venda + 1

            'verifica se o pedido já foi emitido (se consta na Tab_Venda)
            Dim rst_usado As Recordset
            Dim StrSQL As String
                 
                StrSQL = "SELECT cod_pedido FROM Tab_Venda_ID_Emitidos WHERE cod_pedido = " & NextNumSimples
                Set rst_usado = CurrentDb.OpenRecordset(StrSQL)

                   'verifica se existe na Tab_Venda_ID_Emitidos
                   If rst_usado.RecordCount <> 0 Then
                       'MsgBox "Consta na Tabela ! '" & NextNumSimples & "' "
                               
                                Dim StrSQL2 As String
                                   StrSQL2 = "INSERT INTO Tab_Venda_ID (id_venda, descricao) VALUES ('" & NextNumSimples & "', 'venda existe na Tab_Venda')"
                                   CurrentDb.Execute StrSQL2
                       
                       MsgBox "pedido existente - clique novamente"
                       DoCmd.Close acForm, "frmVENDA"
                       Exit Function
                         Else
                           MsgBox "Não Consta na Tabela !"
                   End If
         
       End If
       .Close
       
    End With

    Set rst_usado = Nothing
    Set rst = Nothing
    Set DB = Nothing
    End Function
    leicand
    leicand
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 04/01/2016

    While em RecordSet - verificar dados em duas tabelas Empty Re: While em RecordSet - verificar dados em duas tabelas

    Mensagem  leicand 25/7/2016, 19:33

    Para usar o while no Recordset recomendo o seguinte:

    Set DB = CurrentDb()
    Set rst = DB.OpenRecordset("SELECT id_venda FROM Tab_Venda_ID", dbopendynaset)
    if rst.recordcount > 0 then
    With rst
    .movefirst
    do until .EOF

    Sua rotina aqui

    .movenext
    loop
    end with
    end if

    E para gravar o registro recomendo o seguinte ao invés do CurrentDB.Execute:
    Dim RS2 as dao.recordset
    Set RS2 = DB.OpenRecordset("Tab_Venda_ID", dbOpenDynaset)
    With RS2
    .AddNew
    !id_venda = NextNumSimples
    !descricao = "venda existe na Tab_Venda"
    .Update
    End With

    Avise se deu certo.
    Espero poder ajudar.

    abraço
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3715
    Registrado : 22/11/2016

    While em RecordSet - verificar dados em duas tabelas Empty Re: While em RecordSet - verificar dados em duas tabelas

    Mensagem  DamascenoJr. 14/12/2021, 01:30

    leandro_clp, o membro leicand aguarda para saber se a dica deu certo. E aí? Como ficou?

    Aguardamos...


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: 3/12/2022, 01:43