Access - Problema con falso autonumerico

 
Vista:
sin imagen de perfil

Problema con falso autonumerico

Publicado por Eduardo (9 intervenciones) el 13/06/2013 17:22:28
Os resumo mi problema. Tengo lo siguiente:

Tabla TABLAENTRADAS:

- ID: Autonumerico
- Numero: es el falso autonumerico
- Fecha: fecha
- Hora: hora
- Importe: importe

En el formulario ENTRADAS en la opción "al activar registro" tengo esto:

Private Sub Form_Current()
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS"), 0) + 1
End If
End Sub

Y en otro formulario un botón que ejecuta este código:

Private Sub IMPRIMIRENTRADAS_Click()

DoCmd.OpenForm "ENTRADAS", acNormal, "", "", , acNormal
DoCmd.GoToRecord , "", acNewRec
DoCmd.GoToControl "FECHA"
SendKeys Date, True
DoCmd.GoToControl "HORA"
SendKeys Time(), True
DoCmd.PrintOut acSelection, , , acHigh, 1, True
DoCmd.Close acForm, "ENTRADAS"

End Sub

Mi problema es que si tengo la tabla TABLAENTRADAS vacia al primer registro le asigna el numero 2 (falso autonumerico) en lugar de asignarle el 1, luego funciona de lujo.

Podeis decirme como corregirlo.....

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problema con falso autonumerico

Publicado por Jesús Manuel (134 intervenciones) el 14/06/2013 08:41:59
Cuando haces la comprobación por primera vez para el valor del campo NUMERO puedes insertar un IF para ver si este valor es 1 y que asigne Me.NUMERO el valor 1 y en caso contrario tal y como lo tienes.

Private Sub Form_Current()
If ( Nz(DMax("NUMERO", "TABLAENTRADAS"), 0)) =1 then
Me.NUMERO =1
else
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS"), 0) + 1
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con falso autonumerico

Publicado por Eduardo (9 intervenciones) el 14/06/2013 12:06:28
Resuelto a medias jejejejeje

Ahora con este nuevo codigo:

Private Sub Form_Current()
If ( Nz(DMax("NUMERO", "TABLAENTRADAS"), 0)) =1 then
Me.NUMERO =1
else
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS"), 0) + 1
End If
End Sub

Al tener la tabla vacia a la primera entrada le da el valor 1, pero me da fallo esta linea "DoCmd.PrintOut acSelection, , , acHigh, 1, True".

Si desactivo esa linea, parece que lo hace bien, pero al generar mas entradas a todas les pone el numero 1 y no se guarda ninguna en la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problema con falso autonumerico

Publicado por Jesús Manuel (134 intervenciones) el 14/06/2013 13:32:12
Fallo mio. Quitale el 0 a tu código original antes del +1.


Private Sub Form_Current()
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS")) + 1
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con falso autonumerico

Publicado por Eduardo (9 intervenciones) el 14/06/2013 15:09:41
Me cago en tooooo....

Ahora con esto:

Private Sub Form_Current()
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS")) + 1
End If
End Sub

Me da fallo en la siguiente linea "DoCmd.OpenForm "ENTRADA LABORABLE NORMAL", acNormal, "", "", , acNormal" vamos que ni abre el formulario.

He probado tambien "DoCmd.OpenForm "ENTRADA LABORABLE NORMAL" y tampoco funciona.....

Me esta volviendo loco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problema con falso autonumerico

Publicado por Jesús Manuel (134 intervenciones) el 14/06/2013 15:16:11
Pero, el falso autonumérico funciona ahora desde el primer valor??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con falso autonumerico

Publicado por Eduardo (9 intervenciones) el 14/06/2013 15:23:58
Como no me abre el formulario ENTRADAS por el fallo comentado no te puedo decir....

EDITO....

Ya he solucionado este fallo pero sigue igual, salta al numero 2 y se come el 1.

He probado:

Private Sub Form_Current()
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS"), 0) + 1
End If
End Sub

Private Sub Form_Current()
If ( Nz(DMax("NUMERO", "TABLAENTRADAS"), 0)) =1 then
Me.NUMERO =1
else
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS"), 0) + 1
End If
End Sub

Private Sub Form_Current()
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS")) + 1
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con falso autonumerico

Publicado por Eduardo (9 intervenciones) el 14/06/2013 17:59:11
Pues ya esta solucionado......

He hecho lo siguiente. En lugar de añadir este codigo en el formulario ENTRADAS en la opción "al activar registro" (Current):

Private Sub Form_Current()
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS"), 0) + 1
End If
End Sub

He puesto este otro codigo (solo he quitado el 0) en el evento "antes de insertar" (BeforeInsert):

Private Sub Form_BeforeInsert(Cancel As Integer)
If Me.NewRecord Then
Me.NUMERO = Nz(DMax("NUMERO", "TABLAENTRADAS")) + 1
End If
End Sub

Ahora funciona perfectamente........sigo sin saber el porque pero asi es.

Muchas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar