Relacionar por grupos para informe e impresión

He realizado una base de datos para relacionar, guardar e imprimir en la que tengo los campos NOMBRE, APELLIDOS, DNI Y NUMERO DE RELACIÓN.
El NUMERO DE RELACIÓN es el campo que después me servirá para agrupar varios registros (que tendrán el mismo número de relación) e imprimirlos
El caso es que cada vez que tengo que agregar un nuevo registro a la base tengo que rellenar el campo NUMERO DE RELACIÓN aunque sea el mismo para los siguientes 20 registros y pienso que posiblemente haya una manera de evitar tal repetición.
También me vendría muy bien saber como hacer para que una vez relleno un campo se pase sólo al siguiente(listo para introducir datos) sin usar el tabulador.

1 respuesta

Respuesta
1
Quizá lo más sencillo sería:
a) Crea un formulario para introducir esos datos, donde el campo Numero de relación sea el ultimo en el orden de tabulación.
b) En el evento "Antes de insertar" del formulario, copia el siguiente código (modificándolo según sea tu nombre de tabla y de campo).
    Dim intMaximo As Integer  
    intMaximo = DMax("NumRelacion", "Tabla1")
    If intMaximo > 0 Then Me.NumRelacion = intMaximo
Lo que hace es tan sencillo como buscar el valor máximo, y copiarlo en el campo al que tu te refieres. De ese modo, cuando empiezas a crear la tabla, no te pondrá nada y en cuanto pongas un valor lo replicará siempre. Cuando quieras cambiar a otro valor, te basta con camiar el numero a uno mayor, y en los siguientes registros lo irá copiando.
Espero haberme explicado y que esto sirva para lo que pretendes. En cuanto a lo de que cuando rellenes un campo pase al siguiente, de alguna manera le tienes que decir que has acabado de editar, bien con un ENTER o con un TAB. Lo que si puedes hacer en los cuadros combinados, por ejemplo, es que cuando elijas un valor salte al siguiente, pero creo que ese no es tu caso.
Hola, se me olvidó comentarte que es posible que haya más de una persona introduciendo datos, compartiendo la base, y cada uno con un número distinto de relación que será el que utilicen para el informe y la impresión, ¿entonces si cada uno pone un número inicial se repetirá ese número(que sería lo ideal) o buscará el número más alto que tenga otro compañero para repetirlo?, lo que puede provocar un pequeño lío.
Se le puede poner un tope de registros, ¿por ejemplo 30 por relación?
Gracias.
Entonces, para que distinga los registros que ha introducido una persona u otra, tienes que insertar en la tabla un nuevo campo que registre ese dato (p. Ej. Usuario). En el formulario de introducción de datos, en la parte de Encabezado del Formulario, puedes poner un comboBox en el que se escoja ese dato entre una lista de usuarios (imaginate que el combo se llama ComboUsuario), y su Origen de datos en blanco (independiente)
Cuando entras en esa pantalla eliges el usuario. Y en el código que dijimos el otro día:
    Dim intMaximo, intCuenta As Integer  
    Me.Usuario = Me!ComboUsuario
    intMaximo = DMax("NumRelacion", "Tabla1","[Usuario]='" & Me!ComboUsuario&"'")
    intCuenta = DCount("NumRelacion", "Tabla1","[Usuario]='" & Me!ComboUsuario&"'")
    If intMaximo > 0 Then
          If intCuenta =30 then
                  MsgBox "Alcanzados los 30 registros"
                  exit sub
         Else 
                  Me.NumRelacion = intMaximo
         end if
   end if
Así te escogerá el máximo de entre los que tu has introducido y no pasará nada porque otro escoja los mismos números porque a la hora de imprimir, o hacer una consulta, le has de introducir para el filtrado los dos campos, numero de relación y usuario. Te he incluido también la función para evitar que pase de 30.
Hola, he seguido todos los pasos pero cuando intento introducir algún dato en el formulario (da igual en el campo que sea, excepto en el ComboUsuario, me sale un mensaje de error "ERROR DE COMPILACIÓN: ERROR DE SINTAXIS" y se va a la ventana de código, con la cuarta y quinta linea en rojo.
En el código de la primera respuesta también me da error y me dice "ERROR 94 EN TIEMPO DE EJECUCIÓN, USO NO VÁLIDO DE NULL"
Saludos.
Me la mandas a mi correo, por favor.
[email protected]
Avísame cuando lo hayas hecho.
Un saludo
Hola, acabo de enviarte la base de datos RELACIONES
Saludos.
Lo siento pero Hotmail me bloquea las bases de datos de Access 2003 para abajo. Tienes que enviármelo comprimido en un rar, por ejemplo, o bien, cambiando la extensión mdb por otra md por ejemplo.
Hola, ya está enviado nuevamente comprimido con winrar.
Saludos.
Era una tontería. Solo separar con un espacio la parte final de las fórmulas:
intMaximo = DMax("NumRelacion", "Tabla1","[Usuario]='" & Me!ComboUsuario & "'")
intCuenta = DCount("NumRelacion", "Tabla1","[Usuario]='" & Me!ComboUsuario & "'").
Te lo copio entero otra vez, con un pequeño añadido:
Dim intMaximo, intCuenta As Integer  
    Me.Usuario = Me!ComboUsuario
    intMaximo = DMax("NumRelacion", "Tabla1","[Usuario]='" & Me!ComboUsuario & "'")
    intCuenta = DCount("NumRelacion", "Tabla1","[Usuario]='" & Me!ComboUsuario & "'")
    If intMaximo > 0 Then
          If intCuenta =30 then
                  MsgBox "Alcanzados los 30 registros para Nº Relacion: " & intMaximo
                  exit sub
         Else 
                  Me.NumRelacion = intMaximo
         end if
   end if
Pruébalo, que en la mía ya funciona.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas