Power Builder - Adiconar datos de una tabla a otra

 
Vista:

Adiconar datos de una tabla a otra

Publicado por Eduardo C. (1 intervención) el 30/04/2003 23:59:36
Una Consulta .

Soy nuevo y estoy desarrollando una aplicacion en PB8 , sobre una base
de datos ASA ( Adaptive Server Anhyware ), tengo una tabla empleados con un campo "AREA" donde guardo los trabajadores de cada area deseo en una Ventana selecionar o ingresar un area y que me traslade
de la tabla empleados aquellos que sean del area digitada a otra tabla
que se llama ASISTENCIA. los campos de amabas tablas son iguales
salvo que en asistencia tengo ademas el campo fecha.

Como debeo hacer este codigo. se puede utilizar Data Windows para hacer esto o se hace usando sentencia SQL ( Select , Insert ,IUpdate )
Por favor las respuestas que sean bien detalladas , de ser posible codigo, ya que es un trabajo que me urge.

mUCHAS GRACIAS...
sps.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Adiconar datos de una tabla a otra

Publicado por Ricardo (1957 intervenciones) el 01/05/2003 02:07:40
Algo que puedes hacer es utilizar los pipelines, son muy faciles y te ahorrarias algo de codificacion.

Ya que solo especificas el origen y destino, asi como el tipo de proceso, actualizacion, creacion, etc.

La otra es a pie, crear tu cursor para ir barriendo los registros de la tabla origen para irlos agregando a la tabla destino.

Para esta forma:
// Declaras cursor
DECLARE lee_datos CURSOR FOR
SELECT "empleados"."campo1", etc...
FROM "empleados"
WHERE "empleados."dato" = li_area
ORDER BY "empleados"."campo1" ASC ;

// Abres cursor
OPEN lee_datos ;

// Lees el primer registro
FETCH lee_datos INTO :ls_dato1;

// Si encuentra algo
DO WHILE sqlca.sqlcode = 0
// Agrega registro en tabla ASISTENCIA
INSERT INTO asistencia
( campo1, campo2, etc...)
VALUES (:ls_dato1, :ls_dato2) ;

// Leer siguiente registro
FETCH lee_datos INTO :ls_dato1;
LOOP

// Cierra cursor
CLOSE lee_datos ;

Esto es solo un ejemplo de como lo puedes hacer, consulta la ayuda dede PB para mayor referencia en el uso del CURSOR, FETCH, INSERT, para que puedas validar la existencia del registro, asi como los mensjes de error.

Un saludo y suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

otra solucion

Publicado por Milson Cardona (613 intervenciones) el 01/05/2003 03:25:50
Un saludo especial desde COLOMBIA
Bueno, una duda primero... este proceso lo vas ha hacer solo una vez, o lo seguiras necesitando en tu aplicación....

si es solo una vez es mejor que utilices las sentencias SQL INSERT, UPDATE..

pero si lo vas a necesitar para dejarlo en la aplicación es mejor que utilices una ventana con 2 DWs y un SLE
PASOS:
1- creas 2 DW object, 1 de la tabla de empleados que tenga como argumento de recuperación el AREA y el otro de la tabla de asistencia.
2 - creas una ventana le adicionas un SLE, 2 DW control y 2 botones
3 - a los DWs Control le asignas los DW object que creaste (dw_empleados y dw_)
4 - la idea es que el usuario digite en el SLE el área que desee, e inmediatamente tu recuperes en el DW de empleados todos los empleados que pertenezcan a dicha área haciendo RETRIEVE con el área digitada (esto va en el evento MODIFIED del SLE)
5 - despues en el boton (cb_Pasar) colocas el siguiente código para que pase los empleados del DW de empleados al DW de ASISTENCIA
FOR li_i = 1 TO dw_empleados.rowcount()
li_fila = dw_asistencia.insertrow(0)
dw_asistencia.setitem(li_fila,'area',dw_empleados.getitemstring(li_i,'area'))
dw_asistencia.setitem(li_fila,'fecha',fecha_deseada)
... mismo código para el resto de los campos que desees pasar
NEXT
6 - en el otro boton (cb_grabar) colocas el código para guardar los registros del DW ASISTENCIA
IF dw_asistencia.update(true,false) = 1 THEN
COMMIT USING vble_transaccional;
ELSE
ROLLBACK USING vble_transaccion;
messagebox('Error', 'no se pudo grabar los datos')
END IF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:otra solucion 2

Publicado por Milson Cardona (613 intervenciones) el 01/05/2003 03:26:46
PERDON no me alcanzo el POST

espero que te sea de alguna utilidad, además que cojas la idea que quiero transmitirte, ya que debes colocarle parte de tu lógica para resolver el problema... pero estoy seguro que de esta forma sale la solución.

SUERTE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar