Hola
Tienes introducido el campo dni en la tabla alumnos antes de introducirla en libretas?
De todas formas (no se si realmente influye) no mezclaría formas de introducir datos, es decir, realizaría todas las inserciones de datos (por lo menos en este apartado) utilizando la clausula insert. Algo como:
Código:
bd.execute "INSERT INTO alumnos(dni, fecha matr, apellido, nombre) VALUES('" & dni.text & "','" & fecha matri.text & ...
bd.execute "INSERT INTO libretas(dni) VALUES('" & dni.text & "')"
.
P.D. Ahora que lo pienso, igual tienes que refrescar el recordset antes de realizar el segundo insert, de todas formas prueba a realizar todos los inserts sin el recordset.
--Saludos--