4D v13.4DELETE SUBRECORD |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v13.4
DELETE SUBRECORD
|
DELETE SUBRECORD ( subtabla ) | ||||||||
Parámetro | Tipo | Descripción | ||||||
subtabla | Subtabla |
![]() |
Subtabla de la cual borrar el subregistro actual | |||||
A partir de la versión 11 de 4D no se soportan subtablas. Un mecanismo de compatibilidad asegura el funcionamiento de este comando en bases compartidas; sin embargo, se recomienda remplazar las subtablas con tablas relacionadas estándar.
DELETE SUBRECORD borra el subregistro actual de subtabla. Si no hay subregistro actual, DELETE SUBRECORD no tiene efecto. Después de borrar el subregistro, la subselección actual de subtabla queda vacía. Como resultado, DELETE SUBRECORD no puede utilizarse para recorrer una subselección y borrar los subregistros seleccionados.
La eliminación de un subregistro no es definitiva hasta que el registro padre se guarde. La eliminación de un registro padre borra automáticamente todos sus subregistros.
Para eliminar una subselección, cree la subselección, borre el primer subregistros, recree la subselección, borre el primer subregistro, etc.
El siguiente ejemplo borra todos los subregistros de una subtabla:
ALL SUBRECORDS([Personas]Niños)
While(Records in subselection([Personas]Niños)>0)
DELETE SUBRECORD([Personas]Niños)
ALL SUBRECORDS([Personas]Niños)
End while
El siguiente ejemplo borra de la subtabla [Personas]Niños los subregistros en los cuales la edad de los niños es superior o igual a 12 años:
ALL RECORDS([Personas]) ` Selección de todos los registros
For($vlRegistro;1;Records in selection([Personas])) ` Para todos los registros en la tabla
` Buscar todos los registros que tienen subregistros que corresponden al criterio
QUERY SUBRECORDS([Personas]Niños;[Personas]NiñosEdad>=12)
` Bucle hasta que la búsqueda no encuentre más subregistros
While(Records in subselection([Personas]Niños)>0)
` Borrar el subregistro
DELETE SUBRECORD([Personas]Niños)
` Búsqueda nuevamente
QUERY SUBRECORDS([Personas]Niños;[Personas]NiñosEdad>=12)
End while
SAVE RECORD([Personas]) ` Guardar el registro padre
NEXT RECORD([Personas])
End for
Producto: 4D
Tema: Subregistros
Número
96
Lista alfabética de los comandos
Modificado: 4D v11 SQL
ALL SUBRECORDS
QUERY SUBRECORDS
Records in subselection
SAVE RECORD