Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Actualizar registros individualmente

Buenos dias....
tengo un tema que le doy vueltas y vueltas y hasta ahora no consigo solucion...
tratare de ser lo mas explicito posible...
se trata de un concesionario de comidas.... la cual subvenciona 1 sola comida al dia, pero como las computadoras no estan en red y tienen otras sucursales... a veces los comensales pueden comer en un lugar e ir a otro y cenar
la informacion que se graba es la siguiente

Cita:
Cabecera
NumeroTicket-----Fecha----CodigoTrabajador-----
0000000001------01/11/2011-----000325
0000000002------01/11/2011-----000245
0000000003------01/11/2011-----000999
0000000004------01/11/2011-----000657
0000000005------01/11/2011-----002144
0000000006------01/11/2011-----000325
Cita:
Detalle
NumeroTicket-----Producto-------Cantidad---Subvencion
0000000001------00001----------1------------0
0000000002------00001----------1------------0
0000000003------00001----------1------------0
0000000004------00001----------1------------0
0000000005------00001----------1------------0
0000000006------00001----------1------------0
despues de procesar deberia quedar asi

Cita:
Detalle
NumeroTicket-----Producto-------Cantidad---Subvencion
0000000001------00001----------1------------1
0000000002------00001----------1------------1
0000000003------00001----------1------------1
0000000004------00001----------1------------1
0000000005------00001----------1------------1
0000000006------00001----------1------------0
Si se dan cuenta el ticket 00000006 es de la misma persona el mismo dia.. entonces el segundo consumo no se subvenciona...

alguna idea?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 09-11-2011
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
¿Esto es lo mismo del otro día?.
Responder Con Cita
  #3  
Antiguo 09-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Esto es lo mismo del otro día?.
asi es.. solo que aqui he tratado de simplificar la base del problema.. se que con un query no lo podre solucionar, tendre que hacer un "barrido" (recorrer) la tabla de detalle
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 09-11-2011
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 te has parado a pensar que si allí no te contestó nadie puede ser porque no se entienda bien lo que preguntas?
Yo todavía no lo tengo muy claro, la verdad, entiendo por dónde van las cosas, pero claro, como para contestar algo, no.
Deberías especificar tablas, campos, claves entre ellos, etc. creo que eso aclararía bastante las cosas.
Responder Con Cita
  #5  
Antiguo 09-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿No te has parado a pensar que si allí no te contestó nadie puede ser porque no se entienda bien lo que preguntas?
Yo todavía no lo tengo muy claro, la verdad, entiendo por dónde van las cosas, pero claro, como para contestar algo, no.
Deberías especificar tablas, campos, claves entre ellos, etc. creo que eso aclararía bastante las cosas.
claro que siii.... pero mas que una solucion tacita busco ideas para la solucion, basicamente el problema se resume a....
solo grabar un dato en un campo x cuando el consumo del dia sea solo 1 y grabar en ese mismo campo el valor o (cero) cuando el consumo del dia sea mas de 1
la cosa es como hacerlo...
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 09-11-2011
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
¿Pero importa el producto, puede ser otro o da igual, con tal de que sea el mismo trabajador?. Es por día, no?, ¿si la fecha es otra entonces no cuenta?.
Falta aclarar las cosas, que como tú lo sabes, te parece que se da por hecho que es así, pero nosotros no lo sabemos
Además, esos ejemplos que has puesto, la tabla detalle, no lo entiendo, ¿son dos tablas detalles?, en una debe quedar 1 y en la otra cero?
Responder Con Cita
  #7  
Antiguo 09-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero importa el producto, puede ser otro o da igual, con tal de que sea el mismo trabajador?. Es por día, no?, ¿si la fecha es otra entonces no cuenta?.
Falta aclarar las cosas, que como tú lo sabes, te parece que se da por hecho que es así, pero nosotros no lo sabemos
Además, esos ejemplos que has puesto, la tabla detalle, no lo entiendo, ¿son dos tablas detalles?, en una debe quedar 1 y en la otra cero?
ok Casimiro.. mas detalles

el consumo debe ser por dia... si es de un dia diferente no importa...
los productos... normalmente es solo uno (aunque quiero dejar abierta la posibilidad de que puedan ser mas)
la primera tabla de detalle es como se graba la informacion con la subvencion en o (cero)
la segunda tabla es como debe quedar despues de generar el proceso ? (que aun no se como hacer)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 09-11-2011
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
Vale, entonces creo que va a ser fácil con un trigger, ¿es firebird, verdad?
Responder Con Cita
  #9  
Antiguo 09-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
lamento decirte que no
es MS SQL server
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 09-11-2011
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
Pero supongo que tiene triggers.

Sólo tienes que crear uno en el beforeinsert, que haga un count de la cantidad por producto y trabajador.
Si es cero entonces cambias el campo por 1, si es mayor entonces lo cambias por 0.
A ver si te doy un ejemplo...
Responder Con Cita
  #11  
Antiguo 09-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
creo que nos estamos confundiendo un poco...
esa parte si esta controlada... osea.. el sistema busca cada vez que se hace un consumo si es que el trabajador ya hizo algun consumo ese mismo dia

el problema es que la informacion como no esta en red. se centraliza en una computadora central (hay un proceso que genera un archivo de texto para envio y el sistema procesa esa informacion y lo actualiza)

como el trabajador puede comer en cualquier lugar (de los n puntos instalados), debo reprocesar la informacion para acomodar las subvenciones.. se entiende ahora?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #12  
Antiguo 10-11-2011
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
¿Entonces son ficheros de texto?
Responder Con Cita
  #13  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Entonces son ficheros de texto?
No, no son ficheros de texto.... el sistema envia la informacion a la computadora donde se centraliza via archivo de texto, el cual abre ese archivo de texto y unifica, actualiza, complementa la informacion de los demas puntos de venta
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #14  
Antiguo 10-11-2011
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
Puede que esté un poco confundido, pero no logro comprender "el entorno" para aconsejarte, por ejemplo, dices que no son ficheros de texto, sin embargo dices:

Cita:
Empezado por oscarac Ver Mensaje
No, no son ficheros de texto.... el sistema envia la informacion a la computadora donde se centraliza via archivo de texto, el cual abre ese archivo de texto y unifica, actualiza, complementa la informacion de los demas puntos de venta

Si envías un archivo de texto, abres el archivo de texto y procesas el archivo de texto, entonces son archivos de texto


Puedo ser bastante torpe en ocasiones, pero en serio que no me entero de lo que necesitas

Hay algo que te estás saltando en las explicaciones
Responder Con Cita
  #15  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok
hay un sistema que controla que los consumos no se repitan en el mismo dia
lamentablemente el comedor tiene sucursales y las maquinas no estan en red
toda esa informacion se centraliza (via archivos de texto) en una computadora donde se realiza el proceso de facturacion

al aceptar informacion de otras sucursales nos dimos cuenta que los trabajadores podian comer el mismo dia en una u otra sucursal (como no estan en red.. no es posible saber si comen o no en otro lado)

cuando se sacaron los reportes para verificar los consumos.. nos dimos cuenta que los trabajadores podian consumir en "n" lugares el mismo dia... entonces la idea cual fue.... ok... vamos a "reprocesar" la informacion para que si existen mas de 1 consumo en un dia.. solo reconozcamos 1 consumo.. los "n" demas... los asume el trabajador

se entiende ahora?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #16  
Antiguo 10-11-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
mmm entonces los tiros van por cómo sincronizar la información, no del cómo determinar si un trabajor ya hizo un consumo en el día que corre. Lo último se resuelve fácilmente, a cómo te ha dicho Casimiro. Respecto al asunto de la sincronización, yo más bien creo que -con todo el respeto- están infrautilizando sus recursos y el sistema actual es deficiente al estar imposibilitado de sincronizarse en tiempo real.

Algo que no entiendo es: Dices que las computadoras no están en red. Pero, ¿De qué forma se intercambian las computadoras el archivo de texto con el que se sincronizan? ¿Con memoria USB, por medio de correos electrónicos, a mano?

La mejor solución que yo veo es que centralices el sistema en un sólo servidor. No sé que condiciones tienes, pero si puedes ver que las condiciones se prestan a la posibilidad de centralizar los datos, lo hagas de una vez por todas.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #17  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
parece que aun no me hago entender
en cada computadora, se efectuan los consumos...
Ejemplo...
Computadora Nº 001
viene el trabajador.. pasa su fotocheck por la lectora de codigos de barra.. el sistema lo identifica y hace el pedido de lo que quiere comer, antes de grabar el sistema valida que no haya efectuado un consumo anterior, el sistema graba emite un ticket como comprobante del consumo y listo... siguiente trabajador...

ahora digamos que este mismo señor.. regrese en la noche.. pero en lugar de ir a la computadora 001 va a la 002 y hace un pedido... al no estar en red... el sistema no tiene forma de saber que ya en la Nº 001 hizo un consumo

a la semana o cada quince dias... todos los tickets de todos los trabajadores de todas las computadores se envian (via archivos de texto en un USB o mail) a una computadora central donde se agregan los tickets...

si nos damos cuenta en el ejemplo que acabo de mencionar se tendria lo siguiente:

