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