Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
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
  #2  
Antiguo 10-11-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
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
  #3  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
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
  #4  
Antiguo 10-11-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 23
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
  #5  
Antiguo 10-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
Cita:
Empezado por abelg Ver Mensaje
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.

algo bastante parecido... el problema es que tu has utilizado una tabla nueva #result... y yo necesito hacerlo dentro de la misma tabla detalle
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 10-11-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 23
abelg Va por buen camino
Te recomiendo que luego puedas hacer un update a la tabla original.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 13:30:22.


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