Acceso a un proceso en función del tipo de documento.

He de realizar una serie de cálculos en función del tipo de Documento y días transcurridos.

Hay tres tipos de Documentos y en cada uno de ellos se realizan una serie de cálculos en función de los días desde la emisión del documento al pagodel mismo.

Según el tipo de documento he de trasladarme al bloque correspondiente para alcanzar los datos y realizar la operatoria de calculo.

Después de realizar el calculo he de salirme de la rutina y continuar leyendo el siguiente registros del formulario.

Utilizo estas rutina y no hay manera de que me funcione como deseo que es conseguir que quede reflejado el Tipo de descuento para aplicar

'* EMPRESAS *

Me.Dias = [FechaEntrega] - Date
DOCMD.SetWarnings False
DOCMD.GoToRecord , , acFirst
Dim i As Byte
If Me.TipoPedido = "EMPRESA" Then
For i = 1 To Form.Recordset.RecordCount
If [FechaEntrega] >= Date Then
'* Plazo 1 
If DLookup("Plazo1Empresas", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo1Empresas", "PARAMETROSEMPRESA") Then
Me.Descuento = 1
GoTo Fin
Else
End If
Else
End If
'* Plazo 2 
If DLookup("Plazo2Empresas", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo2Empresas", "PARAMETROSEMPRESA") Then
Me.Descuento = 2
GoTo Fin
Else
End If
Else
End If
'* Plazo 3
If DLookup("Plazo3Empresas", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo3Empresas", "PARAMETROSEMPRESA") Then
Me.Descuento = 3
GoTo Fin
Else
End If
Else
End If
'* Plazo 4
If DLookup("Plazo3Empresas", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo4Empresas", "PARAMETROSEMPRESA") Then
Me.Descuento = 4
GoTo Fin
Else
End If
Else
End If
End If
'*
DOCMD.GoToRecord , , acNext
Next
'*
'Else
'End If
'* PARTICULARES
'If "TpoPedido" = "PARTICULARES" Then

DOCMD.SetWarnings False
DOCMD.GoToRecord , , acFirst
For i = 1 To Form.Recordset.RecordCount
If [FechaEntrega] >= Date Then
'* Plazo 1
If DLookup("Plazo1Particulares", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo1Particulares", "PARAMETROSEMPRESA") Then
Me.Descuento = 1
GoTo Fin
Else
End If
Else
End If
'* Plazo 2
If DLookup("Plazo2Particulares", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo2Particulares", "PARAMETROSEMPRESA") Then
Me.Descuento = 2
GoTo Fin
Else
End If
Else
End If
'* Plazo 3
If DLookup("Plazo3Particulares", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo3Particulares", "PARAMETROSEMPRESA") Then
Me.Descuento = 3
GoTo Fin
Else
End If
Else
End If
'* Plazo 4
If DLookup("Plazo4Particulares", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo4Particulares", "PARAMETROSEMPRESA") Then
Me.Descuento = 4
GoTo Fin
Else
End If
Else
End If
End If
'*
DOCMD.GoToRecord , , acNext
Next
'*
'Else
'End If
'* EVENTOS *
DOCMD.SetWarnings False
DOCMD.GoToRecord , , acFirst
For i = 1 To Form.Recordset.RecordCount
If [FechaEntrega] >= Date Then
VerDias = [FechaEntrega] - Date
'* Plazo 1
If DLookup("Plazo1Eventos", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo1Eventos", "PARAMETROSEMPRESA") Then
Me.Descuento= 1
GoTo Fin
Else
End If
Else
End If
'* Plazo 2
If DLookup("Plazo2Eventos", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo2Eventos", "PARAMETROSEMPRESA") Then
Me.Descuento = 2
GoTo Fin
Else
End If
Else
End If
'* Plazo 3
If DLookup("Plazo3Eventos", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo3Eventos", "PARAMETROSEMPRESA") Then
Me.Descuento = 3
GoTo Fin
Else
End If
Else
End If
'* Plazo 4
If DLookup("Plazo4Eventos", "PARAMETROSEMPRESA") <> 0 Then
If Me.Dias <= DLookup("Plazo4Eventos", "PARAMETROSEMPRESA") Then
Me.Descuento = 4
GoTo Fin
Else
End If
Else
End If
End If
'*
Fin:
DOCMD.GoToRecord , , acNext
Next
'*
End If
End Sub

1 respuesta

Respuesta
2

Juan: No he repasado en profundidad todo el código, pero DLookup no devuelve un "Número". Si encuentra el valor lo devuelve y si no devuelve un Null.

Por tanto y sin mirar mucho más yo sustituiría el DLookup por el DCount, que si te devuelve valores y si quieres apostillarlo con el Nz mejor. Ejemplo >>

Nz(DCount ( expr, dominio [criterios] ),0) de modo que si no encuentra ningúna coincidencia te devolverá un "Cero". Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas