Access - defaultvalue

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

defaultvalue

Publicado por Pablo (328 intervenciones) el 20/12/2021 20:21:45
Hola a tod@s
Voy a meter datos en un formulario, el código de línea lo pone automaticamente, el numero de albarán lo pregunta, me gustaría que después de teclear un número lo considerara el valor predeterminado para el siguiente registro, que aunque lo pregunte ya esté escrito el valor anterior.
Espero haberme explicado

Un saludo

Pablo
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
Imágen de perfil de Eduardo

defaultvalue

Publicado por Eduardo (336 intervenciones) el 20/12/2021 20:54:54
Puede hacerlo de 3 formas si es un formulario dependiente.

PRIMERA FORMA

Clonando el formulario

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Form_Current()
 
  'FORMA LARGA
 
  Dim ultimo As Integer
  Dim cta As Integer
  Dim miRS As Recordset
 
 If Me.NewRecord Then
  Set miRS = Me.RecordsetClone
   cta = miRS.RecordCount
   If cta > 0 Then
    miRS.MoveLast
    miRS.MovePrevious
    ultimo = miRS!numero
    If ultimo > 0 Then
      miRS.MoveNext
      Me.numero = ultimo
    End If
   End If
 End If
 
End Sub

SEGUNDA FORMA

Con la funcion Dlast() para obtener el ultimo registro ( es la recomendada ).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Form_Current()
 
  'FORMA CORTA
 
  Dim ultimo As Integer
 
 If Me.NewRecord Then
    ultimo = Nz(DLast("[numero]", "tblalbaran"))
    If ultimo > 0 Then
      Me.numero = ultimo
    End If
 End If
 
End Sub

TERCERA FORMA (Solo formulario dependiente)

Sobre el campo nuevo oprima las teclas Ctrl+' (tecla control más tecla apostrofe), esto repite el valor del campo anterior.

Observe que si fuera para ir incrementando el numero basta con sumarle +1. en los 2 primeras formas.
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

defaultvalue

Publicado por Anonimo (3371 intervenciones) el 21/12/2021 09:42:47
En base a esto:
....después de teclear un número lo considerara el valor predeterminado para el siguiente registro ....


Una vez ingresado el valor (evento 'después de actualizar') se calcula el valor siguiente (normalmente se le aumentara en una unidad), tras ello se le asigna 'como texto' a su propiedad 'valor predeterminado',

Al cerrar el formulario preguntara si se desea guardar los cambios (ese cambio afecta al diseño del formulario).

La decisión sobre guardar o no las modificaciones se tomaría en función de si en un futuro se continuara con la misma serie o se comenzara una nueva en la que el primer valor introducido se utilizara como nueva semilla.
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

defaultvalue

Publicado por Pablo (328 intervenciones) el 21/12/2021 10:23:43
Por la tarde noche veré q forma de las cuatro utilizo, en principio me decanto por la segunda o asignar el valor predeterminado en after update del actual
Gracias a los dos
Un saludo
Pablo
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: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

defaultvalue

Publicado por Pablo (328 intervenciones) el 21/12/2021 20:16:15
Hola
Acabo de probar escribiendo este código:
Private Sub Form_Current()
If Me.NewRecord Then
codigo_cesta = Nz(DMax("codigo_cesta", "cestas"), 0) + 1
If IsNull(DLast("numero_cesta", "cestas")) Then
numero_cesta = 1
Else
numero_cesta = DLast("numero_cesta", "cestas")
nombre_cesta = DLast("nombre_cesta", "cestas")
End If
End If
End Sub
De entrada me funciona, tendré que revisarlo, ver si tiene algún gazapo,
Gracias
Pablo
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

defaultvalue

Publicado por Anonimo (3371 intervenciones) el 21/12/2021 22:55:35
Funcionara, pero eso y lo solicitado no parecen seguir el mismo camino.

Solo algo a tener en cuenta: DLast y DMax no siempre devuelven el mismo resultado.
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
Imágen de perfil de Eduardo Pérez Fernández

defaultvalue

Publicado por Eduardo Pérez Fernández (336 intervenciones) el 22/12/2021 02:07:19
Le aclaro sobre la respuesta que le dan es cuestión de interpretación, debido a que en su pregunta en ningún momento se refiere a seguir un consecutivo, entonces, como lo tiene está bien planteado, es decir, obtener el contenido de campos texto del último registro.

Dmax(), sirve para obtener el máximo valor de un valor numérico y Dlast() sirve para obtener información del último registro. por tanto, no siempre se puede asegurar el "numero_cesta" y "nombre_cesta" corresponden al "codigo_cesta", pero entiendo, en su caso esta bien porque le interesa es obtener es los últimos nombres almacenados en los campos "numero_cesta" y "nombre_cesta" y el "codigo_cesta" es el mayor más 1, lo que indica que su código esta.
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