IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Ajout/modif de données: fenêtre fiche (1 seul enregistrement) VS directement dans champ table


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut Ajout/modif de données: fenêtre fiche (1 seul enregistrement) VS directement dans champ table
    Bonjour,

    Souvent, j'aimerai pouvoir appliquer avec WinDev certaines "recettes gagnantes" de Microsoft Access.
    Mais la philospohie de ces 2 produits est vraiment différente, ce qui peut compliquer la migration d'un projet Access vers WD.

    Voilà un de mes soucis.

    Dans une fenêtre contenant un champ table lié à un fichier de données HF (ou lié à une requête), je voudrai pouvoir modifier/ajouter/supprimer des enregistrements via ce champ table, mais en contrôlant ces opérations (validation d'une saisie, détection d'une modification d'une cellule, annulation d'une modification, etc.).

    Dans Microsoft Access, la conception d'une telle fenêtre est "enfantine" et le formulaire "feuille de données" correspondant propose de nombreux événements qui permettent aisément de superviser ces opérations, et notamment l'annulation des modifications ou d'un ajout.

    Après avoir un peu pratiqué WinDev 12, j'ai vraiment l'impression que le champ table est loin d'offrir des fonctionnalités équivalentes au mode "feuille de données" d'Access.

    Je voudrais savoir si dans vos applications WD les opérations d'ajout/modification sont uniquement réalisées via des fenêtres "Fiche" (mono-enregistrement modifié au moyen de n champs de saisie), où bien si vous maîtrisez l'ajout/modification des données via un champ table (ou peut-être un champ zone répétée ?).
    Comment vous y prenez-vous ?

    Je crois que cette question concerne tous les développeurs Access qui s'intéressent à WinDev.

    Merci pour vos réponses et commentaires constructifs.
    _

  2. #2
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Par défaut
    Bonjour
    j'utilise dans plusieurs projets des tables mémoires qui me permettent de saisir plusieurs lignes d'enregistrement, ensuite j'ai un bouton valider dans lequel je rajoute tous mes codes de contrôle.
    Tu peux aussi utiliser une table fichier et tu peux sur chauqe colonne ou chaque ligne (entrée/sortie/modif) ajouter du code à ta convenance.
    Gancau

  3. #3
    Membre Expert
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Je confirme que tout est faiusable via les différents codes possibles. Je ne peux quant à moi comparer avec un autre outil.

    Personellement, j'utilise des fiches dans la plupart des cas. Des tables seulement quand il y a peu de tests a faire et que l'utilisateur maitrîse bien ce concept.

  4. #4
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 393
    Par défaut
    Bonjour

    ça m'arrive de le faire dans les tables, l'interception se faire dans l'évènement "Sur sortie de ligne"
    Si c'est ok j'enregistre, sinon RepriseSaisie sur la colonne incriminée par exemple
    Ceci pour une table mémoire

    Pour une table fichier l'enregistrement n'est pas encore fait dans cet évènement donc le même principe doit s'appliquer

    Il y a juste un cas particulier à gérer (il me semble), lorsqu'on ferme la fenêtre (par la croix ou échap par exemple) le code de sortie de ligne n'est pas exécuté.
    ça se règle assez facilement en testant le champ précédent (dans le code du bouton de sortie, de type abandon : fonction ChampPrécédent()) : si c'est la table on force l'exécution de ce code

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Merci à gancau, mogwai162 et hpascal pour vos réponses intéressantes.

    Mon intérêt est totalement focalisé sur le champ table fichier.

    En fait, j'ai besoin d'afficher un grand nombre d'enregistrements avec de nombreuses colonnes, d'où l'utilisation du champ table lié à un fichier (plutôt qu'un champ table mémoire).

    Il n'est pas toujours possible de charger toutes les données en mémoire, donc il faut passer par un champ fichier. Non ?!


    Question: comment Annuler des modifications ?

    Je pense plus particulièrement au scénario suivant:
    • l'utilisateur modifie les données dans une ligne d'un champ table fichier;
    • puis il tente de donner le focus à un autre champ (ou de passer à une autre ligne);
    • avant que les données ne soient enregistrées, il faut vérifier leur validité et, justement elles ne sont pas valides...
    • on affiche alors une boîte de dialogue qui propose (cas 1) d'abandonner les modifications ou (cas 2) de reprendre la saisie pour apporter les corrections qui s'imposent.

    Si je comprends bien, il faut utiliser le traitement du champ table Sortie d'une ligne, et à ce stade les modifications ne sont pas encore reportées dans le fichier.
    Code Pseudo WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    ////// Traitement Sortie d'une ligne <champ table> //////
     
    SI MoiMême..Modifié ALORS
        // vérifier les modifications
        SI modificationsValides ALORS
            // les données sont enregistrées
     
        SINON
            // demander de choisir entre cas 1:corriger ou cas 2:annuler
     
            SI choix = corriger ALORS
                RepriseSaisie()
            SINON
                // comment abandonner les modifications
                // et réafficher les données de la ligne ???
     
            FIN
        FIN
    FIN

    La fonction RepriseSaisie() permet de rester sur la ligne incriminée, sans enregistrer les données, pour que l'utilisateur puisse rectifier sa saisie (c'est le cas 2). Ok ???

    Maintenant, pour ce qui concerne le cas 1, je ne vois pas comment annuler les modifications et retrouver (afficher) les données antérieures.

    Faut-il programmer l'annulation des modifications ou bien existe-t-il une fonctionnalité "10 fois plus vite" ?

    Quelqu'un a-t-il déjà développé ce genre de fonctionnalité ?
    _

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Citation Envoyé par =JBO= Voir le message
    Question: comment Annuler des modifications ?
    tu peux utiliser les transactions

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Merci pour ta suggestion Guardian.

    Citation Envoyé par Guardian Voir le message
    tu peux utiliser les transactions
    Si j'ai bien compris, à ce stade là les données ne sont pas encore enregistrées dans le fichier. Donc, la transaction n'est pas nécessaire.

    J'ai complété mon message précédent en ajoutant un pseudo code pour gérer la sortie de ligne du champ table quand les données sont modifiées, mais pas encore enregistrées.
    _

  8. #8
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 393
    Par défaut
    tu peux utiliser les transactions
    Ce n'est pas nécessaire, il y a plus simple :

    Dans le code "entrée en saisie de ligne" tu mémorises la ligne complète (MaTable[MaTable]) ce qui te donne la valeur de toutes les colonnes séparées par TAB.
    A mémoriser dans un variable globale à la fenêtre, ou dans le ..note de la table.

    En cas de problème tu peux remettre toutes les valeurs d'un coup avec un TableModifie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récuperer les données d'un fichier txt pour les insérer dans une Table
    Par sandokhane dans le forum Bases de données
    Réponses: 47
    Dernier message: 31/05/2014, 15h10
  2. Réponses: 2
    Dernier message: 13/07/2012, 13h08
  3. Réponses: 9
    Dernier message: 08/11/2010, 22h35
  4. [Toutes versions] sauvegarde de modifications directes dans une table
    Par piere42 dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/03/2009, 13h59
  5. Ajout/Modification de données - Evénements associés
    Par Domi2 dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/02/2008, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo