Esther
2nd January 2008, 12:39
Hola a todos, feliz año.
Vereis, estoy realizando una sesión de mantenimiento, con pantalla tipo 3. Necesito que en el check.input de un campo haga una consulta de la misma tabla principal, y al hacerla pierdo el registro que estaba modificando.
¿Cómo hago que vuelva a apuntar a la ocurrencia que estaba modificando?
Muchas gracias.
igorrino
2nd January 2008, 13:43
Prueba ha en la segunda selec ponerle alias a la tabla poniendole asi un nombre diferente, de esta forma te debería mantener el valor antiguo
feliz añoooo .prueba y me dices
Esther
2nd January 2008, 14:44
Estoy intentándolo de este modo, y no me funciona, cambia la principal y no hace el filtro correctamente (devuelve muchas veces lo mismo, según veo debuggeándolo):
select tssma983.*
from tssma983 principal
where principal.ctra=:tssma983.ctra and
principal.cplt=:tssma983.cplt and
principal.pono<>:tssma983.pono
selectdo
if tssma983.vbaj=0 then
message("Alguna de las secuencias anteriores no tiene fecha vigor baja")
set.input.error("")
endif
endselect
No sé si es que estoy utilizando el alias de forma incorrecta, hasta ahora no sabía que podía dársele alias a las tablas.
igorrino
2nd January 2008, 15:00
select tssma983.vbaj:vbaja
from tssma983
where tssma983.ctra=:tssma983.ctra and
tssma983.cplt=:tssma983.cplt and
tssma983.pono<>:tssma983.pono
selectdo
if vbaja=0 then
message("Alguna de las secuencias anteriores no tiene fecha vigor baja")
set.input.error("")
endif
endselect
prueba con esto lo unico la variable vbaja declarala como el mismo campo tssma983.vbaj, yo creo que con hacer eso funcionara
Felipe_Saavedra
2nd January 2008, 21:28
O bien cambia el primer renglon de tu tabla alias
de
select tssma983.*
from tssma983 principal
where principal.ctra=:tssma983.ctra and
principal.cplt=:tssma983.cplt and
principal.pono<>:tssma983.pono
selectdo
if tssma983.vbaj=0 then
message("Alguna de las secuencias anteriores no tiene fecha vigor baja")
set.input.error("")
endif
endselect
a
select principal.vbaj
from tssma983 principal
where principal.ctra=:tssma983.ctra and
principal.cplt=:tssma983.cplt and
principal.pono<>:tssma983.pono
selectdo
if principal.vbaj=0 then
message("Alguna de las secuencias anteriores no tiene fecha vigor baja")
set.input.error("")
endif
endselect
saludos y Feliz 2008
Felipe Saavedra
Esther
3rd January 2008, 10:39
Funciona poniéndole alias al campo :):):)
Muchísimas gracias.
ignalf
10th January 2008, 17:45
Mirar la función "on.main.table()", puede ser mas limpia la programación.
Suerte.
lanare
15th February 2008, 16:41
Estoy intentándolo de este modo, y no me funciona, cambia la principal y no hace el filtro correctamente (devuelve muchas veces lo mismo, según veo debuggeándolo):
select tssma983.*
from tssma983 principal
where principal.ctra=:tssma983.ctra and
principal.cplt=:tssma983.cplt and
principal.pono<>:tssma983.pono
selectdo
if tssma983.vbaj=0 then
message("Alguna de las secuencias anteriores no tiene fecha vigor baja")
set.input.error("")
endif
endselect
No sé si es que estoy utilizando el alias de forma incorrecta, hasta ahora no sabía que podía dársele alias a las tablas.
Mi pana, hay una funcion en baan que te permite ahorrarte lo tedioso de un alias, la function es:
#include "itfgld0038" |* Store/Restore Table Buffer / Fields
esta presente desde baan IV-B2, ejemplo>
itfgld0038.dim.rcd(ttssma983)
itfgld0038.store.rcd.fields.no.lock.info(ttssma983)
select tssma983.*
from tssma983 principal
where principal.ctra=:tssma983.ctra and
principal.cplt=:tssma983.cplt and
principal.pono<>:tssma983.pono
selectdo
if tssma983.vbaj=0 then
message("Alguna de las secuencias anteriores no tiene fecha vigor baja")
set.input.error("")
endif
endselect
itfgld0038.restore.rcd.fields(ttssma983)