** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - DUDAS BASE DE DATOS
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

DUDAS BASE DE DATOS

 Responder Responder
Autor
Mensaje
macflai98 Ver desplegable
Nuevo
Nuevo


Unido: 20/Marzo/2023
Localización: España
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita macflai98 Cita  ResponderRespuesta Enlace directo a este mensaje Tema: DUDAS BASE DE DATOS
    Enviado: 20/Marzo/2023 a las 17:07
Buenas tardes. Quería hacer un par de consultas que seguro que son muy sencillas pero que no soy capaz de sacar adelante.
Tengo una base de datos en access con una tabla donde tengo 2200 registros y un formulario mediante el cual meto los datos. Se trata de miembros de una asociación que tienen un nº de socio que va del 1 al 2200 con un campo autonumerico. Hasta ahi sin problemas
Despues tengo un campo Estado en el que 1 es "Alta" y 2 es "baja".
Entonces, yo quiero hacer un campo nuevo que se llame nº de orden solo para los que sean miembros de alta, con lo cual, los 1100 que son miembros de alta, tendrán 2 números, su nº de socio y su nº de orden.
Pongo un ejemplo... Una persona es el nº 650 de socio pero de orden (ya que hay bajas delante de él) tiene el 350. Pongamos que mañana se da de baja uno que tiene un nº de socio más bajo que él (por ejemplo el nº 20)... pues esta persona ya no será el 350 sino el 349 (aunque mantiene el 650 como nº de socio).
No sé si me he explicado bien... ¿ALguna ayuda?

Después, quiero que ese nº de orden aparezca también en el formulario que uso para introducir los datos.

La segunda consulta es más sencilla, creo... pero tampoco me sale.
Es que en la tabla de datos, haya un campo "Edad" en el que a partir de un campo "fecha de nacimiento" automáticamente me salga la edad de la persona en años.

Como digo, para alguien que sepa un poco seguro que está "chupado" pero para mi que lo hago todo autodidacta, me está costando un montón...

GRACIAS
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 21/Marzo/2023 a las 19:03
¿En que tabla va el campo nuevo que se llame nº de orden y que finalidad tiene?

Saludos

PD: En las normas del foro dice una pregunta por hilo.
Arriba
macflai98 Ver desplegable
Nuevo
Nuevo


Unido: 20/Marzo/2023
Localización: España
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita macflai98 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Marzo/2023 a las 10:05
En primer lugar disculpas por poner dos preguntas, se me pasó al leer las normas.
El campo nº de orden iría en la tabla principal. No tengo otra tabla.
La finalidad es que aquellos miembros que están de alta (aproximadamente la mitad de la base de datos) tengan dos números. Uno el que tienen por antiguedad desde que se apuntaron y otro el que les corresponde al quitar las bajas (por fallecimiento, porque se han dado de baja voluntariamente, etc.)
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3861
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Marzo/2023 a las 13:48
¿Necesitas de verdad ese número en la tabla?

Mira a ver si te viene mejor algo así

SELECT   ID, Usuario,   COUNT(*) AS numero
FROM  tabla1 
WHERE  estado = 1
Así siempre vas a tener el número secuencial.

Luis


Editado por lbauluz - 22/Marzo/2023 a las 13:50
El Búho es un pajarraco
Arriba
macflai98 Ver desplegable
Nuevo
Nuevo


Unido: 20/Marzo/2023
Localización: España
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita macflai98 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Marzo/2023 a las 14:18
Perdona mi ignorancia... Eso donde o como tendría que ponerlo?
Otra opción que también me valdría es que ese nº de orden apareciese en el Formulario que utilizo para introducir datos y gestionar miembros y no en la tabla.
GRacias.

Editado por macflai98 - 22/Marzo/2023 a las 14:29
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Marzo/2023 a las 14:58
No entiendo para que quieres un número, que puede cambiar constantemente, sigo sin entender la finalidad, en una consulta nueva en la vista sql pegas lo que dice Luis.

Saludos.
Arriba
macflai98 Ver desplegable
Nuevo
Nuevo


