El método EditEntity realiza la acción especificada en un registro y hace que el registro esté disponible para la edición. El objeto Entity que se especifica en el parámetro entidad se debe haber obtenido previamente llamando a GetEntityByDbId o GetEntity, o bien, ejecutando una consulta.
$session->EditEntity(entity, edit_action_name);
Para obtener la lista de valores permitidos para el parámetro edit_action_name, llame al método GetActionDefNames del objeto EntityDef adecuado.
# Build Session object... # Edit the record whose ID is "BUGDB00000010" using the "modify" action $objtoedit = $sessionobj->GetEntity("defect", "BUGDB00000010"); $sessionobj->EditEntity($objtoedit,"modify");
Después de llamar al método EditEntity, puede llamar a los métodos del objeto Entity para modificar los campos del registro correspondiente. También puede obtener información adicional sobre el tipo de datos de los campos o sobre el registro en conjunto, o bien cambiar el comportamiento de un campo mientras tiene lugar la acción actual.
El método SetFieldValue coloca el valor especificado en el campo denominado. Si el campo se puede cambiar, este método establece el nuevo valor, a pesar de que el valor sea válido, y devuelve un valor String vacío.
Para determinar si un campo contiene un valor válido, obtenga el objeto FieldInfo para el campo y llame al método ValidityChangedThisSetValue del objeto FieldInfo para validar el campo. Si el campo no se puede cambiar, el valor String devuelto indica el motivo por el que no se puede cambiar el campo. Los valores típicos incluyen, por ejemplo, "no existe tal campo", "el registro no se está editando" y "el campo es de sólo lectura". Si el campo puede tener varios valores en lugar de sólo uno, utilice el método AddFieldValue para añadir cada nuevo valor. Aún se permite utilizar SetFieldValue; sin embargo, la utilización de SetFieldValue en un campo que ya contiene una lista de valores, reemplaza la lista completa con el único nuevo valor. Sólo se puede llamar a este método si el objeto Entity se puede editar.
$entity->SetFieldValue(field_name, new_value);
Para editar un registro existente, siga los pasos que se indican a continuación:
use CQPerlExt; #Obtención de la sesión my $session = CQSession::Build(); CQSession::UserLogon ($session, "admin", "", "SAMPL", "Lab3"); my $querydef = $session->BuildQuery ("defect"); $querydef->BuildField ("id"); $querydef->BuildField ("headline"); my $resultset = $session->BuildResultSet ($querydef); $resultset->Execute(); while (($resultset->MoveNext()) == 1) { $id = $resultset->GetColumnValue(1); $rec = $session->GetEntity("Defect", $id); $head = $rec->GetFieldValue("Headline")->GetValue(); $state= $rec->GetFieldValue("State")->GetValue(); print "$id, $head, $state. \n"; if ($id eq "SAMPL00000012") { $session->EditEntity($rec, "Modify"); $rec->SetFieldValue("description", "This defect has been modified."); $status = $rec->Validate(); if ( $status ){ $rec->Revert; die "Validation Error: $status \n" } else { # Only commit the changes if the validation is first successful. $rec->Commit(); } } } CQSession::Unbuild($session);