Programación en castellano
Inicio > Foros > MySQL > Ayuda - no se como hacer este proceso
-Foros de debate

MySQL
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Ayuda - no se como hacer este proceso
Enviado por Gustavo el día 16 de enero de 2006

Soy nuevo en MySql y tengo que realizar los cambios a mi sistema para que realice lo siguiente y al no conocer bien mysql me encuentro desorientado

le expongo mi caso para ver si alguien me puede dar una idea de como hacerlo

- Tengo una tabla de CLIENTES que puede tener entre 500 a 6000 registros que se dan de alta todos los dias, con datos para hacer llamadas telefonicas y cada registro de esa tabla es unico una vez procesado ese registro ya no hay que volver a procesarlo

- por otra parte estan los usuarios (entre 30 y 300 ) del sistema al conectarse el sistema TIENE QUE BUSCAR UN REGISTRO DE CLIENTES y hacer la llamada telefonica y procesar los datos despues buscar otro libre y hacer lo mismo hasta que no queden registros

aca biene el problema
se conectan al sistema entre 30 y 300 usuarios y el problema es como hacer para que 2 o mas usuarios del sistema NO TOMEN EL MISMO DATO, o sea el sistema cuando arranca tiene que buscar el primer registro de clientes que este sin usar y que no se este usando en ese momento por otro usuario, debido a la gran cantidad de usuarios del sistema
esto tiene que funcionar sin atascar la base

yo habia pensado en un procedimiento almacenado
pedir_datos y al hacerlo bloquear ese registro a los otros y devolver el dato al usuario no se si podra devolver un cursor

bueno desde ya muchas gracias

 
Re: Ayuda - no se como hacer este proceso
Enviado por Vicent el día 18 de enero de 2006

No sé si he entendido bien tu problema però se me ocurre que puedes hacer algunas modificaciones en las tablas. Podrias añadir un nuevo campo de tipo NUMBER llamado, por ejemplo, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"Accedido\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" a la tabla CLIENTES. Ese campo, en principio, estaria inicializado a cero en todos los registros. Cuando un usuario del sistema accede al registro correspondiente de la tabla CLIENTES, primero debe comprobar el valor de CLIENTES.Accedido; si el mencionado campo contiene el valor cero, el usuario puede leer el registro si no accede a otro registro.
Salutacions des de València

 
Re: Re: Ayuda - no se como hacer este proceso
Enviado por gustavo el día 22 de enero de 2006

Te agradesco mucho Vicent por tu respuesta

Algo asi Vincent es lo que tengo que hacer pero tiene que estar combinado con una forma de bloqueo y poder detectar si esta bloqueado o no el registro (que es lo que desconosco en esta base), porque
ya me ha pasado en este sistema pero con otra base de datos, que en el tiempo que se toma para verificar si se uso o no y grabar, en ese tiempo entran varios usuarios al mismo registro y aca se arma el problema, porque encuentro a 2 o mas usuarios llamando al mismo telefono (usando el mismo registro)

Soy medio malo para hacerme entender, a ver si esta informacion sirve para clarificar un poco mas la idea del problema y el ambito del trabajo.

El sistema es para un callcenter donde los clientes son cada nro telefonico,
todos los dias se agregan en promedio unos 3000 registros de clientes o dicho de otra forma se agregan 3000 numeros para llamar y realizar ventas
Al igual que la cantidad de usuarios del sistema u teleoperadores, hoy el sistema esta en un callcenter con 50 teleoperadores , por otra parte tengo que tener en cuenta que mi sistema debe servir a otros callcenter y hay algunos callcenter que llegan a tener 700 o mas usuarios o teleoperadores trabajando al mismo tiempo.

como hacer un procedimiento en la base o del lado del sistema que le solicite a la tabla un registro disponible para realizar la llamada y que ese registro no alla sido usado nunca y que por otra parte no le entregue el mismo registro a mas de un usuario o teleoperador.

Un dato interesante es que a diferencia de otros sistemas en que las posibilidaddes de que un usuario entre al mismo registro son bajas aca pasa todo lo contrario

inicialmente estan los 50 teleoperadores tratando de entrar a los mismos registros

bueno cualquier idea me la comunicas
gracias


 
Re: Re: Re: Ayuda - no se como hacer este proceso
Enviado por nuncataxi el día 24 de enero de 2006

Estimado Gustavo.

Primero, vendría bien saber que entorno estas utilizando (lenguaje, sistema operativo, etc.).

La solución que te propusieron es (creo la mas correcta) utilizar un select sobre el proximo registro y luego (inmediatamente) actualizar un campo del registro con una función como la que te muestro abajo (en PHP)

function do_queries ($conn_id)
{
# actualizacion con retencion, lee codigo e inmediatamente actualiza el campo
# con una función como esta, si vuelve vacio o falso sigue al proximo
return
(
mysql_query (\"BEGIN\", $conn_id)
&&
mysql_query (\"UPDATE tabla_cliente SET utilizado = 1 WHERE codigo_cliente = $codigo\",
$conn_id)
&&
mysql_query (\"COMMIT\", $conn_id)
);
}

en resumen, abre una transaccion, trata de actualizar y cierra la transaccion. Si esta lockeado por otro, vuelve falso, si ya esta actualizado vuelve falso, sino volvera verdadero, el usuario quedara con ese cliente y listo.

Sls.
Hg.

 
Re: Re: Re: Re: Ayuda - no se como hacer este proceso
Enviado por gustavo el día 24 de enero de 2006

Gracias ya lo voy a adaptar y probar
el desarrollo actualmente esta en visual fox pro 8 y la base que quiero usar esta en un servidor linux, lo conecto por odbc y funciona bastante bien.
el sistema tambien tiene monitoreo de informacion por web actualmente estoy usando asp pero mi intension es mudarme completamente a linux con php y mono el .net de linux, como sistema de desarrollo, pero por ahora tengo que realizar los cambios al sistema para poder implementar la base de mysql y arrancar con esa extructura.

bueno gracias nuevamente y saludos

 
Re: Re: Re: Re: Re: Ayuda - no se como hacer este proceso
Enviado por gustavo el día 24 de enero de 2006

Muchas Gracias amigos, Vincent y nuncataxi me fue de muchisima ayuda sus respuestas, ahora me encuentro realizando el programa para probarlo aplicando lo que uds me aconsejaron hacer y creo que va funcionar bien gracias

Saludos desde Córdoba Argentina

 
Re: Re: Re: Re: Re: Re: Ayuda - no se como hacer este proceso
Enviado por marco el día 8 de febrero de 2006

Gustavo, por esas casualidades del destino me acaban de pedir el mismo requerimiento hace unos días. Cuéntanos como te fue con las sugerencias que te daban los amigos y los problemas que pudieses haber tenido, para que todos aprendamos. Gracias.

 






Re: Ayuda - no se como hacer este proceso
Enviado por axelopez el día 10 de febrero de 2006

creo que enconttraste tu solucion, pero no esta demas comentarte cual fue mi solucion.

Mira yo hice algo similar, pero lo que hice fue marcar el registro antes de consultarlo, para no trabajar a travez de una excepcion, entonces primero creo un codigo unico del operador,

seria id_operador + fechahoraAtencion

entonces el algoritmo para la funcion

update llamadas set atendido =fechaHora, operador = operadorId where llamada_id
= (select min(llamada_id) from llamadas where operador is null)

commit;

alli marque el registro, luego puedo hacer todas las operaciones que quiera.

select llamadaId into salida from
llamadas where atendido = fechaHora and operador = operadorId;

return salida;
entonces desde la aplicaicon a una variable se le asigna

la fecha

paramFecha= date

'llamo al procedimiento

idllamada = tomarllamada(paramFecha, globalOperador);



 
Re: Re: Ayuda - no se como hacer este proceso
Enviado por nuncataxi el día 12 de febrero de 2006

Estimado axelopez.

De acuerdo, ese es el algoritmo basico, en tu caso cambias el flag de atencion por la fecha y el operador (esto tiene por finalidad que quien lea entienda la diferencia entre lo que hizo gustavo y lo que aplicaste tu).

Sls.
Hg.

 



Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados