Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Se puede hacer esto

Estas en el tema de Se puede hacer esto en el foro de Bases de Datos General en Foros del Web. Hola a tod@s, Necesito crear un campo en Access que tenga el siguiente formato: 9999PI09X donde los 9999 tiene que ser autonumérico y la X ...
  #1 (permalink)  
Antiguo 26/11/2008, 02:07
 
Fecha de Ingreso: julio-2007
Mensajes: 75
Antigüedad: 16 años, 9 meses
Puntos: 0
Se puede hacer esto

Hola a tod@s,

Necesito crear un campo en Access que tenga el siguiente formato:

9999PI09X

donde los 9999 tiene que ser autonumérico y la X es opcional

PI es una constante que no variaría nunca y 09 es el año por lo que habría que variar cada 12 meses, eso lo haría a mano imagino....


Es posible realizar esto? he intentado hacer una máscara de entrada pero nada no doy con ello.

Se os ocurre algo?

Un saludo
  #2 (permalink)  
Antiguo 26/11/2008, 02:36
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Se puede hacer esto

Si lo haces a traves de un formulario es sencillo. Por ejemplo, podrias en el evento "Al activar registro", comprobar si se trata de un nuevo registro. En caso afirmativo, creas el nuevo "Id" y se lo asignas al valor por defecto del control donde esta ese campo.

Una pregunta, antes de generar nada, el numero primero (9999), debe empezar desde cero cada año???

Un saludo
  #3 (permalink)  
Antiguo 26/11/2008, 03:29
 
Fecha de Ingreso: julio-2007
Mensajes: 75
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Se puede hacer esto

Cita:
Iniciado por Taribo007 Ver Mensaje
Si lo haces a traves de un formulario es sencillo. Por ejemplo, podrias en el evento "Al activar registro", comprobar si se trata de un nuevo registro. En caso afirmativo, creas el nuevo "Id" y se lo asignas al valor por defecto del control donde esta ese campo.

Una pregunta, antes de generar nada, el numero primero (9999), debe empezar desde cero cada año???

Un saludo
Si debe empezar desde 0001 cada año... No entiendo muy bien lo que dices.
  #4 (permalink)  
Antiguo 26/11/2008, 03:45
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Se puede hacer esto

Te preguntaba si lo haces a traves de un formulario, es decir, que vas introduciendo registros, y quieres que este campo se genere automaticamente cuando vayas a insertar uno nuevo a traves del form y en funcion de las caracteristicas antes descritas

Un saludo
  #5 (permalink)  
Antiguo 26/11/2008, 03:47
 
Fecha de Ingreso: julio-2007
Mensajes: 75
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Se puede hacer esto

Si así es........ tengo un formulario y cada vez que inserto uno tendría que tener el formato siguiente:


Nº Orden 0001PI2009X

El siguiente registro tendría 0002PI2009X y así sucesivamente....

Un saludo y gracias
  #6 (permalink)  
Antiguo 26/11/2008, 05:42
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Se puede hacer esto

Este ejemplo hace lo que necestas:

Ejemplo

Un saludo

Última edición por Taribo007; 27/11/2008 a las 03:24
  #7 (permalink)  
Antiguo 27/11/2008, 02:44
 
Fecha de Ingreso: julio-2007
Mensajes: 75
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Se puede hacer esto

Se podría hacer la consulta que aparece en el ejemplo:

SELECT Tabla.NumOrden, Int(Left([NumOrden],4)) AS Num, Mid([NumOrden],7,4) AS Año
FROM Tabla;

Los valores que tengo en la tabla serían estos 0001PI2008X con esta consulta cogería esto:

0001 2008

Podría poner en código que al insertar un nuevo registro el valor obtenido en esa consulta aumente en uno y se ponga en el campo NumOrden de la siguiente forma:

0002PI2008X


No sé si me explico bien
  #8 (permalink)  
Antiguo 27/11/2008, 02:55
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Se puede hacer esto

Eso es exactamente lo que hace el ejemplo, estoy reparando el error para que veas el codigo, pero lo que hace es con la funcion dmax, coger el masimo de Num de la consulta anterior, filtrado por el año actual (year(date()), sumarle 1, darle el formato adecuado, y establecer en el evento current del form este valor obtenido al default value del control

Un saludo
  #9 (permalink)  
Antiguo 27/11/2008, 02:58
 
Fecha de Ingreso: julio-2007
Mensajes: 75
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Se puede hacer esto

Cita:
Iniciado por Taribo007 Ver Mensaje
Eso es exactamente lo que hace el ejemplo, estoy reparando el error para que veas el codigo, pero lo que hace es con la funcion dmax, coger el masimo de Num de la consulta anterior, filtrado por el año actual (year(date()), sumarle 1, darle el formato adecuado, y establecer en el evento current del form este valor obtenido al default value del control

Un saludo
Ok, muchas gracias de verdad...... voy a ver si lo consigo yo, aunque me da que tu vas a ser más rápido, seguro jejejeje

Un saludo
  #10 (permalink)  
Antiguo 27/11/2008, 03:06
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Se puede hacer esto

Ya esta, actualizo el enlace y te mando el ejemplo, veras que hace justo lo que quieres.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:54.