Seleccionar Trimestre actual sobre una fecha determinada

En una Consulta, sobre una fecha determinada que sale de una Tabla, quisiera que en un Campo me seleccionara el trimestre en curso y en otro Campo el próximo a vencer

1 respuesta

Respuesta
2

Como no sé si te refieres al trimestre de la fecha del sistema o al trimestre de esa fecha determinada te pongo los dos. Por otro lado, dices que en un campo te ponga el próximo a vencer, pero ¿cómo sabemos cuando vence?, ¿Un mes después, 5 mese, 2 trimestres?

Cuando la abro

Hola, Muchas gracias,

Al hacer tu ejemplo copio la "formula", una sobre la fecha() del sistema, sale un mensaje "Llamada al procedimiento no válida" y la otra referida a la fecha de mi tabla sale "Error", pero no me importa este desarrollo pues lo que necesito es que me indique la fecha del trimestre actual y el del próximo sobre la fecha de mi tabla, no el numero del trimestre o trimestres y tampoco sobre la fecha del sistema.

Me sorprende, pero prueba a quitar Fecha() y escribir Now(), que te lo debe transforma en Ahora(). Es la fecha y hora del sistema.

Hola:

Ayer intente contestar, pero parece que la página fallaba y me hecho fuera, por eso no se si salió la contestación a tu agradecida solución:

El fallo me obedecía y se ha resuelto cambiando "t" por "q",

Estoy intentando poner como criterio de consulta que seleccione registros de una tabla por trimestre actual.

Trim: Año([fec])*4+ParcFecha("q";[fec])=Año(Fecha())*4+ParcFecha("q";Fecha:())+1

Sólo he encontrado esta, pero no me funciona. ¿sabes como puedo hacerlo para que me funcione?

Gracias

¿En lenguaje SQL le pones q? Sorpresas que se lleva uno. Normalmente la q de trimestre se pone en código.

Reconozco que no me gustan las consultas. Pienso que para que crearlas, si lo mismo lo puedes ver desde el propio formulario donde metes datos.

Por ejemplo, si con la tabla Pedidos(bendita sea la base Neptuno, no sé porque los cretinos de Microsoft la quitaron) hago una consulta en la que debajo del campo FechaPedido le pongo

Al abrirla

Sólo me saca los del primer trimestre del año en curso

Pero es mucho más sencillo, en el mismo formulario donde relleno los datos de la tabla ponerle un botón( o en cualquier otro evento)

Puedes ver que hay 830 registros, pero si pulso el botón

El código del botón es

Private Sub Comando9_Click()
Me.RecordSource = "select * from pedidos where datepart(""q"",fechapedido)=datepart(""q"",date()) and year([fechapedido])=year(date())"
End Sub

Aquí si se utiliza la q

Pero, incluso se podría poner un combinado donde eligieras que trimestre quieres ver, etc.

Ante todo agradezco el interés que estas poniendo para intentar ayudarme, pero para no confundirte, creo que debemos borrar todo hasta ahora, pues me temo que cada vez lo estamos complicando mas.

Te cuento, tengo unas fechas en una Tabla que tiene preestablecidos unos vencimiento trimestrales

En un momento determinado y con anterioridad al vencimiento del trimestre se produce una variaciones y necesitaría saber lo que supone hasta el próximo vencimiento del trimestre que corresponde, es decir hallar por ejemplo la diferencia de días, entre la variación y ese próximo trimestre preestablecido desde la fecha inicial.

Por eso desde un principio quería despejar esa duda si mediante una consulta, creando un Campo, me dijera el próximo Trimestre a vencer a partir de esa variación  y luego ya tendría el dato para resolver el resultado para calcular.

La variación que me refiero es una compra intermedia y tiene que ser calculada por los días que median.

No se si queda claro, pero  lo que si agradezco de antemano es tu tiempo para ayudarme.

Muchas gracias

Me vas a llamar pesado, pero creo que he dado con la solución

He creado en una Consulta dos Campos relacionados entre si:

Uno- TRE: AgregFecha("q";1;[fec]) y otro

y otro- PRTRE: SiInm(Año([TRE])=Año(Fecha());[TRE];AgregFecha("yyyy";DifFecha("yyyy";[TRE];Fecha());[TRE])), este para que me respete el año de la variación, pues algunas fechas del inicio son del año anterior y si no hago esta última pone el trimestre del año siguiente, siendo este dato el que puedo trabajar

No se si me he explicado y supongo que a lo mejor hay una fórmula que simplifique todo esto, y lo haga solo con una extracción, pero yo por el lenguaje de módulos no me aclaro mucho por el idioma.

De tosa formas muy agradecido 

Vamos a ver, no es necesaria ninguna consulta. No se donde se producen esas "variaciones", pero, por ejemplo, si tengo una tabla Otra y otra tabla DetalleOtra, con la que he construido un formulario con subformulario

Ya te he dicho que no sé donde van las modificaciones, por lo que para el ejemplo voy a suponer que cambias uno de los productos( me olvidaba, al cuadro de texto donde van a aparecer los días le llamo DiasFaltan). Si lo cambio por

En el momento que elijo el nuevo

Me pone, que la modificación la he hecho hoy 20/03/2019( he puesto que se vea para el ejemplo, pero no sería necesario ni que existiera ese cuadro) y en DíasFaltan los que ídem.

Que más adelante modificas otro producto, en fecha modificación te pondría la nueva y en Días Faltan los nuevos.

El código del evento, después de actualizar del combinado Producto es(ya te digo que es para el ejemplo y aprovechando que en producto ya hay algo escrito), es simplemente

Me.Parent!fechamodificacion = Date
Me.Parent!diasfaltan = DateDiff("d", Date, Me.Parent!fechavencimiento)

Por cierto, en el formulario, cuando "relleno" la fecha de pedido, le digo que después de actualizar

Fechavencimiento =dateadd("q",1,fechapedido)

Nada más

Hola:

Déjalo si quieres, no se trata de que modifique un precio de un articulo determinado

Un cliente compra una mercancía en una fecha (fec)( 14/12/2018)por un importe determinado y  se pactan unos vencimientos Trimestrales. (14/03/19 - 14/06/19 - 14/09/19 y 14/12/19) 

El 10/01/19 adquiere más mercancía y hay que incluir el importe en el más próximo vencimiento del Trimestre 14/03/19 y por el tipo de mercancía tengo que sacar el precio que representa por los días que corresponden a este periodo, por eso necesito, primero que marque en la Consulta, los vencimientos Trimestrales pactados y por otro que fije la diferencia desde la nueva adquisición

Por eso pretendo, primero un Campo que fije el primer  o próximo vencimiento fijado inicialmente que le corresponde, una vez se ha producido la nueva adquisición. 

Si hago lo que me expones, fijaría el trimestre desde que se produce ahora, pero no respeta el prefijado al inicio de la primera compra, para acumularlo

Nuevamente perdona, pero parece un lio que creo se puede solucionar solo mediante Consulta.

Muy agradecido   

He recibido este mensaje y creo que no es del tema que nos ocupa

Aunque no es del 365 ¿has probado a mirar?

https://support.microsoft.com/es-es/help/918814/error-message-when-you-run-a-query-in-access-2007-system-resource

No sé como lo has recibido, ya que iba dirigido a otro.

Bueno, voy con el último intento de entender. Si tengo una tabla Vencimientos

Tengo un formulario Ventas con un subformulario DetalleVenta

Como no se la forma que usáis para pactar vencimientos, pongo un combinado para que elijas trimestres. Esta es la venta que has hecho y le vas a conceder tres vencimientos

En cuanto elijo el tres, la tabla Vencimientos me queda

Es decir, divide el importe en tres trimestres. Vamos a suponer que todavía no has cobrado ninguno y le añades productos a la venta. Como no sé la forma que usas para actualizar te he puesto un botón Actualizar

Pulsas el botón y

Y te actualiza el nuevo importe de los vencimientos.

Vamos a suponer que ha pasado el tiempo, has cobrado un vencimiento(no sé como lo contabilizáis)

Viene el cliente y añade un producto a la cesta de la compra

El nuevo importe no se lo puedo cargar al primer vencimiento, ya que está vencido y pagado. Por tanto pulso el botón y

Es decir, al nuevo importe de la venta le resta lo ya pagado y lo que queda lo divide en los vencimientos que quedan.

El código del formulario es

Private Sub Comando12_Click()
DoCmd.RunSQL "update vencimientos set importevencimiento= (ImporteVenta - Nz(DSum(""importevencimiento"", ""vencimientos"", ""idcliente=" & Me.IdCliente & " and cobrado=True"")))/DCount(""*"", ""vencimientos"", ""idcliente=" & Me.IdCliente & " and cobrado=false"") where idcliente=" & Me.IdCliente & " and cobrado=false"
End Sub
Private Sub Pactados_AfterUpdate()
Dim i As Byte
For i = 1 To Pactados
DoCmd.SetWarnings False
DoCmd. RunSQL "insert into vencimientos (Idcliente, fechavencimiento, importevencimiento)values(idcliente, dateadd(""q""," & i & ", fechaventa), importeventa/pactados)"
Next
End Sub

Recibo este mensaje que no me corresponde, debe cruzarse información

Hola emolinaa.

Icue González ( seguido por ti ) ha respondido a la pregunta Necesito agrupar albaranes en un factura

Yo no cobro, estoy en esto porque me gusta. Por otro lado, al no saber como está construido el informe es difícil dar una opinión concreta.

Normalmente, si en un informe tienes una agrupación, por ejemplo, NumFactura, ó FechaVenta, etc, no necesitas saltos de página ya que le puedes decir, que mantenga junto el grupo en una página, de forma que cuando se "acaba" un grupo, el siguiente no empieza a continuación, sino que empieza en otra página. O, si quieres usar un salto de página, casi es mejor ponerlo en la sección Pie de grupo.

 Hola:

 Cuanto lamento el trabajo que me estas dedicando para que pueda resolver lo que necesito

