**Les listes liées** Voici un petit tuto pour élaborer un formulaire contenant 2 listes liées {{ :lua:produit.png?200 |}} Une première liste déroulante (cbxCat) contient la liste des catégories de produit La deuxième liste déroulante (cbxProduit) contient la liste de produits de la catégorie sélectionnée dans la liste déroulante précédente La première liste est chargée à partir d'une requête (faite avec l'assistant) au chargement du formulaire (ActionOnLoaded) function Produit:ActionOnLoaded() self:loadComboboxFromTable("categories","categorie","cbxCat") end La deuxième liste est chargée lorsque la sélection de la première liste change (ActionOnChange) On récupére la catégorie sélectionnée dans la propriété "text" de la la liste déroulante "cbxCat" On construit la requête en conséquence Puis on charge la liste déroulante function Produit:cbxCatActionOnChange() local dataset=nsbase.datasetCreate("SQLQuery") local cat=self.setProperty('cbxCat.text') dataset.sql="select distinct produit from produits where categorie='" .. cat .. .. "' order by 1" self.setProperty('cbxProduit.items',dataset.getItems('produit')) end Voici le code complet : function Produit:ActionOnLoaded() self:loadComboboxFromTable("categories","categorie","cbxCat") end function Produit:loadComboboxFromTable(tableName,fieldName,combobox) local dataset=nsbase.datasetCreate("SQLQuery") dataset.sql='select distinct ' .. fieldName .. ' from ' .. tableName .. ' order by 1' self.setProperty(combobox .. '.items',dataset.getItems(fieldName)) end function Produit:cbxCatActionOnChange() local dataset=nsbase.datasetCreate("SQLQuery") local cat=self.setProperty('cbxCat.text') dataset.sql="select distinct produit from produits where categorie='" .. cat .. .. "' order by 1" self.setProperty('cbxProduit.items',dataset.getItems('produit')) end