Voici un petit tuto pour élaborer un fomulaire contenant 2 listes liées

  • 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

NEUTS Jean-Luc

1 commentaire

#1  - jpw a dit :

Salut Jean-Luc,
j'ai visite le site, très intéressant.Je vais m'essayer sur la NSbase.
dommage qu'il n'y a pas la fonction quitte ce site, obligé de faire un clic sur "maison"
bye

Répondre

Écrire un commentaire

Quelle est la deuxième lettre du mot ftuwrh ?

Fil RSS des commentaires de cet article