Primero el desarrollo del Código del Módulo para el Evento que me has mandado, me pierdo, pues no estoy acostumbrado a manejarme y sobretodo si tengo que adaptarlo a mis Campos.

A modo de ejemplo y compresión fácil, indique como si fuera un movimiento contable, pero no es exactamente para lo que necesito

Es para uso de seguros de pólizas que tienen preestablecida la forma de pago anual, mensual, trimestral, etc.

En un momento determinado y antes del vencimiento sufre alguna variación que genera un importe complementario y que el periodo que debe contemplar esa modificación es desde esa fecha hasta el próximo vencimiento, para reflejarla en el formulario del recibo, cuando es pago anual no hay problema pues respeta hasta el vencimiento natural, pero cuando es por el periodo fraccionado, no me pone “hasta 00/00/0000”, próximo a vencer

Por eso necesitaría que en la misma Consulta que genera el Formulario en un Campo nuevo, desde la misma, calculara ese próximo

Solo pregunto ¿no se podría desarrollar una especie de formula igual que actualiza el año, fijara el próximo vencimiento a partir de la fecha inicial de esa póliza?

Por ejemplo:

=SiInm(Año([Finicio)=Año(Fecha());[Finicio];AgregFecha("yyyy";DifFecha("yyyy";[Finicio];Fecha());[Finicio])) pero que conjugue =ParcFecha("q";[Finicio]), pero yo no se desenvolverla.

El resultado de la consulta debería quedar:

Dato                F. Inicio        F. Modificación          Próx, Vencimiento

Rec.                   Finicio               Fmodif                       FprTrim       

1000            14/12/2017        20/04/19                        14/06/19

En este ejemplo los vencimientos Trimestrales desde el inicio, renovado, serían 14/03/19, 14/06/19, 14/09/19 y 14/12/19, la fecha de inicio solo sirve como arranque para el día y mes, pero no tiene que ser el mimo año a la modificación.

Claro si pongo la fórmula =ParcFecha("q";[Fmodif]) calcula un Trimestre desde esa fecha, pero el que tiene que calcular es el próximo que ya esta descrito desde el principio, respetando el año y si me refiero al inicial altera las fechas del trimestre

Como te he dicho al principio huyo de un Código, a no ser que estuviera muy claro, para copiarlo y pegarlo y generarlo ante un Evento por ejemplo al incorporar la fecha de la modificación

No se cuantas veces tengo que agradecerte el interés que estas demostrando y quizás te pase algo parecido ami que hasta que no lo consigo no paro.

Muchas gracias

No es que me importe pero he recibido también esta contestación que no me corresponde y a lo mejor el que le espera no la recibe

Hola emolinaa.

Icue González ( seguido por ti ) ha respondido a la pregunta Como abro un formulario desde un msgbox en access

Primero, con un mensaje no puedes, pero puedes hacerlo con un formulario.

Segundo, depende a lo que te refieras con pulsar 1 ¿Hay algún control con ese número o es simplemente pulsar la tecla 1?

Por ejemplo

Si pulso el botón Aviso

Saludos

Eduardo

Sigo con otro recibido

 

Hola emolinaa.

Icue González ( seguido por ti ) ha respondido a la pregunta Aviso cada último día de mes access

En el evento Al cargar de ese formulario crea un procedimiento de evento y entre Private Sub y End sub escribe

If Date = DateSerial(Year(Date), Month(Date), 1) Then
MsgBox "Es el primer día del mes", vbOKOnly, "Por si no te habías dado cuenta"
ElseIf Date = DateSerial(Year(Date), Month(Date) + 1, 0) Then
MsgBox "Es el último", vbOKOnly, "¿ Para cuando las vacaciones?"
End If

Creo, no lo sé, que cuando sigues a alguien, te envían las respuestas que da por si te sirven para algo.

Vale,

Sigo recibiendo en mi corres respuestas que no me pertenecen y sin embargon de lo mío no hay nada ¿no será que lo este recibiendo otra persona?

COPIO:

Hola emolinaa.

Icue González ( seguido por ti ) ha respondido a la pregunta Borrar Registro en Hoja de Datos Access desde un formulario

Vamos a suponer que el formulario se llama Ventas, el subformulario DetalleVenta y ambos están relacionados por IdVenta. En el formulario, o bien en un botón, o bien en otro evento basta con poner

docmd.setwarnings false

docmd.runsql"delete * from detalleventa where idventa=" & me.idventa & ""

me.detalleventa.form.requery

Es decir, no muestres la ventana de "Va a eliminar...

Borra todos aquellos registros de la tabla DetalleVenta en que su idventa sea igual al que hay en ese momento en el formulario(no hace falta que esté visible)

Por último, que el subformulario "reconsulte" su origen

OTRO:

Hola emolinaa.

Icue González ( seguido por ti ) ha respondido a la pregunta Estoy haciendo un buscador en Access y tengo una duda.

Por lo que dices parece que en la consulta, debajo de los campos tienes puesto criterios definidos por el valor que tome un control de un formulario. Construye la consulta como

¿Qué quieres que te diga? No lo sé. Busca en Todoexpertos a Josep Planells que es el administrador de la página y se lo preguntas a él.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas