Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -Privacidad y política de cookies -
Ayuda al foro con tu donación

Búsqueda en los foros

Foros en Udias.com / FileMaker / Omitir registros abiertos archivo multiusuarios
Autor Mensaje

Miembro

Habitual

  Karma         128

#1 Publicado: 26 Mar 2017 23:16 - Editado por: ipue



Hola todos,

Después de buscar durante días en el foro, no consigo dar con la solución.

Tengo una base de datos para hacer telemarketing, la cual trabajo con varios usuarios (TMK1, TMK2, TMK3, TMK4, TMK5) cada usuario accede desde su propio ordenador al mismo archivo alojado en otro ordenador principal.
(Todos los usuarios Filemaker Pro 13)

Lo que quiero conseguir es que cuando acceda cualquiera de los usuarios, se omitan todos los archivos que estén abiertos para que así no terminen llamando al mismo cliente.

Si TMK1 accede sólo vea los archivos que NO están abiertos por los demás usuarios, y así sucesivamente con el resto de usuarios.

Gracias por toda vuestra ayuda.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador


  Karma               6107

#2 Publicado: 27 Mar 2017 10:42 - Editado por: Alatriste



Se me ocurren varias formas de hacerlo pero sería necesario dieras mas info, como si las llamadas deben ser secuenciales o aleatorias, si un registro sera usado en otras campañas de llamadas, etc.
Una forma de hacerlo por ejemplo, si ese registro es modificado por el usuario, puedes poner un campo que detecte la ultima vez que se modificó el registro y pone la fecha del día o una X.
Ahora, un guion que se ejecuta por los usuarios para ver otro registro, va al siguiente registro y comprueba que ese campo no tenga la fecha de hoy o la X, si la tiene lo omite y salta a otro registro, asi hasta que encuentra un registro sin fecha o la X, si el registro no es modificado por el usuario, entonces este mismo guion mete la fecha o la X y así impide que otro usuario entre en ese registro.

Seguro que otros usuarios dan mas ideas.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Si te fue de utilidad el foro, valoralo y hazte forero VIP, tu nombre de usuario será verde mostrando que aportas ayuda económica.
Hacerte VIP es necesario para mantenerlo abierto, recuerda que el foro vive sin ayuda de FileMaker y sus distribuidores.
W10 Pro x64 - FileMaker 19 (x64)

Moderador


  Karma               6107

#3 Publicado: 27 Mar 2017 11:05 - Editado por: Alatriste



Ahora no recuerdo si hay alguna función que detecte si el registro esta abierto en una presentación determinada por otro usuario, que entonces seria otra forma de solucionarlo, entra en un registro comprueba si esta en uso o no.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Si te fue de utilidad el foro, valoralo y hazte forero VIP, tu nombre de usuario será verde mostrando que aportas ayuda económica.
Hacerte VIP es necesario para mantenerlo abierto, recuerda que el foro vive sin ayuda de FileMaker y sus distribuidores.
W10 Pro x64 - FileMaker 19 (x64)

Miembro

Habitual

  Karma         128

#4 Publicado: 27 Mar 2017 13:43



Alatriste:
Se me ocurren varias formas de hacerlo pero sería necesario dieras mas info, como si las llamadas deben ser secuenciales o aleatorias, si un registro sera usado en otras campañas de llamadas, etc.
Una forma de hacerlo por ejemplo, si ese registro es modificado por el usuario, puedes poner un campo que detecte la ultima vez que se modificó el registro y pone la fecha del día o una X.
Ahora, un guion que se ejecuta por los usuarios para ver otro registro, va al siguiente registro y comprueba que ese campo no tenga la fecha de hoy o la X, si la tiene lo omite y salta a otro registro, asi hasta que encuentra un registro sin fecha o la X, si el registro no es modificado por el usuario, entonces este mismo guion mete la fecha o la X y así impide que otro usuario entre en ese registro.

Hola Alatriste, las llamadas de momento las tengo secuenciales ya que el guión de inicio ejecuta una búsqueda y van llamando en el orden dado de esa búsqueda. pero estaría muy bien si fueran aleatorias ya que así cada día al cargar los archivos no estarían llamando siempre a los primeros registro.

Pasos:

1- El usuario accede con su login Ejemplo TMK1 y se ejecuta el paso de guión "Ejecutar Búsqueda=>Estado=Telemarketing y Fecha Ultima Llamada<Fecha del sistema.

2- Se abre el archivo mostrando los registros de la búsqueda del paso 1 y se realiza la llamada al número de teléfono del registro que se está visualizando sin necesidad de entrar o editar algún campo de dicho registro. Sólo se edita dicho registro en caso de que se deba cambiar de Estado=Telemarketing a Estado=Visita Concertada, No interesa, Número Erróneo.

El problema surge cuando el resto de usuarios accede ya que la búsqueda del paso 1 no omite los registros que están abiertos por los demás usuarios.

En referente a este, tu segundo comentario.

Alatriste:
Ahora no recuerdo si hay alguna función que detecte si el registro esta abierto en una presentación determinada por otro usuario, que entonces seria otra forma de solucionarlo, entra en un registro comprueba si esta en uso o no.

Yo encontre la siguiente función obtener:

Get ( RecordOpenState )

Propósito
Devuelve un número que representa el estado del registro actual.

Formato
Get ( RecordOpenState )

Parámetros
Ninguno

Tipo de datos devuelto
número

Descripción
Devuelve:

0 para un registro cerrado o validado

1 para un registro nuevo que no se ha validado

2 para un registro modificado que no se ha validado

La verdad no entiendo esta función ya que o me deja claro el resultado que devuelve si el registro esta abierto o se esta visualizando.

Muchas gracias a ti, y al resto de usuarios que me ayudan en encontrar una solución. Saludos...


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador


  Karma               7939

#5 Publicado: 27 Mar 2017 23:53



Hola.
Yo creo que la mejor solución sería pre-asignar los registros a los usuarios.
De este modo haces una búsqueda por el nombre del usuario y cada uno solo editaría los suyos.
Sls.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Pon tu sistema operativo y versión de FileMaker en tu perfil. Windows 10 Pro + FileMaker Pro 11/19

Miembro

Habitual

  Karma         128

#6 Publicado: 28 Mar 2017 14:09



flusheddata:
Hola.
Yo creo que la mejor solución sería pre-asignar los registros a los usuarios.
De este modo haces una búsqueda por el nombre del usuario y cada uno solo editaría los suyos.
Sls.

Hola flusheddata,

De la manera que tu lo comentas es complicado ya que siempre se están importando más registros al archivo y los usuarios no son siempre los mismos.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Habitual

  Karma         128

#7 Publicado: 28 Mar 2017 14:11



Quizás la solución pueda ser la función Get ( RecordOpenState ) pero no se como funciona.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador


  Karma               7939

#8 Publicado: 28 Mar 2017 15:35



Les pones a los campos un activador de guión OnObjectEnter y que disparen un guión que haga:
If [Get ( RecordOpenState ) > 0]
Restablecer registro
End If

Un saludo


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Pon tu sistema operativo y versión de FileMaker en tu perfil. Windows 10 Pro + FileMaker Pro 11/19

Miembro

Habitual

  Karma         128

#9 Publicado: 28 Mar 2017 18:11 - Editado por: ipue



flusheddata:
Les pones a los campos un activador de guión OnObjectEnter y que disparen un guión que haga:
If [Get ( RecordOpenState ) > 0]
Restablecer registro
End If
Un saludo

Hola flusheddata,

¿A todos los campos del registro debo poner el activador de guión para que ejecute el guión que comentas, o lo agrego al guión que se ejecuta para abrir el archivo cada vez que un usuario ingresa con su usuario y contraseña?

El guión que se ejecuta cuando un usuario ingresa es el siguiente:

