Datasource et ControlDataSource

Quelle est la différence entre la propriété Datasource et ControlDataSource

DataSource est la source directe de données du composant. Elle est isolée des autres composants. La source peut être une vue ou une table en mode édition. La liste déroulante indiquera les vues et tables possibles.

ControlDatasource précise le composant qui est porteur de la source de données. Sa propriété DataSource devra être vide. Il sera synchronisé sur le composant maître. En édition la liste déroulante listera les composants éligibles.

Sur certains composants (exemple : DBNavigator ) , n'ayant pas de propriété DataSource, le ControlDataSource est lié au formulaire par défaut (propriété ControlDataSource à vide)

Une utilisation possible : avoir plusieurs DBGrids dans un même formulaire avec des sources de données différentes, on leur associera un DBNavigator chacun, pour naviguer, editer...

Le rôle de la propriété ControlDataSource a pris son sens avec l'arrivée des DBTreeView (arbres). Exemple : association d'un DBGRid au DBTreeView,  le DBTreeview affiche la structure des données, le DBGRid affiche le détail.

LUA : Les DBGrids

Comment utiliser un DBGRID en LUA

 

Récupérer le dataset d'un dbgrid 

local ds=nsbase.datasetCreate("self.dbgrid1")

 

Récupérer la valeur d'un champ

local id=ds.getFieldname("id")

 

Manipuler les enregistrements

ds.next()

 

Changer le datasource , assignation d'une table

self.setProperty('DBGrid1.DataSource','table_contact')    

 

Changer le datasource , assignation d'une vue (requête stockée)

self.setProperty('DBGrid1.DataSource','ListeContacts')    

 

Changer le datadasource par une requête SQL

self.setProperty('DBGrid1.DataSource','select * from contacts')    

ou

local query='select * from contacts')
self.setProperty('DBGrid1.DataSource','query)