Utilisation des champs tableau

De RAD Studio
Aller à : navigation, rechercher

Remonter à Manipulation des composants champ - Index

Les champs tableau se composent d'un ensemble de champs de même type. Les types de champ peuvent être scalaires (par exemple à virgule flottante, chaîne) ou non scalaires (ADT), mais un champ tableau de tableaux n'est pas autorisé. La propriété SparseArrays de TDataSet détermine si un objet unique Data.DB.TField est créé pour chaque élément du champ tableau.

Il existe plusieurs façons d'accéder aux données contenues dans les types de champs tableau. Si vous n'utilisez pas de champs persistants, vous devez attribuer la valeur True à la propriété ObjectView de l'ensemble de données afin d'accéder aux éléments d'un champ tableau.

Utilisation de champs persistants

Vous pouvez mapper les champs persistants avec les différents éléments de tableau d'un champ tableau. Par exemple, supposons un champ tableau TelNos_Array, qui est un tableau de chaînes composé de six éléments. Les champs persistants suivants créés pour le composant table Customer représentent le champ TelNos_Array et ses six éléments :



 CustomerTelNos_Array: TArrayField;
 CustomerTelNos_Array0: TStringField;
 CustomerTelNos_Array1: TStringField;
 CustomerTelNos_Array2: TStringField;
 CustomerTelNos_Array3: TStringField;
 CustomerTelNos_Array4: TStringField;
 CustomerTelNos_Array5: TStringField;



 CustomerTELNOS_ARRAY: TArrayField;
 CustomerTELNOS_ARRAY0: TStringField;
 CustomerTELNOS_ARRAY1: TStringField;
 CustomerTELNOS_ARRAY2: TStringField;
 CustomerTELNOS_ARRAY3: TStringField;
 CustomerTELNOS_ARRAY4: TStringField;
 CustomerTELNOS_ARRAY5: TStringField;



A partir de ces champs persistants, le code suivant utilise un champ persistant pour affecter une valeur d'élément de tableau à une zone de saisie nommée TelEdit.



 TelEdit.Text := CustomerTelNos_Array0.AsString;



 TelEdit->Text = CustomerTELNOS_ARRAY0->AsString;



Utilisation de la propriété FieldValues d'un champ tableau

Vous pouvez accéder à la valeur d'un champ enfant avec la propriété FieldValues du champ tableau. FieldValues accepte et renvoie un Variant ; elle peut dont traiter et convertir des champs enfants de n'importe quel type. Par exemple,



 TelEdit.Text := TArrayField(Customer.FieldByName('TelNos_Array')).FieldValues[1];



 TelEdit->Text = ((TArrayField*)Customer->FieldByName("TelNos_Array"))->FieldValues[1];



FieldValues étant la propriété par défaut de TArrayField, vous pouvez aussi écrire le code suivant :



 TelEdit.Text := TArrayField(Customer.FieldByName('TelNos_Array'))[1];



Utilisation de la propriété Fields d'un champ tableau

TArrayField possède une propriété Fields qui vous permet d'accéder aux différents sous-champs. Cette possibilité est illustrée dans le code suivant, dans lequel un champ tableau (OrderDates) est utilisé pour remplir une boîte liste avec tous les éléments de tableau n'ayant pas NULL pour valeur :



 for I := 0 to OrderDates.Size - 1 do
 begin
   if not OrderDates.Fields[I].IsNull then
     OrderDateListBox.Items.Add(OrderDates[I]);
 end;



 for (int i = 0; i < OrderDates->Size; ++i)
   if (!OrderDates->Fields->Fields[i]->IsNull)
     OrderDateListBox->Items->Add(OrderDates->Fields->Fields[i]->AsString);



Voir aussi