ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

This content has been translated automatically.  Click here  to view the French version.
Help / Developing an application or website / Controls, windows and pages / Controls: Available types / Table control / Table based on a data file
  • Overview
  • Selecting, adding and modifying a row in a Table control based on a data file
  • Deleting a row from a Table control based on a data file
  • Managing calculated columns
  • Retrieving the content of a row, column or cell
  • Important
  • Value of the cell in the current row
  • Value of a cell in a specific row
  • Content of the current row
  • Content of row X
  • Content of the selected rows for a multiple selection
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
Others
Stored procedures
Overview
This page explains how to program Table controls based on a data file. There are multiple WLanguage functions to programmatically manipulate this type of Table controls.
To learn more on these functions, see the documentation. For more details, see: List of functions specific to Table controls.
Selecting, adding and modifying a row in a Table control based on a data file
A row can be selected with TableSelectPlus.
If no stored item is defined for the Table control, you can use the following syntax:
<Champ Table> = <Numéro de la ligne à sélectionner>
To add and modify rows in the Table control (or records in the data file), follow these two steps:
  1. Add or modify the record in data the file (via a form window or page, for example).
  2. Display the Table control again:
    • WINDEVAndroidiPhone/iPad refresh the Table control.
    • WEBDEV - Server code refresh the page.
Deleting a row from a Table control based on a data file
To delete a row from the Table control based on a data file, use TableDelete. TableDelete deletes the corresponding record from the data file.
WEBDEV - Server code In WEBDEV, the page must be redisplayed.
Important: To delete a record in the data file, do not use the HDelete function, otherwise data in the data file will be lost.
Managing calculated columns
The calculation formula of a calculated column must be defined in the "Display a row" event of a Table control.
Example of code in the "Display a row" event of the Table control:
// COL_MsgAlerte: une colonne calculée 
// La colonne COL_MsgAlerte affiche "Alerte" si COL_Stock<200
IF COL_Stock < 200 THEN
	COL_MsgAlerte = "Alerte"
ELSE
	COL_MsgAlerte = ""
END

By definition, a Calculated control is not linked to a field: the value assigned by a line's display code is not memorized after scrolling through the lines of the Table field using the vertical scrollbar..
For example, a "FOR EACH LINE" statement cannot be used to assign or retrieve the value of a calculated column for all the rows of the Table control.
If the Table control uses an in-memory data source ("Loaded in memory" option checked in the "Content" tab of the control description window), the value in the calculated columns will not be lost at runtime.
Retrieving the content of a row, column or cell

Important

The content of a row in a Table control based on a data file can be retrieved:
  • by retrieving the entire row.
  • cell by cell.

Value of the cell in the current row

The cell is identified by the name of the column. The following syntax must be used:
<Valeur> = <Nom de la colonne>
Example:
// COL_QTE est une colonne du champ Table
IF COL_QTE < 10 THEN
	Info("Quantité insuffisante")
END

Value of a cell in a specific row

The cell is identified by the name of the column. The following syntax must be used:
<Valeur> = <Nom de la colonne>[<Indice de la ligne>]
Example:
// Totalise le Prix présent dans la colonne COL_PHT 
// pour toutes les lignes de commande affichées
PrixTotal = 0
FOR Indice = 1 TO TABLE_COMMANDE.Occurrence
	PrixTotal = PrixTotal + COL_PHT[Indice]
END

Content of the current row

The following syntax must be used:
<Valeur> = <Champ Table>
You also have the ability to use the following syntax:
<Valeur> = <Champ Table>[<Champ Table>]

Content of row X

The following syntax must be used:
<Valeur> = <Champ Table>[<Indice de la ligne>]
Remark: The line index can be given by the TableSelect function..
// Récupère la ligne en cours du champ TABLE_CLIENT
LigneEnCours = TABLE_CLIENT

// Nom du client sélectionné
NomCli = COL_NOM[TableSelect(TABLE_CLIENT)]

Content of the selected rows for a multiple selection

The following syntax must be used:
<Valeur> = <Champ Table>[<Indice de la ligne>]
Remark: To find out the indices of the selected lines, use functions TableSelectCount and TableSelect..
// Trace le contenu des lignes sélectionnées
i is int
NbSelectionne is int = TableSelectOccurrence(TABLE_Produit) 
FOR i = 1 TO NbSelectionne 
	Trace("Ligne sélectionnée: " + ...
			TABLE_Produit[TableSelect(TABLE_Produit, i)]) 
END 

// Equivalent à:
// POUR TOUTE LIGNE SELECTIONNEE DE TABLE_Produit
//	Trace("Ligne sélectionnée: " + TABLE_Produit[TableSelect(TABLE_Produit, i)])
// FIN

Note: Table based on a data file fields are not available:
  • If the Table control contains proportional scrollbars.
  • If the Table control is "5.5 compatible".
  • In Table controls displayed by Combo Boxes.
Remark: The Multiselection property indicates the selection mode of a Table field.
Minimum version required
  • Version 9
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 09/21/2024

Send a report | Local help