|
Buenas
Aqui estamos otra vez con otro tema que tengo, digamos que ando afinando la base de datos que tengo y esto son ya pequeños detalles para que quede mas "fina" la base de datos. La cuestión es que tengo un formulario en el que voy rellenando varios datos del modelo ferroviario que tengo. Todos están relacionados mediante el campo REFERENCIA, el cuan lo tengo como campo clave en todas las tablas, no permitiendo que esté vacío y siendo obligatorio su cumplimentación. Al se campo clave no permite duplicados, y hasta aqui bien. Lo que ocurre es que me dice que el modelo ya existe cuando le doy a salir o paso a cualquier otra acción en el formulario. La cuestión es que quiero que cuando introduzca la REFERENCIA en el cuadro de texto en el evento "al salir", realice una búsqueda por si estuviera duplicado, y en caso de estarlo me diera un mensaje de error. NO se si con todo este rollo me he explicado bien de que es lo que busco.
Os dejo aqui el código que he realizado: Private Sub txtReferencia_Exit(Cancel As Integer) Dim vNuevaReferencia As String Dim vReferencia As String Dim dbs As dao.Database Dim rts As dao.Recordset 'Tomamos el valor de la referencia nueva vNuevaReferencia = Forms!F_Principal!txtReferencia.Value 'Inicializa la referencia vReferencia = "" Set dbs = CurrentDb Set rts = dbs.OpenRecordset("T_ModeloGeneral", dbOpenSnapshot) 'comprobamos que la consulta no esta vacia If rts.RecordCount <> 0 Then 'Nos movemos al primer registro rts.MoveFirst 'Recorremos la tabla hasta el final Do Until rts.EOF 'Tomamos el valor de la referencia de cada registro vReferencia = rts.Fields("Referencia").Value 'Verificamos que la nueva referencia no esta ya incluida If vNuevaReferencia <> vReferencia Then 'Movemos el recordset al siguiente registro rts.MoveNext Else If vReferencia <> "" Then 'Mensaje de error al introducir datos MsgBox "LA REFERENCIA INDICADA YA EXISTE", vbOKOnly, "ERROR DATOS" 'Damos como valor vacio a la referencia nueva 'Forms!F_Principal!txtReferencia.Value = "" 'Movemos el recordset al ultimo registro rst.MoveLast End If End If Loop End If 'Cerramos conexiones y liberamos memoria rts.Close dbs.Close Set rts = Nothing Set dbs = Nothing
End Sub
El problema lo tengo solamente cuando la REFERENCIA esta repetida, se queda colgado y tengo que cerrar la base, pues como me obliga a rellenarlo no me responde en ningún momento.
Bueno espero vuestras respuesta a ver que ideas tenéis.
Un saludo
|