Progress - "Buffer y Create" de la misma tabla

 
Vista:

"Buffer y Create" de la misma tabla

Publicado por Afrika (48 intervenciones) el 08/02/2008 20:06:11
Buenas tardes.

Estoy haciendo el for each de una tabla (buffer) pero al mismo tiempo quiero hacer un find de ella para crear varios registros que en ella faltan. Esto es lo que estoy haciendo.

DEFINE BUFFER bCeSecMat FOR CeSecMat.

FOR EACH bCeSecMat WHERE bCeSecMat.Cocia = 1 AND
bCeSecMat.Cosuc = 1 ......

FIND CeSecMat WHERE CeSecMat.Cocia = bCeSecMat.Cocia AND
CeSecMat.Cosuc = bCeSecMat.Cosuc .......

IF NOT AVAILABLE CeSecMat THEN DO:
CREATE CeSecMat.
ASSIGN
CeSecMat.CaCuposAb = bCeSecMat.CaCuposAb
CeSecMat.CaCuposWEB = bCeSecMat.CaCuposWEB

Lo que quiero hacer es crear el mismo registro de la persona pero con otra cedula diferente, pero me dice que el registro ya existe. Yo se que ya existe pero con otra cédula. Que debo hacer???
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:

Publicado por Miguel Angel (140 intervenciones) el 08/02/2008 22:33:44
Sería algo así:

tabla --> Nomina
Campos --> no_id
no_nombre
no_direcc
no_sueldo.

DEF VAR lv-id LIKE no_id.
DEF BUFFER b-nomina FOR nomina.

FOR EACH nomina WHERE ....... NO-LOCK:

FIND b-nomina WHERE b-nomina.no_nombre = nomina.no_nombre
NO-ERROR.
IF NOT AVAILABLE b-nomina THEN DO:
lv-id = "".
UPDATE lv-id COLON "Nuevo identificador".
CREATE b-nomina.
ASSIGN b-nomina.no_id = lv-id
b-nomina.no_nombre = nomina.no_nombre
b-nomina.no_direcc = nomina.no_direcc
b-nomina.no_sueldo = nomina.no_sueldo.
END.
END.

Por lo que veo en tu programa estás asignando todo el registro y debe de cambiar el identificador del empleado, el cual debes de capturar.

Saludos.
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