Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Manejo de datos en red

Buenos días a todos.
Les cuento que soy novato en esto de la programación asi que pido disculpa de antemano si estoy preguntando una gansada, estuve buscando en el foro pero no encontré una respuesta.
Desarrolle para un amigo un sistema que le permite llevar el control de los pedidos de mercadería que le hacen sus clientes, tiene una sección donde se cargan los pedidos pendientes de entrega y cuando estos pedidos son despachados lo marco como tal mediante un campo verdadero/falso en la base de dados.
El tema es que si dos personas tienen abierta la sección “pendientes” al mismo tiempo puede pasar que una persona esta viendo un pedido como pendiente cuando en realidad acaba de ser despachado por otro usuario. Es mas puede volver a despachar un pedido que ya fue despachado, con lo cual se generan dos números de despacho.
Agradecería si alguien me puede dar una idea de cómo encarar este tema.

Estoy usando tablas Access y un ADOQuery para cada estado del pedido (pendiente, despachado, entregado) los cuales consultan la misma tabla, solo que los filtro según el valor campos verdadero/falso en la tabla.
En un principio usaba un solo ADOQuery, pero eso me generaba otros problemas, que no vienen al caso ahora.

Desde ya Muchas gracias.
Responder Con Cita
  #2  
Antiguo 18-06-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Hola.

¿Cómo visualizas y seleccionas el pedido a servir? ¿Los tienes en un grid y picas en el que quieres?.
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 18-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Los muestro en un dbgrid, al presionar la tecla insert se marca como seleccionado mediante un campo verdadero/falso en la tabla. De esta forma se pueden seleccionar varios pedidos para despacharlos.

Luego al hacer clic en el boton Despachar, los marco como despachado mediente un update

Código SQL [-]
Update Pedidos Set Despachado = True Where PedidoSeleccionado = True
Responder Con Cita
  #4  
Antiguo 18-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Desconozco el tema de transacciones con access, pero en todo caso podrías comprobar si ya ha sido despachado antes de actualizar.
Responder Con Cita
  #5  
Antiguo 18-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Gracias por responder.
Como te decia soy nuevo en esto y no tengo estudio en el tema, simplemente voy aprendiendo a medida que voy necesitando hacer algo nuevo, busco una solucion.
Me podrias explicar en general par que se usan las transacciones? porque la verdad no tengo idea.

Si hay dos usuarios usando la misma seccion del programa, supongamos que viendo registros
listados en un DBGrid y uno agrega un registro, hay alguna forma de que el segundo usuario vea esa modificacion sin tener que hacer un Requery o algo similar?
Responder Con Cita
  #6  
Antiguo 18-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé si access contempla transacciones, la verdad. Pero ya que estás aprendiendo autodidácticamente te aconsejaría que, si puedes, cambies a postgresql, firebird, mysql, etc. y te olvides de access, paradox, etc.
Este es el "libro maestro" sobre transacciones, en firebird/interbase.
Responder Con Cita
  #7  
Antiguo 18-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Si, de hecho estoy en eso, ya instale firebird 2.1.3 y ZoesLib 6.6.6-stable y estoy usando IBExpert para crear la base de datos y todo eso, ya estoy probando.
Gracias por el pdf sobre transacciones, lo voy a leer.
Cuando mencionaste el termino que no conocia busque en internet y vi que se trata de mantener la integridad de los datos, si no se ejecutan correctamente todas las instrucciones de una transaccion, no se ejecuta ninguna.

Ahora, vuelvo a preguntar, si hay dos usuarios usando la misma seccion del programa, supongamos que viendo registros listados en un DBGrid y uno agrega un registro, hay alguna forma de que el segundo usuario vea esa modificacion sin tener que hacer un Requery o algo similar?

Como dije antes, pido disculpas si estoy haciendo una pregunta tonta.
Responder Con Cita
  #8  
Antiguo 18-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
O sea, que esté mirando la pantalla fijamente y de golpe se refresque, ¿es eso?.
Busca por post_event
Responder Con Cita
  #9  
Antiguo 18-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Claaaro, eso mismo, que si usuario agrega un registro el otro usuario vea reflejado ese cambio, pero sin necesidad de estar haciendo un Requery por las dudas que otro usuario haya agregado un registro por ejemplo.

Gracias por el dato, voy a buscar a ver que enuentro.
Responder Con Cita
  #10  
Antiguo 18-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Ya estaaaa
Muy bueno tu dato, Muchas gracias!!!
Use un ZIBEventAlerter y cree los trigger en la base de datos
Por si alguien esta en la misma situacion les dejo esta pagina, donde lo explican muy claramente.
Desgraciadamente nada de esto funciona para el sistema que ya tengo hecho con access

Muchas Gacias!!

http://www.firebird.com.mx/modules/A...php?storyid=35
Responder Con Cita
  #11  
Antiguo 19-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que access es una "tabla plana", algo muy "doméstico", no es relacional ni... nada. No tiene procedimientos, triggers, etc.
Responder Con Cita
  #12  
Antiguo 19-06-2012
fpirovani fpirovani is offline
Miembro
 
Registrado: feb 2008
Ubicación: Entre Rios, Argentina
Posts: 24
Poder: 0
fpirovani Va por buen camino
Si, ya veo que firebird da muchas mas posiblidades....

Vos sabes que no lograba que se refrezcaran los datos en el DBgrid, el evento Post_Event se ejecutaba, hacia un refresh y nada, no aparecia el nuevo registro.
Descubri que hay que configurar la propiedad TransactIsolationLevel del ZConnection en tiReadCommitted. Por el nombre supuse que se referia a que debia leer las transacciones que se ejecutaron con exito, y asi fue.

Gracias por tu ayuda, esta muy bueno esto...
Responder Con Cita
  #13  
Antiguo 19-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por fpirovani Ver Mensaje
Gracias por tu ayuda, esta muy bueno esto...
Me alegro
Responder Con Cita
  #14  
Antiguo 19-06-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Casimiro Access si es relacional, aunque no cuenta con los triggers, etc.
En términos reales Access no es una base de datos, es más bien una fachada muy básica del verdadero motor: Jet4.

Access no soporta transacciones, pero si se está empleando ADO para acceder a éste es posible ya que ADO tiene soporte para eso (véase el método BeginTrans y otros de sus componentes). El asunto es que para funcionar las transacciones sobre Access requiere de una "capa" más ya que se requiere "emular" y tratar a Access como si fuera MS SQL Server, que es también otra fachada del motor Jet4, aunque ya algo como la gente
Se que la explicación anterior es medio burda, no sabría como explicarlo mejor.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #15  
Antiguo 19-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Delphius Ver Mensaje
Se que la explicación anterior es medio burda, no sabría como explicarlo mejor.
Se entiende
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manejo de 2 bases de datos David82 PHP 2 28-10-2008 08:04:33
Manejo de consultas SQL y Bases de datos metroyd SQL 0 07-10-2007 22:28:59
manejo bases de datos anubis Tablas planas 2 14-05-2007 09:26:43
Manejo de datos con DBGrids luxus Conexión con bases de datos 5 29-07-2006 06:47:03
manejo de la base de datos con sql altatrejo Conexión con bases de datos 0 22-08-2005 18:52:04


La franja horaria es GMT +2. Ahora son las 22:38:56.


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