Power Builder - Problema con el Fetch

 
Vista:

Problema con el Fetch

Publicado por Eduardo C. (75 intervenciones) el 01/07/2008 17:33:01
Ayuda.

Resulta que tengo una aplicacion que graba registros en una tabla mediate insert, pero los datos originales los consigue dentro de otra tabla a traves de un cursor. lo que sucede es que al ejecutar el cursor, no avance los registros de la tabla origen y se queda en la primera fila. El codigo es mas o el siguiente

// Declare NewCURSOR cursor for Select campo1,campo2, from tabla where ....;
//
Open NewCURSOR;

Fetch NewCursor into :var1, :var2,:var3 ....

DO UNTIL SQLCA.SQLCODE=100

INSERT INTO .....
MESSAGEBOX ( " AVISO " , " Grabo Registro " )
Fetch next NewCURSOR into :var1, :var2, :var3 ....

LOOP

CLOSE NewCursor;

El problema es que siempre me graba el primer registro del cursor y no avanza al siguiente a pesar de que son varios registros.

No se como solucionarlo. gracias de antemano.

Eduardo C.
Lima-Peru
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:Problema con el Fetch

Publicado por amilcar (407 intervenciones) el 01/07/2008 18:43:50
el fetch esta mal puesto, deberia ir asi

DO UNTIL SQLCA.SQLCODE=100
Fetch NewCursor into :var1, :var2,:var3 .... // por cada vuelta lee un registro
loop

espero te sirva
saludos desde argentina
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:Problema con el Fetch

Publicado por Eduardo c.  (1 intervención) el 02/07/2008 23:55:39
Encontre el error
dentro del Do Until --- Loop luego del insert into...
le coloque un commit;
resulta que el commit me cierrra el cursor, entonces al hacer el siguiente fetch nuevamente me toma el primer registro.

solucion queitar el commit; del Do Until ... Loop
y colocarlo al final...

gracias
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:Problema con el Fetch

Publicado por Jorge (3 intervenciones) el 09/07/2008 02:25:19
Eduardo tengo un problema parecido al tuyo puedes ayudarme aca solo inserta el ultimo registro, existiendo 5 filas, puesto q lo compruebo llenando un DDLB_PRUEBA.

Integer nResp,nfila
STRING vidasignatu,videspe,vciclo,vidalu
nResp=MessageBox("Sistema de Evaluaciones","Desea registrar un nuevo alumno?",Question!,YesNo!)
If nResp=1 Then

If dw_1.Update() <> -1 then
Commit;
Else
Rollback;
End If
End If
sle_2.text=tab_1.tabpage_1.dw_1.getitemstring(dw_1.GetRow(),"idespe")
sle_3.text=tab_1.tabpage_1.dw_1.getitemstring(dw_1.GetRow(),"ciclo")
vidalu=tab_1.tabpage_1.dw_1.getitemstring(dw_1.GetRow(),"idalumno")

DECLARE cur_asignatura CURSOR FOR
SELECT SGA_ASIGNATURA.IDASIGNATURA,SGA_ASIGNATURA.IDESPE,SGA_ASIGNATURA.CICLO
FROM SGA_ASIGNATURA
WHERE SGA_ASIGNATURA.IDESPE=:SLE_2.TEXT AND SGA_ASIGNATURA.CICLO=:SLE_3.TEXT;

integer c
OPEN cur_asignatura;
FETCH cur_asignatura INTO :vidasignatu, :videspe, :vciclo;

DO UNTIL SQLCA.SQLCODE=100

INSERT INTO SGA_EVALUACIONES(idalumno,idasignatura,anoaca,semestre,conceptual,procedimental,actitudinal,unidad) VALUES (:vidalu,:vidasignatu,:sle_fecha.text,:ddlb_1.text,0.00,0.00,0.00,1);
ddlb_prueba.AddItem(string(vidasignatu) + Space(1)+videspe + space(1)+vciclo)
FETCH NEXT cur_asignatura INTO :vidasignatu, :videspe, :vciclo;


LOOP
commit;
CLOSE cur_asignatura;
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