Tengo en una tabla secundaria los campos de claveprof, claveunidad, lun, mar, mier, jue, vier, y clavegrupo el caso es que cuando en el formulario le asigno a cada profesor sus unidades y sus horas de lunes a viernes y por ultimo su grupo todo esta bien el problema viene cuando vuelvo a asignar la misma unidad, la misma hora y el grupo. Se que esta permitido porque es tabla secundaria pero quisiera que mandara un mensaje en el que diga al usuario que este profesor ya tiene la misma unidad, mismo grupo y misma hora
1 respuesta
Respuesta de Antonio Pugliese
1
1
Antonio Pugliese, Aunque trabajo en el área de Operaciones de un empresa de...
Esto que quieres se debe hacer en el formulario donde rellenas los datos. El código es el siguiente y puedes colocarlo en cada uno de los controles donde colocas la información de manera que si por una razón particular se completan no siempre en el mismo orden, en cualquier caso te lance la advertencia. Dim BBDD as Database Dim Tabla as Recordset Dim VbCLAVE as String (Si es un número pues será Integer o Doble) Dim VbGRUPO as String (Lo mismo que antes) Dim VbHORA as Date VbCLAVE=claveunidad VbGRUPO=clavegrupo VbHORA=horas Set BBDD=CurrentDb Set Tabla=BBDD.OpenRecordset ("SELECT * FROM Tablasecundaria WHERE claveunidad= '" & VbCLAVE & '" AND clavegrupo = '" & VbGRUPO & '" AND horas = #"VbHORA"#") If Not Tabla.EOF Then MsgBox "ESTE PROFESOR YA TIENE ESTA UNIDAD",,"UNIDAD REPETIDA" Exit Sub End If Tabla. Close BBDD. Close El nombre del recordset Tabla te puede servir así mismo, al igual que el de la base de datos (BBDD), pero si quieres los puedes cambiar. El nombre Tablasecundaria lo debes sustituir por el nombre real de la tabla donde tienes los datos. He supuesto que los campos clavesgrupo, claveunidad son iguales en el formulario que en la tabla, al igual que el campo horas, si no son estos sustiuirlos por los reales. Si los campos claves son numéricos en la consulta del SELECT quítale las comillas simples a las variables (sólo las simples).
Muchas gracias por tu respuesta Soy algo novata en esto intente quitarle y ponerle las comillas simples y me sigue marcando error en el select de tal modo que quedo de esta forma Dim BBDD as DataBase Dim Tabla as Recordset (tambien puse el nombre real de la tabla) Dim RFC as String DIm CLAVEUNI As String Dim CLAVEG As Integer SetBBDD=CurrentDB Set Tabla=BBDD.OpenRecordset("Select*From TablaHorari where RFC='" & CLAVEUNI & '" AND CLAVEG=") If Not Tabla.EOF then msgbox"Unidad Repetida" exit sub end if Tabla.close Cada uno de mis controles en su origen de control muestran RFC, CLAVEUNI, ETC pero les asigne nombre diferente a cada control y quiero saber si eso afecta. Por ultimo mis campos lun, mar, mier etc a los que usted llama horas no son claves como el RFC esto también afecta de antemano muchas gracias por su respuesta
El nombre de los campos que utiliza el Access es el que te aparece en la vista diseño del formulario, cuadro de propiedades del control, en la pestaña Otras, en el apartado Nombre. Ese es el que debes tener en el código para extraer el valor del control. Por otro lado además de que no has hecho lo que te he puesto en el código anterior (Asignar los valores de los controles del formulario previamente a una variable), el SELECT no está bien transcrito. El SELECT es una instrucción de SQL que busca dentro de un recordset, en este caso los campos de la tabla TablaHorari, así que los nombres de la sección WHERE de esta consulta deben ser los de los campos de la tabla, no el de los controles del formulario, que a veces coinciden, pero a veces no. Además en la parte final que pones AND CLAVEG= se termina la instrucción sin definir a que debe ser igual este campo de la tabla. La línea del select quedaría así con los condicionantes que te menciono después Set Tabla=BBDD.OpenRecordset("Select*From TablaHorari where RFC='" & CLAVEUNI & '" AND CLAVEG=") RFC: ¿Es el nombre de un campo de la tabla?. Si no es así pon el nombre que tiene en la tabla. Suponiendo que RFC esté correcto: ¿Es un campo de texto? ¿Y CLAVEUNI también?, si es así antes, has puesto las comillas simples mal, deben ir así (te las escribo separadas por un espacio para que se distinga cual va primero ' " & CLAVEUNI & " ' Luego, como te dije CLAVEG (Si es no es el nombre del campo de la tabla ponle el correcto), le falta la condición igual a...(no hay nada definido) si lo que debe ir a continuación es otra variable o campo del formulario seguiría así. Si fueran de tipo Número CLAVEG= " & VARIABLE & " ") Si esta VARIABLE y el campo CLAVEG, son de tipo TEXTO, sería así: CLAVEG= ' " & VARIABLE & " ' ") Y para los campos de tipo Fecha (DATE) en lugar de las comillas simples se usa el #. Ya me dirás como te ha funcionado. Saludos,