Establecer captura de errores [Activo]
If [Get (AccountName) = "TMK1"
Ir a la presentación ["Detalle del contacto Usuarios TMK" (Contactos)]
Ejecutar búsqueda [Restaurar] Aquí busca los registros con el campo Estado=Telemarketing ya que hay más registros con otros estados.

If [Get (AccountName) = "TMK2" -El resto de guión se repite lo mismo con cada usuario TMK2, TMK3, TMK4 , TMK5-
...
End If


¿En que parte de este guión de inicio puedo poner el guión que tu comentas para que así cuando cada usuario introduzca su "Usuario y contraseña" se ejecute la búsqueda de los registros con Estado=Telemarketing y que a cada usuario le omita los registros que estén abiertos?

De antemano, muchas gracias por tu respuesta.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador


  Karma               7939

#10 Publicado: 29 Mar 2017 02:08



Hola.
He comprobado que Get ( RecordOpenState ) es relativo al usuario local o a la ventana por lo que no se puede utilizar para lo que necesitas.
Lo único que se me ocurre es que utilices un campo que tenga un valor por defecto, por ejemplo 1 y que el operador que vaya a usar el registro pulse un botón que cambie su valor por ejemplo a 0.

La idea es que se realice una búsqueda por ese campo = 1.

Un saludo,


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Pon tu sistema operativo y versión de FileMaker en tu perfil. Windows 10 Pro + FileMaker Pro 11/19

Miembro

Habitual

  Karma         128

#11 Publicado: 3 Abr 2017 00:07



flusheddata:
Hola.
He comprobado que Get ( RecordOpenState ) es relativo al usuario local o a la ventana por lo que no se puede utilizar para lo que necesitas.
Lo único que se me ocurre es que utilices un campo que tenga un valor por defecto, por ejemplo 1 y que el operador que vaya a usar el registro pulse un botón que cambie su valor por ejemplo a 0.

La idea es que se realice una búsqueda por ese campo = 1.

Un saludo,

Hola flusheddata,

En un principio lo solucione de la siguiente manera:

El guión que se ejecuta cuando un usuario ingresa al archivo es el siguiente:

Establecer captura de errores [Activo]
If [Get (AccountName) = "TMK1"
Ir a la presentación ["Detalle del contacto Usuarios TMK" (Contactos)]
Ejecutar búsqueda [Restaurar] Aquí busca los registros con el campo Estado=Telemarketing y omite los registros con el campo Usuario actual ≠TMK1.

If [Get (AccountName) = "TMK2" -El resto de guión se repite lo mismo con cada usuario TMK2, TMK3, TMK4 , TMK5-
...
End If

El problema que se me presenta ahora, es que tengo un botón en la presentación llamado "Siguiente" para que cada usuario le de clic y vea el siguiente registro. Dicho botón ejecuta la misma búsqueda cuando un usuario ingresa al archivo (Mencionado en el párrafo anterior)

Pero si dos usuarios hacen clic al mismo tiempo en botón "Siguiente" se les muestra el mismo registro a los dos.

Hay alguna manera de que no se les muestre el mismo registro aunque hagan clic a la misma vez en el botón "Siguiente"???


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Moderador


  Karma               7939

#12 Publicado: 3 Abr 2017 02:05



ipue:
y omite los registros con el campo Usuario actual ≠TMK1

Entiendo que entonces los registros están ya asignados a un usuario ¿no?


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Pon tu sistema operativo y versión de FileMaker en tu perfil. Windows 10 Pro + FileMaker Pro 11/19

Miembro

Habitual

  Karma         128

#13 Publicado: 3 Abr 2017 07:12



flusheddata:
ipue:
y omite los registros con el campo Usuario actual ≠TMK1

Entiendo que entonces los registros están ya asignados a un usuario ¿no?

No. Lo que en un principio hace el guión al abrir el archivo es que por ejemplo si el usuario "TMK1" ingresa se ejecute el guión y omita los registros que están abiertos por un usuario distinto.

If [Get (AccountName) = "TMK1"
Ir a la presentación ["Detalle del contacto Usuarios TMK" (Contactos)]
Ejecutar búsqueda [Restaurar] Aquí busca los registros con el campo Estado=Telemarketing y omite los registros con el campo Usuario actual ≠TMK1 Este campo usuario actual es un campo de autointroducción Get ( AccountName ).

pero si ingresa el usuario "TMK2" desde un segundo ordenador el guión continua:

If [Get (AccountName) = "TMK2"
Ir a la presentación ["Detalle del contacto Usuarios TMK" (Contactos)]
Ejecutar búsqueda [Restaurar] Aquí busca los registros con el campo Estado=Telemarketing y omite los registros con el campo Usuario actual ≠TMK2 Este campo usuario actual es un campo de autointroducción Get ( AccountName ).

Y así continua el guión para el resto de usuarios:

If [Get (AccountName) = "TMK3" -El resto de guión se repite lo mismo con cada usuario TMK4 , TMK5-
...
End If

De momento así al ingresar no se muestra el mismo registro a los demás usuarios, pero una vez dentro de la presentación cuando se esta visualizando un registro, si dos o mas usuarios hacen clic al mismo tiempo en el botón"Siguiente" para ver el siguiente registro, entonces si que se muestra el mismo registro.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Constante

  Karma             831

#14 Publicado: 3 Abr 2017 11:11



Evalua cuantas llamadas puede hacer un teleoperador en el tiempo que tengan asignado. Si son 50 llamadas busca 50 registros de forma aleatoria y se los asignas a ese teleoperador. Cuando busques eso 50 registros tienes que comprobar que no estén ya asignados. La asignación la haces creando una tabla en la que se guarden el ID del teleoperador y el ID del teléfono al que llama.

Si el teleoperador ha realizado todas las llamadas que le has asignados deberá de generarse otra búsqueda para que se le vuelvan a asignar nuevas llamadas.

Lo mismo el teleopedardor no tiene que ver un listado al que llamar. Simplemente pulsar un botón y que le de un cliente al que llamar. Ese cliente quedaría registrado en la tabla de llamadas realizadas en ese día y no debería ser encontrado en otra petición.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
FM15, PHP, XML/XSLT, JavaScript, ExtJS, Sencha

Miembro

Habitual

  Karma         128

#15 Publicado: 3 Abr 2017 11:19



paquintosh:
Evalua cuantas llamadas puede hacer un teleoperador en el tiempo que tengan asignado. Si son 50 llamadas busca 50 registros de forma aleatoria y se los asignas a ese teleoperador. Cuando busques eso 50 registros tienes que comprobar que no estén ya asignados. La asignación la haces creando una tabla en la que se guarden el ID del teleoperador y el ID del teléfono al que llama.

Si el teleoperador ha realizado todas las llamadas que le has asignados deberá de generarse otra búsqueda para que se le vuelvan a asignar nuevas llamadas.

Lo mismo el teleopedardor no tiene que ver un listado al que llamar. Simplemente pulsar un botón y que le de un cliente al que llamar. Ese cliente quedaría registrado en la tabla de llamadas realizadas en ese día y no debería ser encontrado en otra petición.

Hola paquintosh,

Me parece muy interesante tu solución, te importaría detallarme un poco los pasos (si no es mucho pedir) para tenerlo más claro a la hora de realizar esos cambios en el archivo.

Muchísimas gracias...


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Constante

  Karma             831

#16 Publicado: 3 Abr 2017 13:14



No tengo mucho tiempo ahora. Dime si es necesario que el tele operador vea un listado. Si el listado no es necesario puede ser mas simple todo ya que únicamente debe encontrar un teléfono al que no se ha llamado en ese día. Entonces con que tenga un botón que ponga "Siguiente llamada" y al pulsarlo busque la llamada a realizar te evitas muchos problemas y las llamadas pueden ser aleatorias.

Si me contestas trato de hacer un ejemplo. Puede resultar divertido eso buscar un teléfono aleatorio.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
FM15, PHP, XML/XSLT, JavaScript, ExtJS, Sencha

Miembro

Habitual

  Karma         128

#17 Publicado: 3 Abr 2017 16:25 - Editado por: ipue



paquintosh:
No tengo mucho tiempo ahora. Dime si es necesario que el tele operador vea un listado. Si el listado no es necesario puede ser mas simple todo ya que únicamente debe encontrar un teléfono al que no se ha llamado en ese día. Entonces con que tenga un botón que ponga "Siguiente llamada" y al pulsarlo busque la llamada a realizar te evitas muchos problemas y las llamadas pueden ser aleatorias.

Si me contestas trato de hacer un ejemplo. Puede resultar divertido eso buscar un teléfono aleatorio.

No es necesario que el teleoperador vea un listado.

¡¡¡Sería genial que las llamadas puedan ser aleatorias!!!

Lo que comentas del botón como lo podrás ver en la imagen adjunta, lo tengo, pero con un guión que hace lo siguiente por ejemplo si el usuario "TMK1" fuera el Usuario actual.

Ejecutar búsqueda [Restaurar] Aquí busca los registros con el campo Estado=Telemarketing y omite los registros con el campo Usuario actual ≠TMK1 Este campo usuario actual es un campo de autointroducción Get ( AccountName )

Te adjunto imagen de la pantalla que ven los teleoperadores al entrar al registro y con la que trabajan.

Saludos e infinitas gracias por tu ayuda.

pantalla teleoperadores
pantalla teleoperadores

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Constante

  Karma             831

#18 Publicado: 4 Abr 2017 18:52 - Editado por: paquintosh



Hola, no he tenido mucho tiempo para hacer un ejemplo chulo como quería. Pero si en el fin de semana puedo lo mejoro.

Este ejemplo es como un juego de cartas. Por ahora simplemente lo que hace es repartir las cartas. Eso sería lo mismo que efectuar una llamada.

Cuando se pulsa el botón para dar una carta se abre una ventana, si no está abierta ya, y en esa ventana se muestran todos los registros. Eso es el mazo de las cartas del juego. Cuando reparte una carta lo que hace es ir a un registro aleatorio con Int ( Random * Get (FoundCount ) ). Crea un registro en la tabla partidasCartas en la que guarda el nº de partida y el ID de la carta y omite el registro. De ese modo desde la presentación del juego se ven las cartas repartidas y cuando se vuelve a dar una carta nueva no vuelve a repetir ninguna de las jugadas porque se van omitiendo del mazo. Si ves el ejemplo creo que lo entenderás mejor.

En tu caso puede pasar que un operador encuentre un registro que ya ha sido usado por otro. Pero eso lo podrás saber si ves que está relacionado con la tabla en la que guardas los que ya han sido llamados (en mi ejemplo esa tabla es partidasCartas ). Si ocurriera eso lo único que tienes que hacer es omitir el registro y hacer que busque otro aleatorio. Como la base de datos será grandísima no creo que ocurra muchas veces que encuentre uno repetido. Ya te lo iré mejorando poco a poco, pero espero que de momento te sirva.

seleccion_aleatoria..zipArchivo adjunto: seleccion_aleatoria..zip
 

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
FM15, PHP, XML/XSLT, JavaScript, ExtJS, Sencha
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con Omitir registros abiertos archivo multiusuarios

::: TRUCO ::: OMITIR REGISTROS DUPLICADOS (O DESDUPLICAR)
Como puedo omitir todos los registros en una presentacion?
Cómo puedo omitir la respuesta automática de FM cuando en una búsqueda no encuentra registros
Multiusuarios con acceso limitado
Omitir


Conectados: Invitados - 16
Miembros - 0
En verde usuarios ZDDR

Realizado con miniBB © 2001-2020
Para Udias.com © 1996-2020
Hosting con Interdominios