| ||||
Re: Un formulario llamemosle algo complicado Lo primero que yo haria es organizar mis tablas. No Tienes un campo Identificador en la atbal operarios. Imagina que tienes dos que se llaman exactamente igual (Luis Garcia Garcia) por ejemplo, como vas a distinguir a cada uno. Es prioritario que tengas un campo IdOperario. Puede ser, por ejemplo, el dni, o un numero que tu pongas. En la tabla de partes de trabajo, en lugar del nombre deberias tener el campo IdOperario. Las relaciones entre las tabla y la clave primaria de la segunda, depende de por ejemplo, si un empleado puede tener varios partes, o solo uno, o uno al dia, etc etc. Pero en principio, solo añadiendo ese campo a las dos tablas, va a ser muy sencillo saber que empleado se ha "logeado" en el primer form, comprobar si en el segundo hay algun regsitro de la fecha actual (es decir, en la tabla de partes de tarbajo). Si lo hay, se abre en ese regsitro. Si no lo hay, se abre en un regsitro nuevo para ese empleado, con su idEmpleado y la fecha actual. Y lo ultimo sera aun mas sencillo. un saludo |
| ||||
Re: Un formulario llamemosle algo complicado hay un campo en la tabla operario que es autonumérico y que se llama codigo operario. podemos utilizar ese si es más sencillo. Luego si el jefe quiere, en el formulario partes de trabajo, puedo añadirle un botón para que vea a qué trabajador pertenece el codigo operario y pueda ver todos sus datos. De todas formas, recuerdo que juego con 4 formularios, numeros (donde se ingresa la clave), horas (donde los trabajadores añadirán los datos), unidadnumeros (en el que ponemos la cantidad de unidades y después lo muestra en el formulario horas) y un último formulario que es partes de trabajo, en el que todos los datos que se han rellenado en el formulario horas, se ven ahí. |
| ||||
Re: Un formulario llamemosle algo complicado No es que sea mas sencillo (que lo es), es mas logico, evitaras errores, y no hace falta añadir un boton, solo cambiar la cosulta origen para inclir el campo nombre donde quieras, previa relacion con la tabla operario. Vamos a tardar menos si me la envias a mi correo, de verdad que es mas facil de hacer que de explicar. Un saludo |
| ||||
Re: Un formulario llamemosle algo complicado ya la he probado y me he fijado en que falla en lo mismo que me fallaba a mi. Cuando tu añades un segundo registro y le das a añadir unidad, pones la cantidad, pero al volver al registro marca un 0 redondo. Esto es porque a la hora de añadir unidad crea un nuevo registro o_O |
| ||||
Re: Un formulario llamemosle algo complicado he exportado las las tablas y formularios de la base de datos que me pasaste y me da un error al pasar del formulario numeros al de hora cuando le doy a aceptar. El error me lo marca en esta línea: IdOperario = Nz(DLookup("Codigo Operario", "operario", "clave=" & Me.Txtclave), 0) |
| ||||
Re: Un formulario llamemosle algo complicado como no me funcionaba, lo que hice fue intentar hacerlo con las tablas qeu yo tenía, en el botón aceptar, lo dejé así: Private Sub CmdAceptar_Click() Dim IdOperario As Long IdOperario = Nz(DLookup("codigo operario", "operario", "clave=" & Me.Txtclave), 0) 'Comprobamos si existe la clave introducida If IdOperario <> 0 Then 'comprobamos si hay algun registro para este operario en la tabla Partes de tarbajo para 'La fecha actual, si existe abrimos el registro, si no abrimos uno nuevo If DCount("*", "partes de trabajo", "codigo operario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#") > 0 Then DoCmd.OpenForm "hora", acNormal, , "codigo operario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#" 'cerramos el form numeros DoCmd.Close acForm, Me.Name Else DoCmd.OpenForm "hora", acNormal, , , acFormAdd Forms!hora![codigo operario] = IdOperario 'Forms!hora!fecha = Date'Esta no hace falta ya que tienes en la tabla Partes de trabajo 'El campo fecha con valor predeterminado la fecha actual 'cerramos el form numeros DoCmd.Close acForm, Me.Name End If Else MsgBox "La contraseña introducida no corresponde a ningun empleado", vbCritical, "CONTRASEÑA ERRONEA" End If End Sub y me sale este error: |
| ||||
Re: Un formulario llamemosle algo complicado ahora me sale el siguiente error: Creo que he puesto bien todos los corchetes, te pongo en rojo la línea que me marca que está mal: Private Sub CmdAceptar_Click() Dim IdOperario As Long IdOperario = Nz(DLookup("[codigo operario]", "operario", "clave=" & Me.Txtclave), 0) 'Comprobamos si existe la clave introducida If IdOperario <> 0 Then 'comprobamos si hay algun registro para este operario en la tabla Partes de tarbajo para 'La fecha actual, si existe abrimos el registro, si no abrimos uno nuevo If DCount("*", "[partes de trabajo]", "[codigo operario]=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#") > 0 Then DoCmd.OpenForm "hora", acNormal, , "[codigo operario]=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#" 'cerramos el form numeros DoCmd.Close acForm, Me.Name Else DoCmd.OpenForm "hora", acNormal, , , acFormAdd Forms!hora![codigo operario] = IdOperario 'Forms!hora!fecha = Date'Esta no hace falta ya que tienes en la tabla Partes de trabajo 'El campo fecha con valor predeterminado la fecha actual 'cerramos el form numeros DoCmd.Close acForm, Me.Name End If Else MsgBox "La contraseña introducida no corresponde a ningun empleado", vbCritical, "CONTRASEÑA ERRONEA" End If End Sub |
| ||||
Re: Un formulario llamemosle algo complicado No veo la imagen del error: ponla asi, sin los corchetes en el nombre de la tabla: If DCount("*", "partes de trabajo", "[codigo operario]=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#") > 0 Then te estaras dando cuenta de que la recomendacion de no usar espacios, ni acentos etc etc es bastante util. Un saludo |
| ||||
Re: Un formulario llamemosle algo complicado me sigue marcando como mal XD. si modifico el nombre del campo... no tengo que volver a poner las relaciones no? >.< lo que no puedo cambiar es el nombre de la tabla, porque como que no me gustaría tener que poner todas las relaciones >.< |
| ||||
Re: Un formulario llamemosle algo complicado A ver si encontramos que esta mal: La tabla se llama partes de trabajo??? El campo se lllama codigo operario??? Es de tipo numerico??? el campo Fecha es de tipo fecha??? La variable IdOperario tiene algun valor al llegar aqui??? Un saludo |
| ||||
Re: Un formulario llamemosle algo complicado La tabla se llama partes de trabajo??? si El campo se lllama codigo operario??? Es de tipo numerico??? a las dos te digo que si el campo Fecha es de tipo fecha??? le he puesto de formato fecha y sigue dando el mismo error. La variable IdOperario tiene algun valor al llegar aqui??? a esto no se responderte -.- |
| ||||
Re: Un formulario llamemosle algo complicado vale, he vuelto a mi copia de la base de datos (hago copias por si me cargo todo >.<) y he vuelto a la bd tal y como la tenía el viernes XD. He exportado las tablas y formularios de tu BD y como no las podía sustituir porque las que había en mi BD tenían relaciones, les he añadido un 2 en el nombre (excepto PartesDeTrabajo) y al final si que me funciona. Ahora bien, me sigue fallando a la hora de introducir las unidades. Veamos, yo he probado con el primero empleado y me funciona. Después probé con otro empleado y si que me hacía un nuevo registro, peeero, cuando he ido a añadir una nueva unidad a ese registro, las unidades se me han añadido en un tercer registro en la tabla PartesDeTrabajo. Con lo cual, actualmente tengo 3 registros en PartesDeTrabajo, uno con el operario 14, otro con el 13 y otro con las unidades qeu yo quería añadir en el 13 No se si me he explicado bien. |
| ||||
Re: Un formulario llamemosle algo complicado Tienes un cuadro de texto en el que figura el numero de operacion (o algo asi), no lo tengo delante por que estoy trabajando en otro sitio. Mira si al abrir el form de las unidades hay algo en el crudro de texto donde esta el numero de orden. Un saludo |
| ||||
Re: Un formulario llamemosle algo complicado veamos, yo tengo el campo nparte (autonumérico). En ambos formularios está ese campo. El problema es que el formulario hora (el principal) tiene un nparte y al abrir el formulario unidad a través de un botón, el nparte que tiene unidad cambia. Lo que quiero es que tenga el mismo número que el de hora para así guardarse en la misma línea de la tabla PartesDeTrabajo. no se si te he llegado a explicar bien |