Alvaro Teixeira 25/6/2015, 22:24
Olá a todos,
Assis , da forma que o Alessandro Pereira diz, também é via código (VBA) e no meu entender mais simples.
Dei uma espreitadela ao código e não compreendo qual a razão de estar a utilizar "transações" , talvez para ter o retorno do nº de registos afetados (mas também conseguimos o mesmo mais simples com uma consulta).
Na minha opinião respondendo à sua perguntas, o código abaixo apaga os dados com a origem a vermelho:
Set T = db.OpenRecordset("Select * from Encomenda ")
Ws.BeginTrans 'Início da transação
'Apaga os dados entre a DataX e a DataY
Num = 0
Do While Not T.EOF
If T!Data >= DataX And T!Data <= DataY Then
't.Edit
T.Delete
Num = Num + 1
End If
T.MoveNext
Loop
' executa ou cancela a transação
S = "Esta Operação Vai Eliminar" & Chr(13) & "Todos os Documentos de Vendas com Datas Entre: " & Chr(13) & "" & DataX & " e " & DataY & " ?"
X = MsgBox(S, 32 + 4 + 256, "Mensagem")
If X = 6 Then 'sim
Ws.CommitTrans ' executa a transação
Else
Ws.Rollback ' desfaz a transação
Exit Sub
End If
' Informa o resultado ao usuário
If Num = 0 Then
S = "Não Havia Documentos de Vendas no Período Indicado."
ElseIf Num = 1 Then
S = "Um Documentos de Vendas foi Apagado."
ElseIf Num > 1 Then
S = Trim$(Str$(Num)) & " Documentos de Vendas foram apagados."
Else
End If
' Avisa que n compromissos foram apagados
MsgBox S, vbInformation, "Documentos de Vendas"
Seria no final repetir o mesmo processo para a outra tabela, imagine que era a tabela "pendentes"
Set T = db.OpenRecordset("Select * from Pendentes ")
Ws.BeginTrans 'Início da transação
'Apaga os dados entre a DataX e a DataY
Num = 0
Do While Not T.EOF
If T!Data >= DataX And T!Data <= DataY Then
. . .
Abraço