Sunteți pe pagina 1din 5

Gua Arquitecto OpenEdge > ABL Referencia del lenguaje > ABL Referencia

ASIGNAR declaracin
Transfiere datos colocados previamente en el bfer de pantalla por una instruccin de entrada de datos o mueve datos especificada en la instruccin
ASSIGN por una expresin para los campos correspondientes y variables en la memoria intermedia.
El movimiento de datos

Sintaxis
ASIGNAR { [[INPUT] MARCO frame | BUSCA browse ] { field [= expression ]} [WHEN
expression ] } ... [NO-ERROR]
ASIGNAR { record [EXCEPTO field ...]} [NO-ERROR]
[MARCO frame | BUSCA browse ] field
El nombre del campo o variable ( field) que se fijar a partir del valor correspondiente que se encuentra en el bfer de pantalla o
expresin. El field debe ser calificado por un nombre de marco ( frame ) o navegar por nombre ( browse ) si field se especifica
como un widget de entrada de ms de un fotograma. Si field se configura a partir de expression , field puede incluir todos los
elementos que se definen para el lado izquierdo de una declaracin (=) Asignacin .
expression
Una expresin con un tipo de datos que es consistente con el tipo de datos de field . En este caso, la MAV determina el fieldvalor
de la expresin en vez de a partir de la memoria tampn de pantalla. Para obtener ms informacin acerca de expression , vase
la expresin de entrada de referencia.
CUANDO expression
Mueve los datos a la memoria intermedia slo si expression tiene un valor de TRUE. En este caso, expression es un nombre de
campo, nombre de la variable, o expresin cuyo valor es lgico. El AVM evala CUANDO expresiones al inicio de la tarea, antes de
cualquier asignacin tienen lugar.
NO-ERROR
Suprime errores ABL o mensajes de error que se producira y los desva a la manija del sistema ERROR-STATUS . Si se produce un
error, la accin de la declaracin no se hace y la ejecucin contina con la instruccin siguiente. Si la sentencia falla, los posibles
efectos secundarios persistentes de la declaracin se restituyen. Si la instruccin incluye una expresin que contiene otros
elementos ejecutables, como mtodos, el trabajo realizado por estos elementos puede o no puede hacer, dependiendo de la orden
de la MAV resuelve los elementos de expresin y la aparicin del error.
Para la declaracin ASSIGN SIN ERRORES, si una condicin de error se eleva, cada instancia del field se mantiene sin cambios.
Para comprobar si hay errores despus de una instruccin que utiliza la opcin NO-ERROR:
o Compruebe el error-STATUS: atributo ERROR para ver si el AVM plante la condicin de error.
o Compruebe si el ERROR-STATUS: atribuyen NUM-mensajes es mayor que cero para ver si el AVM genera mensajes de
error.Mtodos mango ABL utilizan en un bloque sin un callejn CATCH errores bloque tratan como advertencias y no
plantean ERROR, no establezca el ERROR-STATUS: atributo ERROR, pero aadir mensajes a la manija del sistema ERROR
STATUS. Por lo tanto, esta prueba es la mejor prueba para el cdigo usando mtodos de la manija sin bloques extremos
CATCH.Mtodos mango ABL utilizan en un bloque con un extremo CATCH aumento bloque ERROR y aadir mensajes al
objeto de error generado por el MAV. En este caso, la AVM no actualiza el mango del sistema ERROR STATUS.
o Utilice ERROR-STATUS: Get-Message ( message-num ) para recuperar un mensaje en particular, en message-num es 1
para el primer mensaje.
Si la declaracin no incluye la opcin NO-ERROR, puede utilizar un bloque final CATCH para controlar los errores que plantea el
comunicado.
Algunas otras notas de uso importantes sobre la opcin NO-ERROR:
o NO-ERROR no suprime los errores que se levante el tope o SALIR condicin.
o Una declaracin CATCH, que introduce un bloque CATCH final, es anlogo a una opcin de NO-ERROR, ya que tambin
suprime los errores, pero lo hace para todo un bloque de cdigo. Es diferente en que los mensajes de error estn
contenidos en un objeto de error basado en la clase (generada por el AVM o lanzado de forma explcita), en comparacin
con el mango del sistema ERROR STATUS. Adems, si los errores generados en la secuencia no son manejadas por un
bloque CATCH compatible, EN frase ERROR o UNDO declaracin, tampoco suprime el error, pero manejado con el
procesamiento de errores por defecto para ese tipo de bloque.
o Cuando una declaracin contiene la opcin NO-ERROR y reside en un bloque con un bloque CATCH final, la opcin NO-
ERROR tiene prioridad sobre el bloque CATCH. Es decir, un error generado en la cuenta con la opcin NO-ERROR no ser