Cabecera
Cita:
Ticket---------fecha-----Trabajador
001-0000355 08/11/2011 000325
002-0011477 08/11/2011 000325
Detalle
Cita:
Ticket--------Producto-- Precio----Subvencion
001-0000355 --00001 ---5.00--------5.00
002-0011477 --00001 ---5.00--------5.00
mismo trabajador mismo dia... 2 tickets diferentes (dentro del ticket pueden registrarse varios productos)

la idea como dije era reprocesar (algo que ya esta grabado) y que quede la informacion asi

Detalle
Cita:
Ticket--------Producto-- Precio----Subvencion
001-0000355 --00001 ---5.00--------5.00
002-0011477 --00001 ---5.00--------0.00
espero me haya dejado entender
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #18  
Antiguo 10-11-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Ok. Creo que medio entiendo. Lo que quisiera saber que cómo le metes la información del archivo de texto a la computadora central. No habló del cómo llevas la información a ella. Ya has dicho que lo haces por USB o Correo. Estoy hablando si tú controlas el proceso de la interpretación del archivo que se le mete a la computadora central. Dinos cómo haces la interpretación del archivo. Es en esta etapa dónde tienes que hacer ese control y conversión que necesitas.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #19  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
gracias chris por la atencion y el interes,
seria una buena forma el controlarlo de esa forma, el problema es que ya existe informacion grabada

y me gustaria que sea un proceso posterior.. puesto que estoy pensando que el subsidio no siempre sera el mismo y puede ser que cambie en cualquier momento desde cualquier momento

ejemplo..
estamos 10-11-2011 y pueden decir... todos los consumos desde el 01-11-2011 el subsidio ya no sera solo del plato XXXX sino tambien del plato YYYY .. entonces se tendria que reprocesar toda la informacion desde el 01 al 10
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 10-11-2011 a las 20:27:08.
Responder Con Cita
  #20  
Antiguo 10-11-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 20
abelg Va por buen camino
Hola, mira no se si comprendi bien pero con los datos que proporcionaste pude plantear esta solución, cree 2 tablas temporales solo para simular tus tablas y 1 que si la uso para el resultado. (esta en SQL Server) pero creo puede aplicarse la misma lógica en cualquier otro.

Código SQL [-]
Create table #cabecera (
  nro_tiket varchar(10),
  fecha     datetime,
  cod_trab  varchar(6)
)

create table #detalle (
        nro_tiket varchar(10),
        producto  varchar(5),
        cantidad  int,
        subvencion int,
)

create table #result(
        orden int identity(1,1),
  nro_tiket varchar(10),
  cod_trab varchar(6),
  fecha datetime,
  producto varchar(5),
  cantidad int,
  subvencion int
)


insert into #cabecera values ('0000000001', '2011-01-11', '000325')
insert into #cabecera values ('0000000002', '2011-01-11', '000245')
insert into #cabecera values ('0000000003', '2011-01-11', '000999')
insert into #cabecera values ('0000000004', '2011-01-11', '000245')
insert into #cabecera values ('0000000005', '2011-01-11', '002144')
insert into #cabecera values ('0000000006', '2011-01-11', '000325')

insert #detalle values('0000000001', '00001', 1, 0)
insert #detalle values('0000000002', '00001', 1, 0)
insert #detalle values('0000000003', '00001', 1, 0)
insert #detalle values('0000000004', '00001', 1, 0)
insert #detalle values('0000000005', '00001', 1, 0)
insert #detalle values('0000000006', '00001', 1, 0)

insert #result
Select c.nro_tiket,
       c.cod_trab,
       c.fecha,
       d.producto,
       d.cantidad,
       d.subvencion
from #cabecera c
    inner join #detalle d on c.nro_tiket = d.nro_tiket


update #result set subvencion = 1

update #result set subvencion = 0
where cod_trab in (Select rt.cod_trab 
                   from #result rt
                   where #result.orden > rt.orden and 
                   rt.cod_trab = #result.cod_trab and 
                   rt.fecha = #result.fecha)

Select *
from #result

Drop table #cabecera
Drop table #detalle
Drop table #result

Salu2, espero sea lo que buscas.
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
Como actualizar registros!!! negrokau Varios 79 10-09-2011 04:32:21
actualizar registros stand Conexión con bases de datos 2 29-07-2010 10:10:24
actualizar registros pabloloustau Conexión con bases de datos 3 19-06-2010 20:40:39
dbedit que divida los caracteres individualmente juniorSoft OOP 2 27-11-2007 14:10:52
Actualizar Registros drkvergil Firebird e Interbase 3 12-09-2006 18:33:54


La franja horaria es GMT +2. Ahora son las 06:41:15.


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