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

    While em RecordSet - verificar dados em duas tabelas

    Compartilhe
    avatar
    leandro_clp
    Novato
    Novato

    Respeito às Regras 100%

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

    While em RecordSet - verificar dados em duas tabelas

    Mensagem  leandro_clp em 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
    avatar
    leicand
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: While em RecordSet - verificar dados em duas tabelas

    Mensagem  leicand em 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

      Data/hora atual: 19/10/2018, 08:26