Error triple en una ventana para crear un nuevo registro

Disculpad el título. He adaptado un código que me hicieron para un formulario, en el que me pregunta si quiero crear un nuevo registro. El motivo de esto es porque genera automáticamente un código. Bien, pues no sé por qué, pero cuando le digo que no, me pregunta tres veces si estoy seguro, como san Pedro. He mirado el código una y otra vez, pero no sé por qué lo hace. Se trata del formulario 03-TPV Presupuesto. ¿Alguien me puede ayudar?

https://www.dropbox.com/s/aepbehs6tgg4epv/Tienda%20BD.accdb?dl=0 

1 Respuesta

Respuesta
2

Diego: Para salir de ese bucle, porque en realidad llamas al Form_Current tres veces, debes sacrificar el Order By del Form_Load.

Con un poco más de tiempo te comento más ampliamente el tema. Me tomo nota, pero ahora de momento dale una mirada a>>

https://support.office.com/es-es/article/orden-de-eventos-para-objetos-de-base-de-datos-e76fbbfe-6180-4a52-8787-ce86553682f9 

Un saludo >> Jacinto

Sí, pero utilizo ese Order by en VBA porque a través de las opciones del formulario no me funciona.

Échale un vistazo, por favor, y me comentas.

Muchas gracias.

Diego: La verdad es que no puedo ver si funciona, porque el Origen de Datos está vacío.

Lo que si si te puedo comentar es que yo suelo utilizar esa Propiedad y no tengo problemas.

Si tu haces la prueba de nuevo y no te ordena me comentas.

De otro lado no acabo de ver la utilidad de la pregunta de confirmación sobre un sondeo que ya haces de si es nuevo registro que genere el Auto y si no loes salta, pero imagino que tus razones tendrás. Un saludo >> Jacinto

Pruebo lo de ordenar, a ver si puedo ser porque lo yo creo.

Lo que no entiendo es lo último. ¿Me dices que puedo omitir la pregunta?

Mil gracias

Acabo de probar lo de ordenar, y no me funciona. He dejado indicado DoCmd.SetOrderBy "[Fecha de la factura] DESC", y he probado en la hoja de propiedades > ordenar por > a poner [Fecha de la factura] DESC, pero no lo ordena. También lo he probado con la consulta origen del formulario, ordenando por fecha de factura, y tampoco. Te adjunto una base de datos con ejemplos, para que puedas tú probar, en el formulario "03-C Entrada de compras".

https://www.dropbox.com/s/idichndd17nkm8g/Tienda%20BD%20%281%29.accdb?dl=0 

Lo que sí he comprobado es que, al indicar el código que te digo, me soluciona lo de las preguntas.

Gracias.

Diego: Ordenando un poco el tema:

Tu Pregunta >>Lo que no entiendo es lo último. ¿Me dices que puedo omitir la pregunta?

La respuesta sin conocer larazón por la que está es SI. De ese modo te va a generar directo un Auto >>"Siempre que sea un Registro nuevo".

Poniendo un simil que no se si acierto mucho sería>>

Tengo la llave de mi puerta en la mano, le doy las dos vueltas de apertura y se abre una ventanita pequeña con un letrero y dos botones, SI y NO y el letrero dice ¿Realmente quieres abrir la puerta?

Si quieres abrirla pulsa SI, en caso contrario pulsa NO y vuelve a cerrar.

Y ahora vamos con el Ordenar por en las Propiedades y mejor te pongo unas figuras sobre el Formulario que me has citado >>

Y el resultado:

Poco más te puedo decir. Un saludo >> Jacinto

Le echaré un vistazo a lo de la pregunta.

En cuanto al ordenar, si pruebo la otra opción, pasa esto:

Es decir, el mismo orden que si lo pusiera descendente.

¡Gracias!

Diego: Supongo que te refieres al mensaje, que en mi opinión te sale porque no dejas un "Espacio" entre el [Fecha de la Factura] y el DESC. Que yo aprecie lo tienes >> [Fecha de la Factura]DESC

Un saludo >> Jacinto

Eso está bien. Es que no sé cómo mostrártelo. Tanto si pongo en el formulario, no en VBA, [Fecha de la factura] DESC, como [Fecha de la factura] ASC, me salen en el mismo orden.

Diego: Aunque sea un poco tarde, te comento los errores que yo he visto:

1.- Le estás proporcionando "Dos" Origenes de datos. Uno en la Propiedades >> Datos y otro por Código en el Form_Load()

2. A mi modo de ver, si lo que quieres es visualizar los Registros con una antigüedad de menos de 390 días, lo que has de poner es un filtro, que en principio puede ir en el código de Origen de Datos, pero no le veo bien construido.

En vista de ello, Deja el Origen de Datos en >> Prpiedades >> Origen de Registro

En el Form_Load() lo dejas así >>

'Para evitar interferencias con los Formularios que tienen acceso a la Tabla 01_E Compras, los cierro
Private Sub Form_Load()
'Variables que yo te añado
Dim FiltroJustifica As String, FiltroFechas As String, FiltroTotal As String
'Si el Formulario esta abierto lo cierro, antes de abrirlo
If CurrentProject.AllForms("03-C Entrada de Ventas").IsLoaded Then DoCmd.Close acForm, "03-C Entrada de Ventas"
'Si el Formulario esta abierto lo cierro, antes de abrirlo
If CurrentProject.AllForms("03-C Diferencia de Existencias").IsLoaded Then DoCmd.Close acForm, "03-C Diferencia de existencias"
'Establezco el Filtro para que en éste Formulario, solo se visualicen los Apuntes que comienzan por "C"  >> Y con una antigüedad máxima de 390 días
FiltroFechas = "[Fecha de la factura] BETWEEN #" & Format(Nz(Date - 390, #1/1/1900#), "mm/dd/yyyy") & "# AND #" & _
                    Format(Nz(Date, #12/31/9999#), "mm/dd/yyyy") & "#"
FiltroJustifica = "Left(NumJustifica,1) = 'C'"
FiltroTotal = FiltroFechas & " AND " & FiltroJustifica
Me.Filter = FiltroTotal
Me.FilterOn = True
End Sub

Entonces ya si que puedes poner el Orden en las "Propiedades >> Ordenar por Como>>

[Fecha de la factura] DESC o bien simplemente [Fecha de la factura] para que te lo haga ascendente, No hace falta ASC, porque ya lo toma por Omisión: Un saludo >> Jacinto

PD.- En éste caso concreto, no haría falta tampoco el Nz(... porque Date no faltará nunca.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas