Acceder a valores de campo de índice

La interfaz IAttributes representa una colección de campos de índice. Los elementos de la colección implementan la interfaz IAttribute.

Es posible acceder a los elementos de la colección por el índice (véase Usar colecciones de objetos) o por el nombre de campo de índice. Si no existe el campo especificado en la colección, se producirá una excepción.

En la siguiente tabla se muestra cómo acceder a campos de índice desde un script de indexación automática.

Lenguaje Acceder a un campo de índice por el índice Acceder a un campo de índice por el nombre
C# doc.Attributes[0] doc.Attributes["Name"]
Visual Basic .NET doc.Attributes(0) doc.Attributes("Name")
JScript .NET doc.Attributes(0) doc.Attributes("Name")
JScript this.Attributes(0) this.Attributes("Name")
VBScript Me.Attributes(0) Me.Attributes("Name")

Puede obtener y establecer el valor de un campo de índice mediante la propiedad Value de la interfaz IAttribute . Por ejemplo:

// C#
IAttribute attr = doc.Attributes("Name");
var current = attr.Value;
attr.Value = ...;

El tipo de valor depende del tipo del campo de índice. (Véase la siguiente tabla).

Tipo de campo de índice Tipo VARIANT Tipo .NET
DAT_Boolean VT_BOOL bool
DAT_Enumeration VT_BSTR string
DAT_SingleLine VT_BSTR string
DAT_MultipleLines VT_DISPATCH (IStringsCollection) IStringsCollection
DAT_RegularExpression VT_BSTR string
DAT_DateTime VT_DATE DateTime
DAT_Number VT_R8 double
DAT_Currency VT_CY double
DAT_Url VT_BSTR string

A los campos de tipo DAT_MultipleLines se les pueden asignar valores que sean matrices de cadenas u objetos de tipo IStringsCollection. La siguiente tabla contiene varios ejemplos.

Lenguaje Ejemplo
C# doc.Attributes["Authors"].Value = new string[] {"Bob", "Alice"};
Visual Basic .NET doc.Attributes("Authors").Value = new string() {"Bob", "Alice"}
JScript .NET doc.Attributes("Authors").Value = ["Bob", "Alice"];
JScript this.Attributes("Authors").Value = ["Bob", "Alice"];
VBScript Me.Attributes("Authors").Value = Array("Bob", "Alice")

A los campos de tipo DAT_DateTime se les pueden asignar valores que sean objetos de tipo Date (en VBScript o JScript) o System.DateTime (lenguajes .NET). La siguiente tabla contiene varios ejemplos.

Lenguaje Ejemplo
C# doc.Attributes["Date"].Value = System.DateTime.Now;
Visual Basic .NET doc.Attributes("Date").Value = System.DateTime.Now
JScript .NET doc.Attributes("Date").Value = System.DateTime.Now;
doc.Attributes("Date").Value = new Date(...);
doc.Attributes("Date").Value = (new Date(...)).getVarDate();
JScript this.Attributes("Date").Value = new Date(...);
this.Attributes("Date").Value = (new Date(...)).getVarDate();
VBScript Me.Attributes("Date").Value = CDate(...)
Me.Attributes("Date").Value = Now

A los campos de tipo DAT_Currency se les pueden asignar valores que sean números de cualquier tipo u objetos de tipo Currency (en VBScript), System.Decimal (en lenguajes .NET) o System.Runtime.InteropServices.CurrencyWrapper (en lenguajes .NET). La siguiente tabla contiene varios ejemplos.

Lenguaje Ejemplo
C# doc.Attributes["Amount"].Value = 123.456;
doc.Attributes["Amount"].Value = 123.456m;
doc.Attributes["Amount"].Value = new System.Runtime.InteropServices.CurrencyWrapper(123.456m);
Visual Basic .NET doc.Attributes("Amount").Value = 123.456
doc.Attributes("Amount").Value = 123.456D
doc.Attributes("Amount").Value = new System.Runtime.InteropServices.CurrencyWrapper(789.012D)
JScript .NET doc.Attributes("Amount").Value = 123.456;
doc.Attributes("Amount").Value = new System.Decimal(123.456);
doc.Attributes("Amount").Value = new System.Runtime.InteropServices.CurrencyWrapper(123.456);
JScript this.Attributes("Amount").Value = 123.456;
VBScript Me.Attributes("Amount").Value = 123.456
Me.Attributes("Amount").Value = CCur(123.456)

26.03.2024 13:49:49

Please leave your feedback about this article

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.