Repetir registros en access según fecha

Estoy realizando una base de datos en la que recojo los pedidos de los clientes y con esto generó la propuesta de pedido que mando a mi proveedor, la cosa es que aparte de lo que los clientes me piden tengo un pedido fijo, los pedidos los mando los viernes y los martes de todas las semanas, habría posibilidad que access me generará el pedido fijo todos los viernes y los martes a parte de lo que se ha pedido fuera del fijo

2 respuestas

Respuesta
1

Siento no haberte respondido en tu otra pregunta, pero ésta página ya no avisa de esa circunstancia, por lo que quedó sin resolver.

Puedes hacerlo de muchas formas. Por ejemplo, vamos a suponer que tienes una tabla PedidosFijos con, por ejemplo, los campos Producto, Cantidad, etc

Y en otra tabla PMV tienes Numpedido, Producto, Cantidad,...

En el evento al cargar del primer formulario que abras al abrir la base le pongo

Private Sub Form_Load()
Select Case Weekday(Date)
Case 3, 5
Dim d As Integer
d = Nz(DLast("numpedido", "PMV"))
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into PMV(numpedido,fechapedido,producto,cantidad,observ) select " & d & "+1,date(),producto,cantidad,observ from pedidosfijos"
End Select
End Sub

Con lo que si es, por ejemplo,  Martes me deja la tabla 

Cuando fuera Jueves, me pondría como NumPedido el 2 y así sucesivamente.

Con esa tabla puedes crear un informe y que te envíe el email automáticamente, sin tener que preocuparte.

Sería bueno saber que tablas tienes y como son.

Como te decía antes, esta página ya no avisa así que si quisieras que ampliara la respuesta, por favor, envía un mensaje poniendo tu nombre y Ampliación de respuesta a [email protected]

Respuesta
1

Le preparé este ejemplo dejando la flexibilidad de elegir los días de la semana en los cuales se hace el pedido fijo.

Tablas

Formularios

Observe que al proveedor EDUARDO le marqué los días lunes y miércoles, en el subformulario registro los productos.

Ahora procedo a realizar el pedido. Hago clic en Adicionar fijos y obtengo:

Ahora adiciono más productos al pedido y obtengo:

Se pueden mejora muchas cosas, por ejemplo, que no se repita el producto en el pedido etc.

Código del evento Adicionar Fijos

On Error GoTo hay_error
 Dim diafecha As Byte  'Dia de la fecha del pedido
 Dim hay_pedifo As Byte
 Dim strDia As String
 If Me.cboProveedor = 0 Then
   MsgBox "Se requiere el proveedor", vbInformation, "Cuidado.."
   Me.cboProveedor.SetFocus
   Exit Sub
 End If
  If flag Then
    MsgBox "Ya adicionó el pedido fijo", vbInformation, "Le informo"
    Exit Sub
  End If
   diafecha = Weekday(Me.fechapedido, vbSunday)  'Tomo primer dia de la semana domingo
  'Verifico si hay pedido fijo para el día de la semana
  Select Case diafecha
    Case 1 ' Domingo
        strDia = "dom=True" & " AND idproveedor=" & Val(Me.cboProveedor)
    Case 2 ' Lunes
        strDia = "lun=True" & " AND idproveedor=" & Val(Me.cboProveedor)
    Case 3 ' Martes
        strDia = "mar=True" & " AND idproveedor=" & Val(Me.cboProveedor)
    Case 4 ' Miercoles
        strDia = "mie=True" & " AND idproveedor=" & Val(Me.cboProveedor)
    Case 5 ' Jueves
         strDia = "jue=True" & " AND idproveedor=" & Val(Me.cboProveedor)
    Case 6 ' Viernes
        strDia = "vie=True" & " AND idproveedor=" & Val(Me.cboProveedor)
    Case 7 ' Sábado
        strDia = "sab=True" & " AND idproveedor=" & Val(Me.cboProveedor)
  End Select
  hay_pedifo = DCount("*", "tblProveedores", strDia)
  If hay_pedifo > 0 Then 'Hay pedido fijo para este día
    Dim strSQl As String
    strSQl = "INSERT INTO tbldetalle_pedido ( idproducto" & vbCrLf
    strSQl = strSQl & "           , cantidad )SELECT tblfijos.idproducto" & vbCrLf
    strSQl = strSQl & "           , tblfijos.cantidad" & vbCrLf
    strSQl = strSQl & "        FROM tblfijos" & vbCrLf
    strSQl = strSQl & "       WHERE tblfijos.idproveedor=" & Me.cboProveedor & ";"
    CurrentDb.Execute strSQl
    'Actualizo el idpedido tabla detalle
    CurrentDb.Execute "UPDATE tbldetalle_pedido SET idpedido=" & Me.idpedido & " WHERE idpedido IS NULL"
    Me.Requery
    If Err.Number = 0 Then
      flag = True
    End If
hay_error_exit:
  Exit Sub
hay_error:
     MsgBox "Ocurrió el error " & Err.Number & vbCrLf & Err.Description, vbCritical, "Error.."
     Resume hay_error_exit
  End If
End Sub

Si quiere el ejemplo lo puede solicitar a [email protected] favor anotar en el asunto la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas