MPOLO S.L. - Departamento Calidad
2004-08-04 06:59:47 UTC
Estimado grupo:
Tengo una tabla creada con create cursor llamada xmedicion. En el siguiente
código:
create cursor xmedicion (padre c(15),hijo c(15),partida c(7), descrip
c(100), cantidad y, longitud y, anchura y, altitud y, parcial y)
&& Cargo varios registros en xmedicion mediante un append from
Entonces corro la siguiente rutina de actualizacion:
select xmedicion
go top
do while !eof()
wait window " Asignando mediciones al componente "+xmedicion.hijo
timeout .5
select capipart from xcapi inner join xcapipar on
xcapi.codea=substr(xcapipar.capipart,1,3) and
xcapipar.codecomp=xmedicion.hijo
where codecapi=xmedicion.padre into cursor xcapito
replace partida with
iif(reccount("xcapito")=1,alltrim(xcapito.capipart),"") in xmedicion
skip
enddo
Este bloque sería exactamente igual a este otro ( en efectos claro):
select xmedicion
scan for !eof()
wait window " Asignando mediciones al componente "+xmedicion.hijo
timeout .5
select capipart from xcapi inner join xcapipar on
xcapi.codea=substr(xcapipar.capipart,1,3) and
xcapipar.codecomp=xmedicion.hijo
where codecapi=xmedicion.padre into cursor xcapito
replace partida with
iif(reccount("xcapito")=1,alltrim(xcapito.capipart),"") in xmedicion
endscan
Lo curioso del tema es que ninguno de los dos anda correctamente. Si
inhabilito la linea del replace, el scan funciona de principio a fin, por el
contrario si lo dejo habilitado, el scan se corta en el primer ingreso, es
decir, modifica el primer registro y se corta
Es más, si hago:
select xmedicion
scan for !eof()
wait window " Asignando mediciones al componente "+xmedicion.hijo
timeout .5
replace partida with "" in xmedicion
endscan
Tampoco funciona.
Lo raro es que antes si que funcionaba, El cursor es en memoria, no tiene
índices, no me explico que puede estar pasando
Gracias por su ayuda
Saludos
Ing. Martin R Sanchez Arnoletto
Menorca
Tengo una tabla creada con create cursor llamada xmedicion. En el siguiente
código:
create cursor xmedicion (padre c(15),hijo c(15),partida c(7), descrip
c(100), cantidad y, longitud y, anchura y, altitud y, parcial y)
&& Cargo varios registros en xmedicion mediante un append from
Entonces corro la siguiente rutina de actualizacion:
select xmedicion
go top
do while !eof()
wait window " Asignando mediciones al componente "+xmedicion.hijo
timeout .5
select capipart from xcapi inner join xcapipar on
xcapi.codea=substr(xcapipar.capipart,1,3) and
xcapipar.codecomp=xmedicion.hijo
where codecapi=xmedicion.padre into cursor xcapito
replace partida with
iif(reccount("xcapito")=1,alltrim(xcapito.capipart),"") in xmedicion
skip
enddo
Este bloque sería exactamente igual a este otro ( en efectos claro):
select xmedicion
scan for !eof()
wait window " Asignando mediciones al componente "+xmedicion.hijo
timeout .5
select capipart from xcapi inner join xcapipar on
xcapi.codea=substr(xcapipar.capipart,1,3) and
xcapipar.codecomp=xmedicion.hijo
where codecapi=xmedicion.padre into cursor xcapito
replace partida with
iif(reccount("xcapito")=1,alltrim(xcapito.capipart),"") in xmedicion
endscan
Lo curioso del tema es que ninguno de los dos anda correctamente. Si
inhabilito la linea del replace, el scan funciona de principio a fin, por el
contrario si lo dejo habilitado, el scan se corta en el primer ingreso, es
decir, modifica el primer registro y se corta
Es más, si hago:
select xmedicion
scan for !eof()
wait window " Asignando mediciones al componente "+xmedicion.hijo
timeout .5
replace partida with "" in xmedicion
endscan
Tampoco funciona.
Lo raro es que antes si que funcionaba, El cursor es en memoria, no tiene
índices, no me explico que puede estar pasando
Gracias por su ayuda
Saludos
Ing. Martin R Sanchez Arnoletto
Menorca