Access 2003 Problema en formularios

Movido por el excelente conocimiento del dominio e ingenio demostrado en mi pregunta ya finalizada "Access 2003 Problema en el diseño de informes", me animo a realizar estas dos consultas que ultimarían el diseño de mi base de datos de gestión de CDs., relativas a Formularios.
1ª pregunta.- ¿Es posible aplicar el código que me facilitó para el diseño del informe (y que reproduzco después) en mi citada consulta anterior para un Formulario de las mismas características, con la adaptación necesaria para este nuevo objeto, teniendo en cuenta que los formularios carecen de encabezado y pié de grupo? Si es posible ¿Cómo habría que modificar el código?
Está fue la respuesta válida y genial que me proporcionó para el informe:
En el informe que tienes, entra en agrupar por Disco y Titulo en detalle el intérprete. En el diseño, en Ver y ordenar y agrupar, le añades Pie de Grupo -- Sí.
Pasas todos campos al pie de grupo del Titulo, excepto el interprete que dejas en detalle, y le añades un campo de texto, lo llamas TTInter, donde vendrán la lista de interpretes, entras otra vez en ver, ordenar... Y pones encabezado de grupo a NO.
Solo tienes detalle y Pie, o sea que el informe saldrá algo así:
Orq. Fil. Berlín, Karajan(director) Cerkov(violín)
13 Sinónía Pastoral Beethoven
Arias(Piano)
Cerkov(violín)
14 Sonata para violín y piano Frank
---------------------
Ahora entras en el código y pegas esto:
Dim xx As String, i as integer
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Detalle.Height = 0
i=0
End Sub
Private Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)
i=i+1
if i < 4 then xx = xx + interprete + ","
' cambia el 4 por el que quieras.
End Sub
Private Sub PieDelGrupo1_Print(Cancel As Integer, PrintCount As Integer)
TTinter = xx
xx = ""
i=0
End Sub
Para comprobar que todo esta en su sitio, vuelves al informe y con el botón derecho clicas en la barra de detalle y pinchas eventos. Te deben de salir 2, sino ves pinchando (solo hay 3). Lo mismo en la barra del pie.
Si has aplicado correctamente te saldrá esto:
Disco Titulo Compositor Intérpretes
15 Danza nº 1 para violín y piano Strauss Arias(piano), Cerkov(Violín),
15 Danza nº 2 Strauss Arias(piano), Cerkov(violín),
15 Danza nº 3 Strauss Arias(piano), Cerkov(violín),
2ª pregunta.- Tengo diseñado un Formulario para el Alta/Modificación de datos a las tablas, que contiene a su vez un subformulario que ingresa datos a las tablas muchos a muchos de Instrumento_solista e Intérprete. En el formulario tengo diseñado un botón de Control para eliminar el registro visualizado, pero si lo pulso dicho botón cuando hay datos en el subformulario Solistas (Relación muchos a muchos con las tablas Instrumento-Solista e Intérprete) o intento cambiar estos datos porque me he equivocado al incorporarlos no me deja, me sale el texto "El registro no se puede cambiar o eliminar porque la tabla Solistas incluye registros relacionados". Esto me obliga a salir del formulario e ir derectamente a la tabla fonoteca para eliminar allí los registros. ¿Se podría depurar este inconveniente?
Con la valiosa aportación de su experiencia quedaría perfectamente perfilada la base de datos.
Muchas gracias por la atención de leerme y, ni que decir tiene, mis disculpas por mi inexperiencia.

1 Respuesta

Respuesta
1
La 1ª la deberás solucionar de otra forma, lo del informe no puede aplicarse al formulario, por cierto teniendo el informe tampoco le veo mayor problema.
Lo 2º lo tienes que cambiar en relaciones de las tablas, pero no entiendo muy bien lo que te pasa.
Tienes toda la razón, puedo ver el informe en vista previa sin necesidad de imprimirlo. Desecho pues el formulario que diseñé para eso. Realmente no es necesario.
En cuanto a la otra cuestión es que tengo un formulario para dar de alta los nuevos registros de la base de discos, o hacer mantenimiento cuando detecto algún error en su incorporación (por ejemplo puse a un violinista que no correspondía, por no tener violín esa obra). Y este formulario contiene otro subformulario para incorporar los datos relativos a los instrumentos solistas y sus intérpretes (Tablas que están con relación muchos a muchos, ya que puede haber un piano, un violín, un chelo, interpretando la obra, todos de la misma tabla), pues bien, cuando no hay información en el subformulario, porque la obra no tiene solistas por estar ejecutada por una orquesta, no hay problema. Pero si me equivoco e incorporo a un solista en el subformulario, ya no lo puedo quitar. Sí que puedo cambiarlo por otro del cuadro desplegable, pero no quitarlo, desde el formulario no puedo dejar ya en blanco ese dato. Si he ingresado por error a un solista, tengo que dejarlo, salir del formulario, ir a la tabla directamente y quitarlo desde allí.
Esto tampoco es mayor problema, pero si se puede dejar pulido el detalle me quedaría más estética la base de datos, sería más eficiente si otra persona de la familia quiere utilizarla y no tendría que recurrir a mí cuando le pasa esto.
Muchas gracias por atenderme.
Si desde el subformulario no lo puedes hacer y desde la tabla sí, es un problema del subformulario. Sigo sin entender lo que pasa, pues la integridad de las tablas no se rompe, es decir, si no te deja borrar del subformulario tampoco debería dejarte borrar desde la tabla.
Yo tampoco se lo que pasa, pero anoche estaba incorporando datos por medio del formulario y sucedió que elegí un intérprete del desplegable, me dí cuenta que no había solista y lo borré, pero al pasar al registro siguiente me salió este error ""Ha intentado asignar el valor Null a una variable que no es un tipo de datos Variant"". Hube de aceptar e intentar cerrar el formulario hasta 12 veces, en todas las 11 veces anteriores me repetía el mensaje. A la que hizo 12 me salió este otro " No se puede guardar el objeto ahora. Micro.Office ha encontrado un error mientras intentada guardar un registro, si lo cierra se perderán los datos ¿Desea cerrar el objeto de la base de datos de todas formas?". Contesté que sí y se cerró el formulario, pero no perdí nada.
Esto me hace pensar que el cuadro combinado del desplegable me permite elegir al solista de la tabla Solistas por el apellido, pero en realidad lo que se guarda es la Id. Solista un campo autonumérico con el que se mantiene la relación entre las tablas, ya que hay un Kraus (Alfredo) tenor y un Kraus (Heberhard) clavecinista, por ejemplo. ¿No será que un campo puede estar sin información pero cuando se coloca una ya no puede quedar vacío porque la tabla de donde el desplegable toma la información no tiene un valor autonumérico para un campo vacío. Irán por ahí los tiros.?
El cuadro combinado te guarda el primer campo, mira cual es. El problema lo tienes en el subformulario, lo tendrás mal configurado, revísalo bien.
El campo que guarda es Id_Intérprete, (Autonumérico). Respecto al formulario, lo he mirado y no veo que esté mal (otra cosa es que no sea capaz de ver que lo está).
De todos modos, como digo no es de mayor importancia y si funciona así pues así lo dejaré.
Lo que si he comprobado al ir completando de información la base de datos es que el código que genialmente me facilitaste, y que tengo detallado en esta consulta, cuando hay orquesta y más de un solista me repite la orquesta y el director para cada solista:
Disco Compositor Titulo Intérpretes
29 BACH Concierto para Orquesta y dos violines Orq. Sinfónica, Golt(director), Conrad(violín), Orq.Sinfónica, Golt(director), Gert(violín)
En lugar de
Disco Compositor Titulo Intérpretes
29 BACH Concierto para Orquesta y dos violines Orq.Sinfónica, Golt(director), Conrad(violín), Gert(violín)
¿Habría alguna solución para evitar que se repitiera la orquesta y el director para cada uno de los solistas como decía? Gracias. Un saludo.
Emulando a Béquer "No digais que agotado su tesoro de asuntos falta enmudeció la lira, podrá no haber ........, pero siempre habrá ........", pues bién si la musa de la inspiración no acude, no importa, ya he resuelto el problema de otra forma. He creado en el informe una columna con esta expresión:  =([ORQUESTA_ORQUESTA] & (", "+[NOM_DIRECTOR])+" "+[APE_DIRECTOR]+" (director) "). Con lo que me devuelve los nombres de la orquesta y director en dicha columna.
Y he modificado la expresión del campo independiente INTÉRPRETES (sobre la que actúa el código) dejándola así: =([NomSolista] & " " & [ApeSolista] & (" ("+Minús([InstSolista])+")")).
Y de este modo, dejando otra columna en el informe con el nombre de INTÉRPRETES, me coloca los solistas e instrumento que tocan, de este modo sin repetir el nombre de la orquesta y el director como hacía para cada solista.
De todos modos gracias por la paciencia de atenderme. No le quepa duda que aprecio en todo su valor la tensión, el tiempo y la dedicación que de forma tan altruista dedica a estos menesteres.
Saludos cordialísimos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas