Access-Visual Basic: Problema al definir una variable Fecha
Que seguro que es fácil de resolver, a ver si podéis ayudarme...
He creado un código para tomar el valor de una fecha establecida en un formulario, con ese valor creo, como criterio, una consulta.
El problema es que si la fecha es 05/08/2017, la fecha que poner en el criterio de la consulta es 08/05/2017, es decir, intercambia el día con el mes, y el resultado no es el mismo.
¿Cómo debe definir la variable Date para evitarlo?
Por si lo necesitáis, pongo el código:
Dim Entradas_Stock As QueryDef Dim Salidas_Stock As QueryDef Dim Base_Actual As Database Dim Var_Año_Albaran As String Dim Var_Serie_Albaran As String Dim Var_Id_Albaran As Long Dim MiFecha As Date Dim MiAño As Integer Dim MiSerie As String MiFecha = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Fecha] MiAño = Year(MiFecha) MiSerie = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Serie_Albaran] Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Año] = MiAño N_Albaran = Nz(DMax("Id_Albaran", "Albaranes_Compras", "[Año] = '" & MiAño & "' And (Albaranes_Compras.Serie_Albaran) = '" & MiSerie & "'"), 0) + 1 Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Id_Albaran] = N_Albaran If Me![Tipo_Albaran] = "Inventario" Then Fecha_Ultimo_Inventario = DMax("Fecha", "Albaranes_compras", "(Albaranes_Compras.Serie_Albaran) = '" & MiSerie & "'") If IsNull(Fecha_Ultimo_Inventario) Then Fecha_Ultimo_Inventario = #1/1/2016# Else End If Fecha_Actual = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Fecha] Var_Año_Albaran = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Año] Var_Serie_Albaran = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Serie_Albaran] Var_Id_Albaran = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Id_Albaran] Dim Respuesta As String Respuesta = MsgBox("¿Deseas añadir los artículos con stock actual?", 36, "Atención") If Respuesta = vbYes Then With Base_Actual Set Salidas_Stock = .CreateQueryDef("Stock_Salidas", "SELECT Articulos_Venta.[Referencia Articulo], Sum(Articulos_Venta.Cantidad) AS SumaDeCantidad FROM Albaranes_Ventas LEFT JOIN Articulos_Venta ON (Albaranes_Ventas.Año = Articulos_Venta.[Año Albaran]) AND (Albaranes_Ventas.Serie_Albaran = Articulos_Venta.SerieAlbaran) AND (Albaranes_Ventas.Id_Albaran = Articulos_Venta.NumeroAlbaran) WHERE (((Albaranes_Ventas.Fecha) Between #" & Fecha_Ultimo_Inventario & "# And #" & Fecha_Actual & "#)) GROUP BY Articulos_Venta.[Referencia Articulo] ORDER BY Articulos_Venta.[Referencia Articulo], Sum(Articulos_Venta.Cantidad);") Set Entradas_Stock = .CreateQueryDef("Stock_Entradas", "SELECT Articulos_Compra.[Referencia Articulo], Sum(Articulos_Compra.Cantidad) AS SumaDeCantidad FROM Albaranes_Compras LEFT JOIN Articulos_Compra ON (Albaranes_Compras.Año = Articulos_Compra.[Año Albaran]) AND (Albaranes_Compras.Serie_Albaran = Articulos_Compra.SerieAlbaran) AND (Albaranes_Compras.Id_Albaran = Articulos_Compra.NumeroAlbaran) WHERE (((Albaranes_Compras.Fecha) Between #" & Fecha_Ultimo_Inventario & "# And #" & Fecha_Actual & "#)) GROUP BY Articulos_Compra.[Referencia Articulo];") End With DoCmd.SetWarnings False 'Desactiva el mensaje de ACCESS de que se van a agregar registros DoCmd.RunSQL "INSERT INTO Articulos_Compra ( [Referencia Articulo], Cantidad, [Precio Compra], [Total Articulo], [Año Albaran], SerieAlbaran, NumeroAlbaran ) SELECT Articulos.Referencia, Nz([Stock_Entradas].[SumaDeCantidad])-Nz([Stock_Salidas].[SumaDeCantidad]) AS Stock, Nz([Precio_Ultima_Compra]) AS Precio_Compra, Round([Stock]*[Precio_Ultima_Compra],2) AS Total, '" & Var_Año_Albaran & "' AS Año, '" & Var_Serie_Albaran & "' AS Serie, " & Var_Id_Albaran & " AS Albaran FROM (Articulos LEFT JOIN [Stock_Entradas] ON Articulos.Referencia = [Stock_Entradas].[Referencia Articulo]) LEFT JOIN [Stock_Salidas] ON Articulos.Referencia = [Stock_Salidas].[Referencia Articulo] ORDER BY Articulos.[Codigo Familia], Articulos.[Codigo Subfamilia];" DoCmd.SetWarnings True 'Vuelve a activar los mensajes Me![Subformulario_Articulos_Traspaso].Form.Recalc Else End If Else End If
Supongo que el problema está en la definición de la variable, o en la configuración del PC.
2 respuestas
Respuesta de Sveinbjorn El Rojo
3
Respuesta de Vba Access
1