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

VBA Access Discussion :

[AC2003-VBA]Saisie par lot : recherche pistes et conseils


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 40
    Points
    40
    Par défaut [AC2003-VBA]Saisie par lot : recherche pistes et conseils
    Salut,

    Je travaille sur un projet d'acquisition de terrains au sein d'une collectivité.
    Ma base de données s'appuiera essentiellement sur une table contenant environ 70 colonnes (hem, je suis pas trop pour mais bon faudra faire avec !)

    Chaque enregistrement dans cette table correspond à une parcelle.

    Le problème est que dans certains cas, il y'aura probablement un ensemble de parcelles aux attributs identiques (même propriétaire, même procédure d'acquisition, etc...) et que dans ces cas là, j'aimerai ne pas avoir à resaisir les 50 ou 60 champs qui ne changeront pas, mais plutot prévoir une petite routine qui automatise la copie des champ de la première parcelle saisie sur les n enregistrements suivants.

    J'ai quelques idées, mais trop peu d'expérience pour savoir laquelle mettre en oeuvre, et comment...
    J'avais notamment pensé à une procédure dans laquelle je récupererai le nombre x de parcelles ayant des attributs communs que je saisirai une seule fois et qui seraient répliqués sur les x-1 enregistrements suivants.
    Ou encore préparer des requêtes récupérant les champs à copier dans le dernier enregistrement, lié à un bouton qui à chaque clic copierait automatiquement les données de l'enregistrement précédent (via une requete UPDATE)...

    Quelle solution selon vous ? Avez vous des liens sur des topics du même genre (avec la multiplicité du jargon, je n'ai rien trouvé de probant :/)

    Merci !

    ibill

    Comme je ne serai pas l'utilisateur de l'outil, je dois être attentif à faire quelquechose de fonctionnel et intuitif (ça passera par des formulaires)

  2. #2
    Membre régulier Avatar de Arola78
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2003
    Messages : 133
    Points : 94
    Points
    94
    Par défaut
    Bonjour,
    J'ai eu à peu près le même problème. Voici ce que j'ai fait : dans un formulaire 1E-Ecran Sélection je saisie un Index puis Titre. Après contrôles d'usage (non blanc, non nul) j'actionne un bouton qui éxécute la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Valeurs ( [Index], [Mots Clés], Nom, Domaine, Nationalité, Géo, Quantité, Titre, Nominal, Devise, Année, Couleur, Cadre, Fond, Lettre, Etat, Dimensions, PrixAchat, DateAchat, Estimation, DateEstimation, Classement, Comments, Multiple, Coefficient, Lien )
    SELECT [Index], [Mots Clés], [Nom], [Domaine], [Nationalité], [Géo], [Quantité], [Titre], [Nominal], [Devise], [Année], [Couleur], [Cadre], [Fond], [Lettre], [Etat], [Dimensions], 0, Date(), 0, Date(), [Classement], [Comments], 2, 1, [Lien]
    FROM Valeurs
    WHERE Index=forms![1E-Ecran Sélection]!Index And Titre=forms![1E-Ecran Sélection]!Titre;
    Cette requête duplique l'enregistrement dont Index et Titre sont déjà présents dans la table Valeurs. A adapter pour faire plusieures duplications
    - Packard Bell SB85-P-020W Intel Core 2 Duo T7300 à 2,0 GHz RAM 2 Go NVIDIA GeForce 8600M GS Vista Edition Familiale
    - Acer VN7-791G-50UV - Windows 10 Home 64 bits - Intel Core i5-4210H 2,90 GHz - NVIDIA GeForce 940M
    Office Pro 2003

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 40
    Points
    40
    Par défaut
    Je note, merci...

    Suite à réunion ce matin qui a fait évoluer le schmilblick, je vais probablement devoir penser le truc différemment (des questions d'interface, et problematique du sujet un peu complexe, notamment dans la définition desdits lots !)...

    A priori, l'interface devra proposer la possibilité de sélectionner les parcelles faisant partie du lot (et donc préalablement saisies), pour ensuite y affecter les données qui ne seront entrées qu'une seule fois... ce sera plus souple, mais probablement plus dur a développer.

    En gros, cela devrait ressembler à un formulaire ou l'on choisit la sélection dans la partie supérieure, et ou on saisit dans différents onglets dans la partie inférieure... Enjoy

    Post à suivre, l'implémentation du projet n'est qu'au début !!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 40
    Points
    40
    Par défaut Solution...
    Bon, je crois que j'ai trouvé le moyen de faire un truc qui marche, et qui s'appuie sur une table, plusieurs forms et pas mal de code.

    Au niveau interface :
    Lorsque l'utilisateur veut faire une saisie en bloc, il lance un premier form qui permet de sélectionner les enregistrements à affecter. Ce premier frm ressemble a celui de caféine pour la recherche multicriteres : une section avec des filtres, et une zone de liste montrant tous les enregistrements correspondants. En double cliquant sur un enregistrement de la zone de liste, on ajoute l'enregistrement courant à la table 'sélection'.

    On peut appeler un form pour visualiser la sélection - et là j'ai encore un probleme (d'ailleurs si vous pouvez m'aider, suivre le lien ci dessous, merci !
    http://www.developpez.net/forums/sho...d.php?t=588338)


    Lorsque la sélection est ok, on passe à l'étape suivante qui charge un 2nd form utilisé pour choisir les champs et y entrer les données. En arrière plan, entre les 2 étapes, on crée la variable chaine correspondant à la partie "where " du SQL (de type update) qui sera utilisé à la fin.

    Le 2è form est basé sur le form de saisie initiale, mais il comporte des checkbox pour choisir si les champs sont a récupérer dans la requête de MAJ.
    (les checkbox jouent sur la propriété enabled des contrôles pour récupérer leur nom (qui est le même que celui des champs de la table à mettre à jour) et la valeur entrée dans ce champ.

    Lorsqu'on valide cette 2eme étape, une fonction génère alors la partie "set" du SQL (type champ = valeur).

    Le code SQL final est ensuite généré à partir des 2 morceaux précédents, plus la partie fixe (UPDATE table SET ...)

    Au final, cette grosse requête est exécutée par un docmd.runsql

    ...et ça marche

    Quand tout marchera nickel (reste ce problème de datasheet à regler !) je mettrai des exemples de code à la suite de ce post !

    ibill

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

Discussions similaires

  1. [RECHERCHE] Convertisseur vidéo par lot
    Par Lekno dans le forum Multimédia
    Réponses: 5
    Dernier message: 08/01/2017, 16h20
  2. Réponses: 10
    Dernier message: 19/07/2014, 14h34
  3. Réponses: 0
    Dernier message: 30/03/2010, 20h07
  4. [VBA]Limite de taille Mémo - Saisie par programmation
    Par Patrick78 dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/04/2007, 18h50
  5. [VBA-E] Recupéré une recherche par find
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/11/2006, 14h58

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