Unido: 20/Marzo/2023
Localización: España
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita macflai98 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Marzo/2023 a las 08:49
Quizá no me he explicado del todo bien, disculpad.
La idea es que cada persona tenga 2 números.

- Uno "histórico", es decir el número que se le dio cuando se dio de alta y que conserva para siempre (incluso aunque se dé de baja ese número no se puede reasignar, y por eso es la clave principal de la base de datos y es un campo autonumérico).

- Uno "real", es decir... el orden que realmente ocupas en la asociación. Una persona puede ser el histórico 1300 pero realmente, entre los socios que siguen de alta, sera el 670... y que se vaya moviendo según haya bajas, por lo que si mañana se da de baja uno que está delante de ti, tu seas el 669.

En la base de datos el campo de número historico es [nº hermano], el estado de alta o baja es [estado] y quiero crear un nuevo campo [nº orden] en el que los hermanos con estado =1 tengan un nº correlativo que se vaya actualizando según se dan bajas.
Es decir, los que tienen estado=2 (que son los que están de baja) no tendrían número de orden.

Quizá ahora me he explicado mejor.

Gracias por vuestra ayuda.
Arriba
macflai98 Ver desplegable
Nuevo
Nuevo


Unido: 20/Marzo/2023
Localización: España
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita macflai98 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Marzo/2023 a las 08:50
no me ha funcionado, o no soy capaz de hacerla funcionar.
Gracias de todos modos.
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3861
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Marzo/2023 a las 10:01
lo que pongo es una query que te devuelve los datos del cliente y un numero secuencial en cada fila, que es lo que entiendo que pides.

De esta forma en lugar de tener que cambiar todos los clientes cada vez que uno se da de baja, solo enseñas el número de orden cada vez que se consulta

Quiero decir, tienes 10 clientes y todos su número del 1 al 10.
Se da de baja el numero 2
Lo que tu propones es que todos sigan teniendo su número del 1 al 10 como histórico pero añadirles otro número diciendo que ahora el 3 es el 2, el 4 es el 3... y el 10 es el 9.

Esto implica cambiar este segundo campo de todos los clientes posteriores al que se ha dado de baja cambiándoles el nuevo número restando 1 al número que hubiese en ese campo, lo cual implica estar cambiando la tabla entera cada vez que uno se da de baja.

Lo que yo propongo es NO tener ese campo, lo que digo es solo enseñar ese número secuencial, que es lo mismo que pides, sin tener que cambiar todo, más rápido y eficiente... y mucho menos dolor de cabeza.
El Búho es un pajarraco
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14025
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Marzo/2023 a las 10:33
Ejemplo de como numerar una consulta:

https://accessaplicaciones.com/ejemplos.html#sq02

Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
macflai98 Ver desplegable
Nuevo
Nuevo


Unido: 20/Marzo/2023
Localización: España
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita macflai98 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Marzo/2023 a las 08:55
Gracias por vuestras respuestas. No soy capaz de hacerlo, pero bueno, seguiré intentando con todo lo que me habéis ido aportando.
En vez de en la tabla, estoy intentando que ese dato me aparezca en el formulario de entrada y gestión de datos...
Seguiré con ello, gracias.
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita 01loko Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 25/Marzo/2023 a las 18:55
Me da la impresión de que el segundo numero es para acceder a la presidencia según antigüedad.

Yo lo  haría mediante una consulta, del tipo de la recomendada por Ibauluz, para no guardar nada.


Recordar de que soy nuevo y estoy aprendiendo.
Arriba
chuselpelos Ver desplegable
Nuevo
Nuevo


Unido: 03/Diciembre/2012
Estado: Sin conexión
Puntos: 2
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita chuselpelos Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Abril/2023 a las 19:59
Hola, te puedo responder a tu segunda pregunta para que te enseñe la edad en el formulario de datos de cada socio, o bien en un campo calculado de una consulta.
Añade un cuadro de texto en el formulario que en la etiqueta ponga edad y en las propiedades, en la segunda propiedad llamada "origen del control", escribes: =Int((Fecha()-[Fecha de nacimiento])/365,25).
"Int" deja solo la parte entera del resultado del cálculo, para que no te salgan decimales.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable