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

Contribuez Discussion :

LibreOffice Base (7+) : Comment copier le record actuel a la fin de la table et l'afficher (par bouton)


Sujet :

Contribuez

  1. #1
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut LibreOffice Base (7+) : Comment copier le record actuel a la fin de la table et l'afficher (par bouton)
    Méthode applicable par le biais d'un bouton et d'une macro disposé sur le formulaire de consultation des enregistrements de la table concerné.

    1- ajouter une nouvelle macro au sein du document

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub DUPLIREC_ToLast()
    	DIM sVal,strSQL as string
    	Dim oStatement,oForm As Object
    	oForm = ThisComponent.Drawpage.Forms.getByName("Form_Inventaire")
    	sVal =oForm.getByName("txtNOM").text
    	oStatement = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement()
       	strSQL ="INSERT INTO TAB_INVENTAIRE(TYPE, SERIEDUTYPE, NOM, DATE_ACHAT, BUDGET_ACHAT, FOURNISSEUR, SERIALNUMBER, MARQUE, SYSTEMES, RAM, SSD, SALLE) SELECT TYPE, SERIEDUTYPE, NOM, DATE_ACHAT, BUDGET_ACHAT, FOURNISSEUR, SERIALNUMBER, MARQUE, SYSTEMES, RAM, SSD, SALLE FROM TAB_INVENTAIRE WHERE NOM='"+sval+"' ;"
    	oStatement.execute(StrSQL)
    	oForm.moveToInsertRow
    	oForm.Last
    END SUB
    il est necessaire de changer le nom du formulaire, et celui du controle textbox: "txtNOM" et "Form_Inventaire" en fonction des vôtres.

    il est nécéssaire de modifier la commande SQL en foncion du nom de votre table, et de vos champs de données necessaire à la copie: ( NOMS DE CHAMPS ET TABLE EN ITALIQUE )

    INSERT INTO TAB_INVENTAIRE(TYPE, SERIEDUTYPE, NOM, DATE_ACHAT, BUDGET_ACHAT, FOURNISSEUR, SERIALNUMBER, MARQUE, SYSTEMES, RAM, SSD, SALLE)
    SELECT TYPE, SERIEDUTYPE, NOM, DATE_ACHAT, BUDGET_ACHAT, FOURNISSEUR, SERIALNUMBER, MARQUE, SYSTEMES, RAM, SSD, SALLE FROM TAB_INVENTAIRE
    WHERE NOM='"sval+"' ;"

    ATTENTION CEPENDANT: IL EST EVIDEMENT IMPOSSIBLE DE COPIER DES CHAMPS DEFINI COMME CLE UNIQUE......., je présupose que vos enregistrements sont basés sur un identifiant unique autoincrémenté.

    traduction litterale de la commande SQL:
    : j'insert dans un nouvel enregistrement les champs listé de la table cité
    : je remplis les précédent champs avec une selection de champ a partir de la table cité
    : mais seulement a partir de l'enregistrement qui contient la valeur contenu par le textbox actuel "txtNOM" du formulaire 'Form_Inventaire"
    2 -poser un bouton sur le formulaire et associez lui sur l'évènement "éxecuter" la marco précédente

    l'ajout du nouvel enregistrement se fait à la fin de la table, on fini donc la macro par un déplacement en fin de liste d'enregistrements.
    Je vous conseil de lancer un rafraichissement du formulaire avant de pointer vers le dernier enregistrement. ( insérer votre fonction perso juste avant)

  2. #2
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    Attention, ne fonctionne qu'en édition de table, pas en mode recherche avec filtre....
    il faudrais dans la macro faire une reference absolu au formulaire et non relative afin que cela fonctionne aussi en mode filtré.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/02/2022, 13h02
  2. Réponses: 1
    Dernier message: 29/11/2021, 16h57
  3. Réponses: 0
    Dernier message: 19/11/2021, 15h42
  4. Réponses: 5
    Dernier message: 04/07/2006, 11h29
  5. Comment copier une clé de la base des registres ?
    Par annecyrond dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2003, 07h53

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