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

Problema con access

Estas en el tema de Problema con access en el foro de Bases de Datos General en Foros del Web. Buenas noches, son las 2 de la mañana en España y llevo toda la noche intentando resolver un problema en access. El problema es el ...
  #1 (permalink)  
Antiguo 17/09/2004, 18:15
 
Fecha de Ingreso: septiembre-2004
Mensajes: 80
Antigüedad: 19 años, 8 meses
Puntos: 0
Problema con access

Buenas noches, son las 2 de la mañana en España y llevo toda la noche intentando resolver un problema en access. El problema es el siguiente:

Quiero crear un numero que nunca se repita formado por la cadena CMB + 5 digitos acabados en el numero de id. Ejemplo:

- Un usuario con id 5 tendra el numero "CMB00005"
- Un usuario con id 999 tendra el numero "CMB00999"
- Un usuario con id 25465 tendra el numero "CMB25465"

Esta cadena resultante se crea de manera automatica, no es modificable, simpre tiene 5 digitos y se almacena en el campo de la misma tabla donde recoge el id.

¿Como lo puedo hacer? (Estoy desesperado)

Un saludo
  #2 (permalink)  
Antiguo 17/09/2004, 18:24
 
Fecha de Ingreso: septiembre-2004
Mensajes: 9
Antigüedad: 19 años, 7 meses
Puntos: 0
Son las 2:26 en España y si te esperas un instante te doy la solución.
  #3 (permalink)  
Antiguo 17/09/2004, 18:31
 
Fecha de Ingreso: septiembre-2004
Mensajes: 9
Antigüedad: 19 años, 7 meses
Puntos: 0
Mete esto en [Procediento de evento] tras actualizar y me cuentas.
Replace(Right(Space(5) & Me![Id], 6), " ", "0")
  #4 (permalink)  
Antiguo 17/09/2004, 18:34
 
Fecha de Ingreso: septiembre-2004
Mensajes: 9
Antigüedad: 19 años, 7 meses
Puntos: 0
Cometí tu error. ¿lo ves?
"CMB" & Replace(Right(Space(5) & Me![Id],5), " ", "0")
  #5 (permalink)  
Antiguo 17/09/2004, 18:44
 
Fecha de Ingreso: septiembre-2004
Mensajes: 80
Antigüedad: 19 años, 8 meses
Puntos: 0
parate, que soy principiante, explica paso a paso, por favor o añademe a tu msn y hablamos: [email protected]

Un saludo
  #6 (permalink)  
Antiguo 18/09/2004, 04:41
 
Fecha de Ingreso: septiembre-2004
Mensajes: 9
Antigüedad: 19 años, 7 meses
Puntos: 0
Mira, a cada Control (u objeto de un formulario) le puedes asociar código VBA para unos determinados eventos, llamados [procedimientos de evento].
Así, marcado el objeto, sobre el boton derecho >propiedades> pestaña de eventos y encontrarás> Después de actualizar, Después de insertar etc.
Pues bien, te va a un objeto que se llama Formulario (¿Cómo?, pues bien facil en el angulo superior izquierdo de tu formulario, en modo diseño veras un cuadradito, sobre él boton derecho > propiedades), seleccionas Después de insertar y seleccionas en la desplegable [Procedimiento de Evento], pulsas los […] y allí pon lo siguiente:
' sustituye espacios por 0 ceros
If not isnull(me![id] ) then
‘ Donde clave será la cadena que quieres formar, así, esto hará que tomando como raiz "CBM", Clave tomará el valor del campo del formulario 00000 & [id].
Me![clave]= "CMB" & Replace(Right(Space(5) & Me![Id],5), " ", "0")
endif
  #7 (permalink)  
Antiguo 18/09/2004, 05:29
 
Fecha de Ingreso: abril-2004
Mensajes: 5
Antigüedad: 20 años
Puntos: 0
Respuesta

Hay varias formas. Supongamos que el campo de la tabla se llama Indice. Ponlo como indexado Sí, sin duplicados. En el formulario en el que introduces los datos, en sus propiedades-eventos-Al activar registro crea un procedimiento de evento y entre Private Sub y End Sub escribe
Indice="CBA" & "" & Format([CurrentRecord], "00000")
Así el primer registro será CBA00001, etc
  #8 (permalink)  
Antiguo 18/09/2004, 08:37
 
Fecha de Ingreso: septiembre-2004
Mensajes: 9
Antigüedad: 19 años, 7 meses
Puntos: 0
Tambien es válido.
  #9 (permalink)  
Antiguo 18/09/2004, 13:03
 
Fecha de Ingreso: septiembre-2004
Mensajes: 80
Antigüedad: 19 años, 8 meses
Puntos: 0
A ver, he hecho lo siguiente:

1. Abro el formulario.
2. Voy a eventos de formulario
3. Selecciono "Al activar registro: Procedimiento de evento"
4. Pulso "..."
5. Escribo lo siguiente:

Código:
Option Compare Database

Private Sub Form_Current()
Número de Socio = "CMB" & "" & Format([CurrentRecord], "0000")
End Sub
6. Me da un error de sintaxis y me marca en amarillo "Private Sub Form_Current()"

El cuadro de texto donde se muestra el numero de socio se llama "Número de Socio" y el nombre del registro en la tabla "Datos Personales" es tambien "Número de socio"

¿Que puede ser?

Un saludo y muchas gracias por vuestras respuestas
  #10 (permalink)  
Antiguo 18/09/2004, 13:11
 
Fecha de Ingreso: septiembre-2004
Mensajes: 80
Antigüedad: 19 años, 8 meses
Puntos: 0
Al final y gracias a vuestra ayuda lo consegui.

Muchisimas gracias y un saludo
  #11 (permalink)  
Antiguo 18/09/2004, 19:06
 
Fecha de Ingreso: abril-2004
Mensajes: 5
Antigüedad: 20 años
Puntos: 0
Respuesta

En VB si un nombre es continuo basta con ponerlo así, sin embargo cuando el nombre no es continuo, como es este caso, tienes que ponerlo como
[numero de socio]="CMB".....
Yo siempre aconsejo que los nombres de los campos de las tablas se pongan siempre continuos, por ejemplo, NumerodeSocio, por:
1º A la hora de programar evitas tener que encerrarlo entre corchetes
2º A veces por error escribes numero de socio, y a la hora de programar te vuelves loco porque no funciona, y es que entre de y socio hay dos espacios en vez de uno
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 00:44.