manejada por un bloque final CATCH compatible. El error se redirecciona al mango del sistema ERROR STATUS como
normal.
o Si un objeto de error se lanza a una declaracin que incluya la opcin NO-ERROR, la informacin y los mensajes en el
objeto de error se utilizarn para establecer el identificador del sistema ERROR STATUS. Esta caracterstica de
interoperabilidad es importante para aquellos cdigo integradora que utiliza la tcnica de NO-ERROR tradicional con el
ms nuevo, el control de errores estructurado que cuenta con objetos de error y bloques extremos CATCH.
record
El nombre del bfer de registro con los campos establecidos, a partir de los valores correspondientes en el bfer de pantalla. El
nombramiento de un disco es una forma abreviada de la lista de cada campo de dicho registro de forma individual.
Para utilizar ASSIGN con un registro de una tabla definida para mltiples bases de datos, es posible que tenga que calificar el
nombre de la tabla de registro con el nombre de la base de datos. Consulte la frase Registro de entrada de referencia para ms
informacin.
EXCEPTO field
Todos los campos en el bfer de registro estn afectados a excepcin de los enumerados. Nombres de campo con un espacio.
Ejemplos
El siguiente procedimiento le pide un nmero de cliente y recupera el registro del cliente, si existe, o crea uno nuevo si no existe. Si se crea un nuevo
registro, el valor de la CustNum campo se asigna a partir del valor que ha introducido en respuesta a la declaracin PROMPT-FOR.
R-asgn.p
REPETIR:
PROMPT-PARA Customer.CustNum.
ENCONTRAR Cliente USO Customer.CustNum NO-ERROR.
Si no est disponible al cliente ENTONCES HACER:
CREAR Cliente.
ASIGNAR Customer.CustNum.
END.
ACTUALIZAR Cliente CON 2 COLUMNAS.
END.
El siguiente procedimiento cambia el nmero de pedido y la lnea nmero de un registro de pedido en lnea. (Se copia una lnea de pedido de un orden a
otro.) Establece los nuevos valores en variables y modifica el registro con una sola instruccin ASSIGN que contiene dos frases de asignacin en
forma field = expression . Por lo tanto, ambos campos se cambian en una sola sentencia.Debido a que la MAV registros re-ndices al final de
cualquier declaracin que cambia un valor de campo de ndice, y porqueOrderLine.OrderNum y OrderLine.LineNum se utilizan de forma conjunta en un
solo ndice, esta tcnica no genera un ndice hasta que ambos valores cambian.
R-asgn2.p
DEFINE neword VARIABLE COMO orden line.order-num ETIQUETA "Nuevo Orden".
DEFINE newordli VARIABLE COMO orden line.line-num ETIQUETA "New Order Line".
REPETIR:
PROMPT-PARA OrderLine.OrderNum OrderLine.LineNum.
ENCONTRAR OrderLine USO OrderLine.OrderNum Y OrderLine.LineNum.
SET newordli neword.
ENCONTRAR Orden DONDE Order.OrderNum = neword.
ASIGNAR
OrderLine.OrderNum = neword
OrderLine.LineNum = newordli.
END.
Notas
Si field es un entero y expression es un decimal, la AVM redondea el valor de la expresin antes de asignarlo. Si field es un
decimal y expression es un decimal, la AVM redondea el valor de la expresin para el nmero de decimales definidos para el
campo en el diccionario de datos, o definidas o implcitas para un campo o variable temp-mesa.
Si field es un tipo de matriz ABL (definida con MEDIDA EN) y expression no es una matriz, y no a identificar un elemento
concreto de la matriz, la tiendas de AVM expression en cada elemento de la matriz. Si usted identifica un elemento en particular,
la tiendas de AVM expression en el elemento especificado de la matriz.
Si tanto field y expression son los tipos de matriz ABL, las copias AVM los datos de todos expression elementos de la matriz en
los elementos correspondientes del field array. Esto se conoce como una copia en profundidad.
Una serie indeterminada es aquella en que el tamao de la medida an no es fijo. Una matriz determinada es uno en el que se fija
el tamao de extensin. Al copiar profunda una matriz a otra, se aplican las siguientes reglas:
o Si tanto la matriz en el lado izquierdo y el lado derecho de la ecuacin son determinadas matrices, el tamao de la
extensin debe coincidir o el AVM genera un error.
o No se puede asignar un conjunto indeterminado de una matriz determinada.
o Puede asignar cualquier matriz a una matriz indeterminada, pero no se puede asignar un valor escalar a una serie
indeterminada.
ABL le permite asignar arrays ABL y. NET array de objetos entre s. Cmo funciona un trabajo conjunto entre el ABL y. NET arrays
depende del tipo de matriz de field (el destino de la asignacin) y el tipo de matriz de expression (la fuente de la
asignacin).Para obtener ms informacin, vea los tipos de datos de referencia de entrada.
Si expression es un objeto basado en la manija de ABL (por ejemplo, una temperatura de-mesa, ProDataSet, widget o
socket),field debe ser un mbito temporal de la tabla, variable, o cualquier otro elemento de datos ABL definido como un mango
compatible. En este caso, la MAV asigna slo el identificador del objeto basado en la manija ABL a field , no todo el objeto y su
contenido.
Si cualquier field es un campo de un registro de base de datos, la declaracin ASSIGN actualiza el estado de bloqueo de registro a
EXCLUSIVA-LOCK antes de actualizar el registro.
Si algn field es parte de un registro obtenido con una lista de campos, la declaracin ASSIGN relee el expediente completo antes
de actualizarlo.
Si field es un mango, la expression en la mano del lado derecho de la asignacin correspondiente tambin debe evaluarse como
un valor de identificador que se especifica el uso de una referencia adecuada a un mango de objetos basado en la manija.Para
obtener ms informacin sobre los objetos referencias mango, consulte la seccin "Atributos y mtodos de referencia de la
manija" .
Durante la entrada de datos, una expresin de validacin definida para el campo en la base de datos o en una frase Formato
ejecuta slo si el widget asociado con el campo recibe el foco de entrada. Utilice el mtodo de validacin () para ejecutar una
expresin de validacin definido para un campo independientemente de si se recibe el foco de entrada o no.
Utilice una sentencia ASSIGN despus de una instruccin PROMPT-FOR o escribir cambia de un campo habilitado a la base de
datos. ASIGNAR mueve el valor de la memoria tampn de pantalla en el campo o variable.
Utilice la sentencia PROMPT-DE para recibir uno o ms campos de ndice de usuario, y se utiliza la instruccin FIND para encontrar
un registro que coincida con los valores de ndice. Si no se encuentra ningn registro, utilice la sentencia CREATE para crear un
nuevo disco y utilizar la instruccin ASSIGN para asignar los valores que el usuario que se proporciona al nuevo registro.
No se puede utilizar la sentencia SET en lugar de la declaracin PROMPT-FOR. La sentencia SET pide al usuario la entrada y luego
asigna esa entrada al registro en el bfer. Sin embargo, si no hay un registro disponible, SET no puede asignar los valores.
ASIGNAR no se mueve datos en un campo o variable si no hay datos en el campo de pantalla correspondiente. Hay datos en un
campo de pantalla si un despliegue de campo se realiz o si los datos se introducen en el campo. Si le solicitan-para un campo o
una variable que no ha sido representada en el marco e introducir espacios en blanco, la AVM no cambia el campo o variable, ya
que considera que el campo de pantalla cambia slo si el contador se distingue de lo que haba en el campo.
Si una sentencia ASSIGN referencia a un campo o variable que se utiliza en ms de una trama, se utiliza el valor en el marco de
ms reciente introduccin en el procedimiento.
Si escribe los espacios en blanco en un campo que nunca ha mostrado los datos, la funcin devuelve FALSE ENTRADO y la
instruccin SET o ASSIGN no actualiza el campo o variable subyacente. Adems, si el AVM marca un campo tal como se escribi, y
la declaracin PROMPT-DE solicita el campo otra vez y no se introduce ningn dato, la AVM ya no considera el campo entr.
Si utiliza un nico identificador, calificado con la declaracin ASSIGN, el compilador interpreta la referencia
como dbname.filename. Si el compilador no puede resolver la referencia como dbname.filename , trata de resolverlo
lo filename.fieldname .
Muchas asignaciones dentro de una nica instruccin ASSIGN son ms eficientes que las mltiples declaraciones ASSIGN. Se ahorra
el tamao de cdigo r y mejora el rendimiento.
La declaracin ASSIGN, cuando se utilizan en campos de bases de datos, las causas ASSIGN base de datos todos relacionados
dispara a ejecutar en el orden en que fueron asignados los campos. El ASSIGN desencadena despus de ejecutar todas las tareas
se han llevado a cabo. Si un disparador ASSIGN falla (o se ejecuta una instruccin RETURN con la opcin ERROR), todos los
cambios de base de datos se deshacen.
Puede asignar datos de objetos grandes desde una BLOB o memptr a otro, y de un CLOB, LongChar o personaje a otro. No se
puede asignar datos de objetos grandes entre BLOB y CLOB o MEMPTRs y LONGCHARs. Puede llevar a cabo, de forma indirecta,
mediante la instruccin COPY-LOB. Para obtener ms informacin, consulte la sentencia COPY-LOB entrada de referencia.
Tabla 9 enumera las conversiones de caracteres por defecto que el AVM realiza al asignar CLOB, LongChar y datos de
caracteres.Las referencias a CLOBCP y CLOBDB representan datos CLOB en cualquiera de las pginas del CLOB definido el cdigo o
la pgina de cdigos de la base de datos definida, respectivamente. Las referencias a la "pgina de cdigos fijo" representan la
pgina de cdigos de un objetivo LongChar variable establecida mediante la instruccin FIX-CODEPAGE.
Tabla 9: conversiones de caracteres por defecto con la declaracin ASSIGN
Cuando el campo de destino
es un archivo. ..
Y la expresin de origen se
traduce en una. . .
El AVM convierte el resultado de la
expresin de origen a. . .
LongChar CLOBDB -cpinternal o la pgina de cdigos fijo
LongChar CLOBCP Pgina de cdigos definido del CLOB o la
pgina de cdigos fijo
LongChar PERSONAJES -cpinternal o la pgina de cdigos fijo
CLOBDB PERSONAJES Pgina de cdigos definidos de la base de
datos
CLOBDB LongChar Pgina de cdigos definidos de la base de
datos
CLOBCP PERSONAJES Pgina de cdigos definido del CLOB
CLOBCP LongChar Pgina de cdigos definido del CLOB
PERSONAJES CLOBDB -cpinternal pgina de cdigos
PERSONAJES CLOBCP -cpinternal pgina de cdigos
PERSONAJES LongChar -cpinternal pgina de cdigos
Cuando se asigna el valor desconocido ( ? ) a un campo BLOB o CLOB, el AVM elimina los datos de los objetos asociados.
Puede asignar DATE, DATETIME, y los datos DATETIME-TZ. Cuando la expresin de tipo de datos en el lado izquierdo de la
instruccin de asignacin contiene ms informacin que la expresin de tipo de datos en el lado derecho proporciona (por
ejemplo, datetime-tz = date en que un valor DATETIME-TZ contiene ms informacin que un valor DATE), el valor del tiempo por
defecto para la medianoche y el valor del tiempo de zona por defecto es la zona horaria de la sesin. Cuando la expresin tipo de
datos en el lado izquierdo de la instruccin de asignacin contiene menos informacin que la expresin tipo de datos en el lado
derecho proporciona (por ejemplo,
date = datetime-tz en que un valor DATE contiene menos informacin que un valor DATETIME-TZ), el AVM convierte el valor
DATETIME-TZ de la fecha y la hora local de la sesin, luego cae la hora y la zona horaria.
Si expression es una invocacin de aislamiento de la nueva funcin, esta funcin se comporta de acuerdo con las reglas
especificadas para la nueva funcin (clases) cuando no operan en el contexto de una nueva declaracin .
Si expression se evala como un valor de referencia de objeto, field tambin debe ser un elemento de datos se define como un
tipo de clase o interfaz que es compatible con el tipo expression de acuerdo con las reglas para la asignacin de referencias a
instancias de clases definidas por la nueva declaracin. Para obtener ms informacin, consulte la declaracin NUEVA entrada de
referencia. Por lo tanto, se puede asignar una variable de referencia de objeto a otra variable de referencia de objeto cuando la
referencia de objeto de destino (en el lado izquierdo de la asignacin) se define por la misma clase, un superclase, o un interfaz de
la referencia de objeto est asignando (en el lado derecho de la asignacin). La referencia a un objeto de destino conserva su clase
o interfaz tipo definido para la compilacin. Sin embargo, despus de su asignacin, en tiempo de ejecucin, el destino representa
la subclase de field (o la clase que implementa la interfaz especificada por el field ) que se define por expression.
Si field tiene un tipo de clase que es una subclase ms bajo en la jerarqua de clases que el tipo de clase representado
porexpression , puede convertir expression al tipo de field se utiliza la funcin CAST, pero slo si expression es un super clase
que en realidad contiene una instancia del field tipo de clase. Si field tiene un tipo de clase que implementa una interfaz de tipo
representado por expression , puede convertir de manera similar expression utilizando la funcin CAST, pero slo
siexpression contiene en realidad una instancia del field tipo de clase. Para obtener ms informacin acerca de la funcin CAST,
consulte la funcin CAST entrada de referencia.
Despus de la asignacin, field contiene una copia del valor de referencia de objeto devuelto por expression , que apunta a la
misma instancia de objeto, no una copia del objeto al que hace referencia expression .
Aunque puede asignar una referencia de objeto a un campo temporal de la tabla se define como una clase
Progress.Lang.Objecttipo, no se puede asignar una referencia de objeto a un campo de una tabla de base de datos. Para obtener
ms informacin, consulte Desarrollo OpenEdge: Programacin orientada a objetos.
Ver tambin
Asignacin declaracin (=) , funcin CAST , referencia de objeto Clasista , mtodo COPY-conjunto de datos () , sentencia COPY-LOB , mtodo COPY-
TEMP-MESA () , tipos de datos , Expresin , FIX-CODEPAGE declaracin , funcin de entrada , PROMPT -FOR ,instruccin SET , UPDATE






http://documentation.progress.com/infocenter/openedge_architect/10.2B/index.jsp?topic=/com.openedge.pdt.langref.help/html_langref/langref-05-07.html







OpenEdge 10.2B estreno
Copyright 2009 Progress Software Corporation

S-ar putea să vă placă și