[RESUELTO] Advertir de valor duplicado al perder el foco

Discute sobre las herramientas de la base de datos
Responder
Poputs
Mensajes: 9
Registrado: Jue Dic 04, 2014 7:40 pm

[RESUELTO] Advertir de valor duplicado al perder el foco

Mensaje por Poputs »

Buenas.

Estoy creando una base con un formulario que tiene bastantes campos, hay uno en el que necesariamente no puede haber un valor duplicado, por lo que he añadido un índice. El problema que tengo es que el cuadro de diálogo que advierte del error de valor duplicado aparece cuando se han rellenado todos campos y se quiere pasar al siguiente registro.

Mi pregunta es ¿no habría alguna manera que apareciese ese cuadro de diálogo (o uno similar) al perder el foco?

Muchas gracias a todos.
Última edición por Poputs el Sab Feb 13, 2016 11:40 am, editado 1 vez en total.
LibreOffice 4.1 sobre Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Advertir de valor duplicado al perder el foco

Mensaje por mauricio »

Interesante... se me ocurren dos alternativas:

1.- Ir mostrando los existentes en otro control, cuando no aparezca ninguno, es que no existe previamente...
2.- Ir cambiando el color de fondo del control, en rojo para existentes, en verde para no existentes...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Poputs
Mensajes: 9
Registrado: Jue Dic 04, 2014 7:40 pm

Re: Advertir de valor duplicado al perder el foco

Mensaje por Poputs »

Mauricio, muchas gracias por tu rápida respuesta.

No se a que te refieres con lo de mostrar los existentes en otro control.

Lo de ir cambiando el color de fondo puede ser interesante, pero supongo que se tendrá que hacer por medio de una macro. La verdad que no se me da bien eso de programar macros, las pocas conozco y aplico las he sacado de tu libro de los ejemplos de bases que están en este foro.
LibreOffice 4.1 sobre Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Advertir de valor duplicado al perder el foco

Mensaje por mauricio »

Otro control por ejemplo, un cuadro de lista que vaya filtrando los existentes, pero como estamos hablando de valores únicos, me gusta más la idea del color que es muy simple de implementar en el evento texto cambiado del control:

Código: Seleccionar todo

Sub Texto_Modificado(event)
    txt = event.Source
    If Test_exist(txt) Then
       color = RGB(255,0,0)
    Else
       color = RGB(0,255,0)
    End If
    txt.Model.BackgroundColor = color	
End Sub


Function test_exist(txt) As Boolean
	frm = txt.Model.Parent
	sql = frm.ActiveCommand & " WHERE " & txt.Model.BoundField.Name & "= '" & txt.Text & "'"
    con = ThisDatabaseDocument.CurrentController.ActiveConnection
    q = con.createStatement()
    r = q.executeQuery(sql)
    Test_exist = r.next()
End Function
Si el valor existe, lo muestra en rojo:
rojo.png
(4.61 KiB) No descargado aún
Si no existe lo muestra en verde:
verde.png
(4.61 KiB) No descargado aún
Lindo!!... anexo archivo de ejemplo...

Saludos

P.D. Por supuesto esto puede tener N variantes, pero esa es la idea...
Adjuntos
DB_test.odb.7z
(10.45 KiB) Descargado 214 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Advertir de valor duplicado al perder el foco

Mensaje por RMG »

Hola,

Mauricio a mi entender creo que lo que pide el usuario es valor del campo duplicado (tipo DNI o similar) no control duplicado. Si es eso, con una búsqueda en el foro dispone de varios ejemplos.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Advertir de valor duplicado al perder el foco

Mensaje por mauricio »

Si, eso es lo que hace el ejemplo... agregando un índice a dicho campo, evitas que el motor de la base de datos agregue un duplicado, pero el motor no te avisa hasta que guardas o intentas cambiar de registro... el ejemplo solo es una ayuda visual para saber si el valor ya esta en la base de datos...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Advertir de valor duplicado al perder el foco

Mensaje por RMG »

Efectivamente, me he precipitado a opinar sin ver tu ejemplo.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Poputs
Mensajes: 9
Registrado: Jue Dic 04, 2014 7:40 pm

Re: Advertir de valor duplicado al perder el foco

Mensaje por Poputs »

Mauricio gracias por tu respuesta.

He probado el ejemplo que has adjuntado y no cambia de color. También lo he aplicado a la base que estoy montando y tampoco.
LibreOffice 4.1 sobre Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Advertir de valor duplicado al perder el foco

Mensaje por mauricio »

He vuelto a verificarlo y funcionar correctamente... solo intenta agregar una clave que ya este en el ejemplo en un nuevo registro, debe de cambiar a rojo...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Poputs
Mensajes: 9
Registrado: Jue Dic 04, 2014 7:40 pm

Re: Advertir de valor duplicado al perder el foco

Mensaje por Poputs »

Buenos días, Mauricio.

He vuelto a probar tu macro y SÍ que funciona (tenía mal configurado Office en las opciones de seguridad de las macros).

Muchas gracias por la solución facilitada.

Marco como resuelto el tema.

Un saludo.
LibreOffice 4.1 sobre Windows 7
jopicach
Mensajes: 143
Registrado: Dom Nov 20, 2016 3:24 pm
Ubicación: Almería (España)

Re: [RESUELTO] Advertir de valor duplicado al perder el foco

Mensaje por jopicach »

Hola,

He comprobado que la macro funciona perfectamente para un campo de texto y la he podido utilizar, pero no logro adaptarla a un campo de fecha. ¿Que necesitaría cambiar en el código?
Gracias.

Sub Texto_Modificado(event)
txt = event.Source
If Test_exist(txt) Then
color = RGB(255,0,0)
Else
'color = RGB(0,255,0) no necesito cambiar este color
End If
txt.Model.BackgroundColor = color
End Sub

Function test_exist(txt) As Boolean
frm = txt.Model.Parent
sql = frm.ActiveCommand & " WHERE " & txt.Model.BoundField.Name & "= '" & txt.Text & "'"
con = ThisDatabaseDocument.CurrentController.ActiveConnection
q = con.createStatement()
r = q.executeQuery(sql)
Test_exist = r.next()
End Function
LibreOffice versión: 7.0.5.2 (x64) - Windows 10 Pro 64 bits
EMEJOTA72
Mensajes: 7
Registrado: Dom Ene 29, 2017 11:28 am

Re: [RESUELTO] Advertir de valor duplicado al perder el foco

Mensaje por EMEJOTA72 »

Buenas tardes, sé que este es un tema resuelto, pero no resuelve el mio aunque esta directamente relacionado, en mi caso yo necesitaría que.... me advirtiera de que existe un numero de historia clínica igual y que aún así me dejara continuar, dado que un mismo paciente puede necesitar venir a consulta varias veces, y solo necesito saber que ya ha venido en otra u otras ocasiones, ¿es esto posible? gracias!!
LIBREOFFICE 5.2 - S.O.WINDOWS 10 HOME
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Advertir de valor duplicado al perder el foco

Mensaje por mauricio »

Me parece otro tema, abre un nuevo tema con el problema, sobre todo, un archivo de ejemplo ayudará a quien quiera ayudarte.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
EMEJOTA72
Mensajes: 7
Registrado: Dom Ene 29, 2017 11:28 am

Re: [RESUELTO] Advertir de valor duplicado al perder el foco

Mensaje por EMEJOTA72 »

Ok! de acuerdo, muchas gracias!
LIBREOFFICE 5.2 - S.O.WINDOWS 10 HOME
Responder