Crear una base de datos para gestionar cuotas de alumnos

Mario Mey in LibreOffice-ES

Abajo dice “HSQLDB Embedded”.

t.me/libreoffice_es/91959

Jun 14 at 18:00

jucasaca in LibreOffice-ES

Eso es. En todo caso, como está comenzando, lo mejor es que compartas el archivo en el que estás trabajando, así no tenemos que ir creando una base de datos a cada pregunta. Yo no puedo saber cuál es el error si no veo los campos que tienes

t.me/libreoffice_es/91960

edited Jun 14 at 18:03

jucasaca in LibreOffice-ES


Mario Mey
¿Por qué no podría abrir el cuadro de Consultas con este comando? SELECT "apellido" || ', ' || "nombres" || ' - ' || "curso" || "division", "id_alumne" FROM "ALUMNES" ORDER BY ("apellido" || ', ' || "nombres" || ' - ' || "curso" || "division") ASC Este lo…

Creo que el error está en el ORDER BY, no se puede ordenar (directamente) por un campo que no existe, la concatenación no existe antes de generar la consulta y por tanto no puede ordenar la consulta por algo que no existe.
Lo que pretendes se soluciona con ORDER BY “apellido”, “nombres” , “curso”, “division” ASC
Aunque coin esa ordenación me parece que estás haciendo trabajar al ordenador sin necesidad: si solo hay un alumno con determinado nombre y apellido ¿para que necesitamos ordenar por curso?¿habrá tantos alumnos con el nombre y apellido iguales?
Por otro lado, me resulta curioso (salvo que no seas de un país hispano) que pongas nombres en plural y apellido en singular, pero esto es una apreciación mía que no tiene nada que ver con la base de datos

t.me/libreoffice_es/91961

Jun 14 at 18:19

Mario Mey in LibreOffice-ES

Ok, voy a preparar un archivo con pocos alumnos ficticios y lo voy a compartir.

t.me/libreoffice_es/91962

Jun 14 at 18:39

Mario Mey in LibreOffice-ES

Pero me gustaría saber: desde un formulario, ¿se pueden modificar más de una tabla? Por ejemplo, desde el formulario para ingresar SOCIOS, cuando elijo el hijo, lo que se modificaría es, en la tabla ALUMNES, en el registro del alumno, el id_socio, para vincularlo con el padre… ¿se puede hacer?

t.me/libreoffice_es/91963

Jun 14 at 18:40

Alumnes para compartir.odb (49,8 KB)

jucasaca in LibreOffice-ES


Mario Mey
En la prueba que hice con el macro, tenía la posibilidad de escribir el nombre/apellido del alumno y aparecían los correspondientes en la lista. Muestro video:

Frena un poco, aún estamos diseñando la tabla, no queramos hacer virguerías. Esto es como si al profesor de la autoescuela, antes de sacarte el carné, le preguntaras como puedes hacer un trombo para cambiar de sentido sin salirte de la carretera, claro

t.me/libreoffice_es/91965

Jun 14 at 18:46

jucasaca in LibreOffice-ES

Según esta relación, cada socio paga una cuota, independientemente del numero de alumnos que dependan de él (porque en la tabla cuotas no se identifica al alumno ¿es eso correcto?

t.me/libreoffice_es/91966

Jun 14 at 18:55

jucasaca in LibreOffice-ES

Ya tienes relacionado cada socio con un número cualquiera de alumnos. No necesitas los campos id_alumnoX ¿Si alguien tienen 12 hijos añadirías otros 7 id_alumno?

t.me/libreoffice_es/91967

Jun 14 at 19:01

Mario Mey in LibreOffice-ES


jucasaca
Ya tienes relacionado cada socio con un número cualquiera de alumnos. No necesitas los campos id_alumnoX ¿Si alguien tienen 12 hijos añadirías otros 7 id_alumno?

No, esos campos iban a ser borrados. No sé por qué están ahí todavía.

t.me/libreoffice_es/91969

Jun 14 at 19:41

jucasaca in LibreOffice-ES

No se por qué, pero en la tabla no veo los datos, pero si hago un formulario sí que los veo…

t.me/libreoffice_es/91971

Jun 14 at 21:31

jucasaca in LibreOffice-ES

Yo siempre trabajo con bases de datos Firebird, porque, no sé por qué las HSQL me dan problemas que nunca tengo con las de Firebird. Para poder crear bases de datos Firebird hay que activar Herramientas > Opciones > LibreOffice >Avanzadas > Activar funcionalidades experimentales

t.me/libreoffice_es/91972

Jun 14 at 21:34

jucasaca in LibreOffice-ES

Bueno, en cuanto al diseño de las tablas, el campo dni lo has puesto como entero. En general, cuando un campo aparentemente numérico, como puede ser en este caso el dni o un código postal, si ese campo no se utiliza en ningún cálculo matemático, es mejor que el campo sea de tipo texto. En un campo numérico es muy difícil buscar “Los números que empiecen por 33” o en una ma ro ir buscando a medida que es ribes el número

t.me/libreoffice_es/91975

Jun 14 at 22:18

Lobaluna in LibreOffice-ES


almu_hs
Pero el SQL de LibreOffice es bastante limitado…

El SQL predeterminado de LibreOffice es HSQL v. 1.8

t.me/libreoffice_es/91974

edited Jun 14 at 21:48

jucasaca in LibreOffice-ES


Lobaluna
El SQL predeterminado de LibreOffice es HSQL v. 1.8

El SQL “predeterminado” en LibreOffice es el SQL de la base de datos subyacente. La base de datos predeterminada es HSQLDB si no tienes activadas las Funcionalidades experimentales. Si tienes activadas las funcionalidades experimentales, la base de datos (incrustada) predeterminada es Firebird e incluso muestra un asistente para exportar los datos de HSQL a Firebird…

t.me/libreoffice_es/91976

edited Jun 14 at 22:28

jucasaca in LibreOffice-ES

Y por cierto, ninguno de los dos SQLs es totalmente estándar, pero el SQL de Firebird está mucho más cerca de los estándares SQL que el de HSQLDB.

Yo he dicho “Yo siempre trabajo con bases de datos Firebird, porque, no sé por qué las HSQL me dan problemas que nunca tengo con las de Firebird” y no he dicho que nadie tenga que trabajar con Firebird, aunque si me preguntan, lo recomiendo encarecidamente, porque es más rápida, creo que más estable, más segura y más fácil de “escalar” (portarla a un servidor si es necesario) y además puede funcionar sin instalar Java, cosa que a los de Mac les da bastantes problemas.

Me estoy refiriendo a elegir entre bases de datos incorporadas, si hablamos de servidores habría mucho que discutir

t.me/libreoffice_es/91977

edited Jun 14 at 22:31

jucasaca in LibreOffice-ES


Mario Mey
Sí, por el momento lo terminé definiendo así… aunque volví a consultar a la gente de la cooperadora qué nos conviene.

Centrándonos de momento en las tablas de socios y alumnos. ¿Cuál sería el proceso?
– Yo entiendo que lo primero es el alumno, que se da de alta en el centro y que puede pagar o no la cuota. Si no paga cuota no tiene que existir previamente el socio.
– Otra postura es que llegue un socio, se de alta y luego se de de alta a los hijos. En cuanto al diseño de las tablas es similar pero la forma de hacer los formularios es diferente

En el primer caso sería un formulario basado en alumno con una lista desplegable para seleccionar el socio, en el segundo sería un formulario de socios con subformulario alumnos.
Cuando decidamos eso podemos decidir como se ven las cuotas

t.me/libreoffice_es/91982

edited Jun 15 at 00:16

Mario Mey in LibreOffice-ES


jucasaca
Centrándonos de momento en las tablas de socios y alumnos. ¿Cuál sería el proceso? – Yo entiendo que lo primero es el alumno, que se da de alta en el centro y que puede pagar o no la cuota. Si no paga cuota no tiene que existir previamente el socio. --…

Estuve hablando con la gente de la cooperadora y vamos a hacer algo parecido a lo que dijiste:

  • Un formulario de alumnos. Tendrá un desplegable para elegir el socio (padres). Después de muchas vueltas, logré hacerlo funcionar.
  • Un formulario de socios. Solo serán ingresados y después, desde el formulario de alumnos, se selecciona el socio relacionado.
  • Un formulario de cuotas, pero van a ser relacionadas con cada alumno, no al socio.

Pero hay cosas que no estoy sabiendo hacer y me parecen importantes:

  • Dentro del mismo formulario, cuando un alumno paga o lo quiera vincular con un socio, me gustaría tener un buscador dentro del mismo formulario para encontrar al alumno. No puedo ir registro por registro hasta encontrarlo en 700 alumnos.
  • Probé usar el buscador de Base, pero como apellidos y nombres están por separado, si escribo “José González”, por más que exista ese alumno, no me devuelve ningún resultado.
  • Me gustaría algo como el que hice con el macro (creo que lo mostré más arriba). Y que desde los resultados, pueda seleccionar al alumno y ahí asignarle el socio o registrar la cuota pagada.

PD: migré la tabla a Firebird.

t.me/libreoffice_es/91986

Jun 15 at 06:33

Mario Mey in LibreOffice-ES

Che… estoy recibiendo muchos mensajes de error… y no sé bien si estoy haciendo algo muy mal o algo en el software anda muy mal.

Por ejemplo, creo una tabla, la guardo. No agrego nada, la edito y le doy a un campo que sea de “Valor automático”. Me dice que no la puede modificar pero la puede borrar y hacer una nueva. Le doy que sí y me salta este error.

t.me/libreoffice_es/91993

Jun 15 at 21:26
image

image

image

Mario Mey in LibreOffice-ES

Otro. Creo una tabla CUOTAS (imagen 1):

id_cuota: clave principal, Valor automático INTEGER
id_alumne: INTEGER
fecha: DATE
importe: INTEGER

Modifico la tabla y agrego dos registros (imagen 2)

Creo una consulta simple y funciona (imagen 3). Le agrego un criterio de valor para introducir (imagen 4). Cuando le ingreso 380 (imagen 6), que es un valor que existe, me devuelve error (imagen 6).

t.me/libreoffice_es/91994

Jun 15 at 21:35