[RESUELTO] Advertir de valor duplicado al perder el foco
[RESUELTO] Advertir de valor duplicado al perder el foco
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.
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
Re: Advertir de valor duplicado al perder el foco
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
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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Advertir de valor duplicado al perder el foco
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.
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
Re: Advertir de valor duplicado al perder el foco
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:
Si el valor existe, lo muestra en rojo:
Si no existe lo muestra en verde:
Lindo!!... anexo archivo de ejemplo...
Saludos
P.D. Por supuesto esto puede tener N variantes, pero esa es la idea...
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
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
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Advertir de valor duplicado al perder el foco
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
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)
Re: Advertir de valor duplicado al perder el foco
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
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Advertir de valor duplicado al perder el foco
Efectivamente, me he precipitado a opinar sin ver tu ejemplo.
Saludos
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)
Re: Advertir de valor duplicado al perder el foco
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.
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
Re: Advertir de valor duplicado al perder el foco
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
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Advertir de valor duplicado al perder el foco
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.
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
Re: [RESUELTO] Advertir de valor duplicado al perder el foco
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
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
Re: [RESUELTO] Advertir de valor duplicado al perder el foco
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
Re: [RESUELTO] Advertir de valor duplicado al perder el foco
Me parece otro tema, abre un nuevo tema con el problema, sobre todo, un archivo de ejemplo ayudará a quien quiera ayudarte.
Saludos
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: [RESUELTO] Advertir de valor duplicado al perder el foco
Ok! de acuerdo, muchas gracias!
LIBREOFFICE 5.2 - S.O.WINDOWS 10 HOME