Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2005
Avatar de jdattoli
jdattoli jdattoli is offline
Miembro
 
Registrado: feb 2005
Posts: 86
Poder: 20
jdattoli Va por buen camino
Unhappy Base Compartida!!

Hola amigos espero que tengan muy buen día.

La duda que tengo es la siguiente:

Tengo una aplicación que se conecta a una base de datos en Acces alojada en un servidor. Hasta aqui no tengo ningun problema. sin embargo necesito que esta aplicación la ocupen 7 personas simultaneamente, utilizo un filtro para que unicamente le muestre a los usuarios los registros que no han sido tocados, sin embargo los 7 empiezan a trabajar en el mismo registro y si el usuario no ha guardado los cambios entonces la aplicación la toma y se la muestra a los otros 6 asesores.

Tratando de ser mas claro.

Que puedo hacer para que ningun asesor me tome el mismo registro, hay alguna manera de indicarle a la aplicacion que si hay un segundo apuntando en ese registro , tome un tercero disponible??

Muchas gracias por su ayuda.

Jdattoli
__________________
Welcome to the tragic kingdom
Responder Con Cita
  #2  
Antiguo 11-10-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Buenas,

No entiendo bien a que te referís con eso de "registros no tocados". Como primer consejo te diría que si vas a trabajar en cliente servidor te vayas olvidando de las "cualidades" de Access. Pero alguna solución para el problema, que repito no entendí por completo, sería agregar a la tabla en cuestión un campo FLAG que indique si está siendo utilizado por otro usuario y de esa manera simular un bloqueo para los que intentan reutilizarlo.

Siento no ser de mayor ayuda.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 11-10-2005
Avatar de jdattoli
jdattoli jdattoli is offline
Miembro
 
Registrado: feb 2005
Posts: 86
Poder: 20
jdattoli Va por buen camino
Talking

Es cierto precisamente lo que necesito es una bandera, me has dado una buena idea.

Registros tocados es un termino utilizado en los bancos que se refiere a aquellos registros que no han sido actualizados por el usuario.
__________________
Welcome to the tragic kingdom
Responder Con Cita
  #4  
Antiguo 12-10-2005
Avatar de jdattoli
jdattoli jdattoli is offline
Miembro
 
Registrado: feb 2005
Posts: 86
Poder: 20
jdattoli Va por buen camino
Hola:


He tratado de hacer el registro bandera, pero no puedo, si alguien tiene una sugerencia se la agradecería.

Jdattoli
__________________
Welcome to the tragic kingdom
Responder Con Cita
  #5  
Antiguo 12-10-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

¿Podrías extender un poco más el problema o bien poner un poco de código (definición de la tabla, llamadas desde Delphi, etc.) como para poder orientarnos un poco más?

Gracias
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #6  
Antiguo 12-10-2005
Avatar de jdattoli
jdattoli jdattoli is offline
Miembro
 
Registrado: feb 2005
Posts: 86
Poder: 20
jdattoli Va por buen camino
Ocupe un adotable para conectar mi aplicacion con mi base en Access.

La base tiene los siguientes campos:
Nombre del cliente:
Numero de cuenta:
Telefonos:
Horario:
observaciones:
status:
bandera:

de hecho toda la base ya esta llena y los operadores lo unico que deben de hacer es comunicarse con cada cliente y en el campo status poner 1 de 2 opciones

Retenida o cancelada.

estas 2 opciones ya las agrege a un Dbcombobox para que ni siquiera capturen y solo eligan la opcion correspondiente.

Todo esto ya lo logré, el problema que tengo es que al conectar la base con 7 copias de mi aplicacion los 7 asesores ven a mi primer registro y solo uno de ellos, el primero, podra realizar el cambio ya que los otros 6 tendran un error que dice que el campo ha sufrido cambios desde que se abrió.

Necesito algo que le indique a mi aplicación, que ese registro ya lo esta viendo alguien mas y que busque el proximo registro disponible para que el operador pueda llamarle al cliente. y es bastante importante ya que no quisiera tener a 2 personas marcando a un mismo cliente.

el codigo que he utilizado es muy poco, solamente el filtro.

Aprecio Muchisimo tu invaluable ayuda.
__________________
Welcome to the tragic kingdom
Responder Con Cita
  #7  
Antiguo 14-10-2005
Avatar de jdattoli
jdattoli jdattoli is offline
Miembro
 
Registrado: feb 2005
Posts: 86
Poder: 20
jdattoli Va por buen camino
Hola amigos, este es codigo de mi filtro:

procedure TCuentas.Button1Click(Sender: TObject);
begin
adotable1.Active:=true;
adotable1.Filter:='status ='+QuotedStr(edit1.text);
adotable1.Filter:='flag ='+QuotedStr(edit2.text);
adotable1.Filtered:=true;
adotable1.Refresh;
adotable1.Edit;
adotable1.FieldByName('flag').AsString:='activo';

end;

si ven primero filtro mi campo "status" y edit1 esta en blanco, ya que no quiero que me aparezcan las que ya estan actualizadas,

luego filtro "flag" para que no me tome un registro que esté utilizando otra persona (en teoria es lo que pense podria pasar), y en seguida le agrego la palabra "activo" a mi campo flag para que los demas sepan que lo estoy ocupando, pero la actualización no es en tiempo real y no se ya que hacer.

si abrimos 2 veces mi ejecutable, los dos toman al primer registro, y pues no me sirve.

Espero me puedan ayudar.

Gracias

jdattoli
__________________
Welcome to the tragic kingdom
Responder Con Cita
  #8  
Antiguo 16-10-2005
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
En delphi usando F1 sobre las propiedades de un objeto podés solucionar mucho: En este caso sobre "LOCK TYPE" del ADO Table

ltUnspecified
A specific lock type has not been specified or determined.

ltReadOnly
Read-only; the current execution cannot modify data.

ltPessimistic
Pessimistic locks; locks instantiated on a record-by-record basis when edit mode is applied to a record.

ltOptimistic
Optimistic locks; locked are initiated on a record-by-record basis, but only when updates are applied and a record is being updated.

ltBatchOptimistic Optimistic batch updates; used for batch update mode rather than immediate update mode.

Me parece que mejor es implementar un procedimiento almacenado con lock type


Saludos
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:37:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi