Añadir registro a una tabla mediante un formulario
Tengo un formulario y quiero que se puedan añadir registros nuevos a la atabla según una fecha elegida por mi.
Soy un novato y no se si esto es posible.
1 Respuesta
No entiendo tu pregunta, ¿podrías explicarte un poco mas?
Espero aclararte la situación:
Tengo una tabla con 4 campos:NomApel,curso,grupo,nivel,fecha, cantidad.
Quiero hacer un formulario en el que escribiendo una fecha determinada, se abra el formulario para escoger el NomApel (que me dará nombre y apellidos, curso, grupo y nivel). y yo poder incluir la cantidad que se guardará en un registro por fecha.
Quizás tendría que crear una tabla en blanco con los mismos campos y en ella ir almacenando los resultados. No lo sé. No me importaría enviarte la Bd para que pudieras ver lo que ya tengo hecho.
Muchas gracias por adelantado.
Si te he entendido bien, lo que quieres es abrir el segundo formulario filtrado por la fecha que escribes en el primero, ¿es correcto?
Si es así, te comento un posible procedimiento:
Creas un formulario, sin basarlo en ninguna tabla, con un cuadro de texto (llamado, por ejemplo txtFecha) y un Botón (cmdAceptar). En el boton, le das a click derecho->Generar Evento->y generar código. Ahi le pones lo siguiente:
Dim miFecha as date
If IsNull (Me.txtFecha) Then
'Comprobamos que se ha escrito algun valor
Msgbox "Tienes que introducir una fecha",vbinformation+vbOkOnly,"AVISO"
Me.txtFecha=""
Me.txtFecha.SetFocus
Exit Sub
End If
miFecha=Me.txtFecha
'Comprobamos que se ha escrito una fecha
If Not IsDate(miFecha) then
Msgbox "Tienes que introducir una fecha válida",vbinformation+vbOkOnly,"AVISO"
Me.txtFecha=""
Me.txtFecha.SetFocus
Exit Sub
End If
DoCmd.OpenForm "FormularioAAbrir",,,"[fecha]=#" & miFecha & "#"
DoCmd. Close acform, Me. Name
A ver si esto te sirve.
Gracias por tu rápida respuesta:
He creado una tabla con todos los datos que necesito. TablaA (Nombre,Nivel,curso,grupo)
He creado otra tabla con la misma estructura pero vacía. TablaB (Tabla+fecha+cantidad)
Con tus instrucciones he creado el Formulario 1. que debe hacer lo siguiente:
A) Escribo una fecha y comprueba que existe o no en la TablaB
Si existe debe mostrar todos los datos que hay en ese registro de la TablaB. Esto lo hace por medio del Formulario2 y podré modificar SÓLO el campo cantidad.
Si no existe debe abrir el Formulario2 y mostrar los datos de la TablaA y la fecha que hemos escrito que no se puede modificar. Podré, en este formulario que hace referencia a la TablaA, escoger el nombre y gravar la cantidad. Todos los datos del Formulario2 deben ser gravados en la TablaB al objeto de poder realizar cálculos posteriores.
Perdona pero como ya te comenté, son un novato autodidacta.¿Habrá otra opción mejor? Gracias de nuevo.
No entiendo muy bien para que haces dos tablas si luego en la tablaB repites los registros de la Tabla.
En mi opinión, sería más fácil una única tabla, con los 6 campos y que esiguieras el procedimiento que te di en la respuesta anterior (un formulario para meter la fecha y otro basado en la tabla, para añadir los campos).
Puedes modificar el código, para que te compruebe primero si la fecha existe en la tabla, en cuyo caso te abrirá el formulario filtrado, y en caso de que no exista, te abra el formulario filtrado por los registros que no tienen fecha. Tendrías que cambiar esta linea:
DoCmd.OpenForm "FormularioAAbrir",,,"[fecha]=#" & miFecha & "#"
por estas otras:
If IsNull(Dlookup("fecha","NombreTabla","[fecha]=#" & miFecha & "#")) then
DoCmd.OpenForm "Formulario",,,"IsNull([Fecha])"
Else
DoCmd.OpenForm "Formulario",,,"[fecha]=#" & miFecha & "#"
End If
Si no quieres que se te modifiquen los campos "Nombre, Nivel, curso, grupo", puedes ponerlos bloqueados o inactivos en el formulario (vista diseño->propiedades de cada uno -> Activo: No o Bloqueado: Sí)
Pero bueno, si lo que hiciste tu te funciona correctamente y consigues lo que quieres, pues genial!
Date cuenta que la TablaB sólo tiene la estructura.
Todo esto es perfecto, pero. ¿Qué pasa si quiero que existan 2 o más registros con los mismos datos de nombre, nivel, curso, grupo, pero con cantidad y fecha distintas?.
Ese es el tema. Yo ya estoy estudiando lo que me mandaste. Es por eso lo de las dos tablas para que se vayan grabando en la vacía.
Me has ayudado mucho ya que algunas cosas de las que me dices no tenía ni idea, así que algo he ganado. Si tienes alguna idea mientras tanto voy estudiando.
Un saludo.
Para "optimizar" un poco la BD, en la tabla A deberías añadir un campo ID único (puede ser un autonumérico o por ejemplo el DNI). Luego, en la tabla B, quitas los campos repetidos de la taba A, añades uno nuevo (llamalo por ejemplo Alumno), y en tipo de datos, le pones asistente para búsquedas, seleccionas la Tabla A, marcas los campos ID y NomApell, y siguientes hasta finalizar el asistente.
Con esto se te crearan relaciones entre ambas tablas, y en la tabla B, podrás elegir, mediante un desplegable, los registros de la Tabla A, pero sin duplicar la información en ambas tablas. Has de tener en cuenta, que el valor que se guarda será el Id, aunque el que se muestra es NomApell.
El Formulario 1 que ya tienes creado, te sirve como lo tienes.
Para el Formulario 2, mi recomendación es que crees una consulta sobre las dos tablas A y B, selecciones todos los campos de A, y Fecha y Cantidad de B, y crees el formulario sobre esa consulta, bloqueando los campo que no quieres que se modifiquen.
Este formulario 2 lo abrirás siempre que la fecha que buscas exista.
Si la fecha no existe, necesitas un Formulario 3, basado sobre la tabla B, donde ya puedes elegir el nombre, y rellenar fecha y cantidad.
Bueno, esto es lo que yo haría.
- Compartir respuesta