Facilitar entrada de datos

Buenas tardes, me estoy iniciando en access y no se si me exijo demasiado en la base que quiero crear pero creo que es lo básico en este tipo de herramientas, redudir el proceso de entrada de datos. Lo que pretendo es crear una base con entrada de muestras con ID única [IdMuestra] y cada muestra con varios ensayos, éstos están en una tabla aparte con su [IdEnsayo] y el nombre del ensayo [Ensayo/Servicio]. Al dar entrada a una muestra ésta debe tener varios ensayos y me gustaría no tener que teclear todo el nombre del ensayo/servicio cada vez, sino que al introducir el código de ensayo [IdEnsayo] se rellenara el campo [Ensayo/servicio] y por su puesto que quedara todo registrado. Para que cada muestra tenga varios ensayos he creado una tabla llamada DetalleMuestra, y en ésta es donde quiero que se quede registrada la entrada.
He intentado con manuales y foros pero los manuales son simples y no llegan a este punto y en los foros las respuestas son muy concretas al caso de cada uno.
A ver si esto sirve de algo y gracias por tu tiempo

1 Respuesta

Respuesta
1
Es posible lo que pides en Access. Algunas opciones de hacerlo son las siguientes:
1. En el campo 'Ensayo/Servicio' podrías definir como Origen 'Ensayos' y como valor predeterminado una fórmula como la siguiente:
=DBúsq("[NombreEnsayo]";"Ensayos";"[IdEnsayo]=Forms![NombreFormulario]![IdEnsayo]")
2. Podrías crear una consulta actualizable con tus tablas y relacionar los campos IdEnsayo de las mismas arrastrando el nombre de ensayo al introducir el campo IdEnsayo en tu tabla, pero atendiendo que sea Dynaset el tipo de recordset para que no tengas inconvenientes en el momento de la carga.
Ambos casos funcionarán correctamente, pero primero prueba con la fórmula y luego me comentas si te ha funcionado.
Tengo una tabla Muestras con una hoja o tabla secundaria DetalleMuestra con el campo IdEnsayo, en el que quiero escribir el código de ensayo, y el campo Ensayo, donde quiero que aparezca automáticamente en nombre del ensayo. Además tengo una tabla aparte llamada Ensayos con [IdEnsayo] código de entrada y [Ensayo] con el nombre del ensayo.
Tengo un formulario Muestras con un subformulario DetalleMuestra
En el subformulario DetalleMuestras he escrito en origen del control Ensayo
y en valor predeterminado:
=DBúsq("[Ensayo]";"Ensayos";"[IdEnsayo]=Forms![Subformulario DetalleMuestra]![IdEnsayo]")
Y no me funciona...
Prueba con esto:
=DBúsq("[Ensayo]";"Ensayos";"[IdEnsayo]=Forms!Muestra.[Subformulario DetalleMuestra]![IdEnsayo]")
Si no te funciona nuevamente, tienes que crear un evento Después de Actualizar el campo IdEnsayo, con el siguiente código:
'---------------------------
On Error Resume Next
Dim Ensayo As String
Ensayo = DLookup("[Ensayo]", "Ensayos", "[IdEnsayo]=Forms!Muestra.[Subformulario DetalleMuestra]![IdEnsayo]")
If Ensayo = "" Then
   MsgBox "No hay descripcion de ensayos!", vbCritical, "Error"
   Me.Undo
Else
   Me.Ensayo = Ensayo
End If
'---------------------------
Con el código vas a buscar el nombre de ensayo en función al IdEnsayo, y si no hay te da un mensaje de error.
Sería mejor si tratas de generar por medio de consulta, pero si no puedes, utiliza código.
Lo siento, no hace nada, se queda en blanco, y el campo IdEnsayo se ha vuelto loco, si escribo un Código (IdEnsayo) lo copia en las filas sucesivas, creo que tendré que empezar desde el principio, quizá machaqué demasiado la base y lo peor es que no lo entiendo. Cómo será a través de consultas, me gustaría encontrar la forma de hacerlo entendiéndolo, ya que si este sale bien tendré que hacerlo con otros muchos campos.
Gracias
Utiliza el código entonces, ese sí saldrá. Haz click en el evento 'Después de Actualizar' del campo IdEnsayo, y copia el código que te envié.
Yo lo he probado, y funciona correctamente.
Dice ERROR, no hay descripción de ensayo!,
A ver que hago mal..., ¿el campo IdEnsayo a que te refieres que incluya el código es en el subformulario DealleMuestra?,
y otra cosa, cuando voy a pegar tu código ya me aparece:
Private Sub IdEnsayo_AfterUpdate()
End Sub
¿Ésto lo quito? O inserto tu código entre las dos líneas...
Cuando generas un evento en Access si o si va aparecer
Private Sub 'nombre del campo'_'evento'
...... pegas aqui el código.......
End sub
Y el campo IdEnsayo se refiere al de la tabla, luego del signo '=' está referenciado al campo IdEnsayo del subformulario DetalleMuestra.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas