Tengo una tabla llama Operarios (Nombre, Apellidos) i otra llamada ParteObra(que dentro hay un registro llamado operarios) i querría que en un formulario me salieran las dos tablas y con un botón hacer pasar el nombre de un operario a la tabla ParteObra para saber quien está trabajando en esa obra y una vez finalizada la obra volver a pasar el operario a la tabla Operarios.
Respuesta
1
1
Anónimo
En la tabla Operarios yo pondría un campo que fuese el IdOperario, es decir algo que, inequívocamente, identifique al operario (un código, el DNI...) ya que dos operarios pueden tener el mismo nombre pero nunca la misma identificación, después tendría los campos Nombre y Apellidos. Estos 3 campos también los tendría en la tabla ParteObra. En un formulario crearía 2 cuadros de lista, que llamaríamos, por ejemplo, CuadroOperarios y CuadroObra. En el CuadroOperarios, en origen de la fila pondríamos: Select IdOperario, Nombre, Apellidos From Operarios order by IdOperario En número de columnas: 3 En columna dependiente: 1 (Para que el valor que tome el cuadro de lista sea el IdOperario En la acción Al hacer doble clic (o al hacer clic, como quieras) pondría Procedimiento de evento y picando en el cuadrado de los ... de la derecha escribo el siguiente código: Me. Refresh DoCmd.RunSQL "Insert Into ParteObra (IdOperario, Nombre, Apellidos) Select (IdOperario, Nombre, Apellidos) From Operarios Where IdOperario=Form!CuadroOperarios.Value" DoCmd.RunSQL "Delete IdOperario From Operarios Where IdOperario=Form!CuadroOperarios.Value" Me. Refresh En el CuadroObra, en origen de la fila pondríamos: Select IdOperario, Nombre, Apellidos From Operarios order by IdOperario En número de columnas: 3 En columna dependiente: 1 (Para que el valor que tome el cuadro de lista sea el IdOperario En la acción Al hacer doble clic (o al hacer clic, como quieras) pondría Procedimiento de evento y picando en el cuadrado de los ... de la derecha escribo el siguiente código: Me. Refresh DoCmd.RunSQL "Insert Into Operarios (IdOperario, Nombre, Apellidos) Select (IdOperario, Nombre, Apellidos) From ParteObra Where IdOperario=Form!CuadroObra.Value" DoCmd.RunSQL "Delete IdOperario From ParteObra Where IdOperario=Form!CuadroObra.Value" Me. Refresh De esta forma cuando hagamos doble clic en un operario del CuadroOperarios nos ejecutará las 2 sql: la 1ª pasa el operario a la tabla ParteObra y la 2ª borra el operario de la tabla Operarios, con Me. Refresh actualizamos el formulario para que el operario se quite del cuadroOperarios y pase al cuadroObra y viceversa cuando hagamos doble clic en un operario del CuadroObra. En el origen de la fila yo lo he ordenado por el campo IdOperario, lógicamente lo podrías ordenar por el campo que quieras.
Muchas gracias por este currazo, pero mira me sale un error al ejecutar: Error de sintaxis(coma) en la expresión de consulta'(IdOperario, Nombre, Apellidos)'
Ah i otra cosa, en el CuadroObra me salen todos los operarios ya de inicio, ¿puede ser que me salga el cuadro vacío? Gracias !
Perdona, en los SELECT quita los paréntesis: DoCmd.RunSQL "Insert Into ParteObra (IdOperario, Nombre, Apellidos) Select IdOperario, Nombre, Apellidos From Operarios Where IdOperario=Form!CuadroOperarios.Value" En cuanto a que te salen todos los operarios es porque el origen de la fina la hemos referido a la tabla Operarios, hay que referirla a la tabla ParteObra, lo siento parece que hoy estoy "sembrada" En vez de: En el CuadroObra, en origen de la fila pondríamos: Select IdOperario, Nombre, Apellidos From Operarios order by IdOperario Sería: En el CuadroObra, en origen de la fila pondríamos: Select IdOperario, Nombre, Apellidos From CuadroObra order by IdOperario
¿Vale funciona a la perfección pero para que no salgan los mensajitos? Esos que tengo que entrar el número del Operario, ¿osea la ID como lo hago? Y si quiero entrar otro registro en el formulario este para que no me salgan los Operarios ya entrados en la obra anterior, ¿qué no se queden guardados? ¿Qué cuándo voy a entrar el nuevo registro me quede como al principio sin cambiar el registro entrado antes? No se si me entiendes ! Muchas Gracias por todo !
Si lo de los mensajes te refieres a los mensajes de confirmación, estos los puedes quitar en Herramientas ---> Opciones ---> Pestaña Modificar/Buscar ---> Confirmar: aquí puedes chequear o deschequear lo que quieras. Respecto a la otra pregunta, sinceramente no lo entiendo... De todos modos sería eso, otra pregunta.
Oye si te paso la BD por correo para que te mires lo que quiero decir, ¿te parece bien?
Esto que te pedí esta en un formulario llamado menuPO--->en un botón llamado NOU PARTE ! Gracias
El catalán puede ser un problema, ya que no tengo ni idea... pero el verdadero problema es que no tengo access 2007, pásalo al 2003 y me lo envías.
No me deja el correo enviar el archivo en 2003 ! Lo de los mensajitos quería decir que cuando hago doble click en un Operario me sale una ventanita que me dice: Introduce Valor de parámetro, haber si se puede quitar eso que coja el valor de IdOperario solo ! Gracias, otra vez !