S'il est souhaité de permettre à l'utilisateur de travailler avec une table externe (par exemple pour un combobox), le problème se pose alors de donner la possibilité à cet utilisateur de pouvoir éditer cette table.
Le code ci-joint montre comment on peut implémenter un browse qui permettra, via la méthode OnValid sur une ou plusieurs colonnes, de déclencher l'ajout d'une nouvelle ligne. Cet ajout se produit si, dans la ou les colonnes en question, l'utilisateur valide le champ, tout en étant sur la dernière ligne.
Pour supprimer une ligne, il suffit de noircir avec la souris la delete mark qui se trouve juste à gauche de la première colonne.
Le module compilé ci-inclus peut être placé, après adaptation à votre cas particulier, dans le répertoire DATA de Mercator. Ainsi, il s'auto-installe dans le menu "Outils / Modules".
En version SQL, les adaptations suivantes doivent être apportées :
- Remplacer les lignes
select 0
use (rep_data+'\tableperso') alias tableperso_br shared again
par
if !zprepview('tableperso','tableperso_br','','select * from tableperso')
return
endif
(création d'une vue dynamique qui sera utilisable comme une table locale de FoxPro)
- Avant le use situé juste avant le endproc, insérer les lignes suivantes (validation sous transaction du contenu de la table) :
=sqlSetProp(m.M_SQL,'Transactions',2)
if tableupdate(.T.)
=sqlCommit(m.M_SQL)
else
=zstoperror('Erreur validation tableperso')
tableRevert(.T.)
=sqlRollback(m.M_SQL)
endif
=sqlSetProp(m.M_SQL,'Transactions',1)
A télécharger :
0000000736.zip (0 Kb - 11/02/2004)