[Résolu][Base] Automatiser des nouvelles entrées

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Base] Automatiser des nouvelles entrées

Messagepar RobinC » 02 Mars 2018 17:30

Bonjour à tous !
Je suis complètement débutant sur base et dans les bases de données en général.
Je souhaite faire quelque chose qui me paraissait simple a priori, mais il semble que c'est plus compliqué que je ne le pensais et qu'il me faille utiliser des macros.

Voici mon problème :
Je veux créer un formulaire pour rentrer, une fois par an, les ventes annuelles de tous les produits répertoriés dans une table T_Produits, selon plusieurs catégories de ventes.

Je souhaite donc que ce formulaire contienne un bouton permettant de créer une nouvelle année de vente.
Lorsque la nouvelle année de vente est créée, je souhaite qu'une entrée soit crée automatiquement dans la table T_VenteAnnuelleProduit, pour chaque référence de produit contenu dans la table T_PRODUITS, avec la nouvelle année de vente et son nombre de ventes à zéro, dans chque catégorie de vente.
Ensuite, je souhaite pouvoir modifier le nombre de ventes pour les produits qui ont été vendus.

L'objectif est d'avoir un tableau modifiable qui présente tous les produits qu'ils aient été vendus ou non.
Je ne veux pas avoir à choisir l'année de vente, ou le produit dans une liste déroulante.

Je met en pièce jointe une version simplifiée de mon projet.


Pour ceux que ça intéresse, vous pouvez suivre une discussion sur le projet dans son intégralité ici :
https://forum.openoffice.org/fr/forum/viewtopic.php?f=9&t=57005
Pièces jointes
TEST.odb
(4.15 Kio) Téléchargé 23 fois
LibreOffice Version: 5.4.5.1 (x64) sous Windows 7
RobinC
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 12 Fév 2018 12:17

Re: [Base]Automatiser des nouvelles entrées

Messagepar Piaf » 02 Mars 2018 20:04

Bonsoir
Un exemple à tester.
Code : Tout sélectionner   AgrandirRéduire
Sub VenteAnnuelle(oEv as Object)
Dim oForm as Object, oSubForm as Object, maConnexion as Object, maRequete as Object
Dim strSQL as String, maRequete2 as Object, Resultat as Object, instrSQL as String, Annee as Integer, Valeur as Integer
   oForm = oEv.Source.Model.Parent
   Annee = oForm.Columns(0).Value
   maConnexion = oForm.ActiveConnection
   oSubForm = oForm.getByName("sfmVente")
   strSQL = "SELECT ""Ref_Produit"" FROM ""T_PRODUITS"""
   instrSQL = "INSERT INTO ""T_VenteAnnuelleProduit"" (""Ref_Produit"",""Ref_AnneeDeVente"",""Categorie_1"",""Categorie_2"",""Categorie_3"") VALUES(?," & Annee & ",0,0,0)"
   If oSubForm.RowCount = 0 Then
      maRequete = maConnexion.createStatement()
      maRequete2 = maConnexion.prepareStatement(instrSQL)
      Resultat = maRequete.executeQuery(strSQL)
      While Resultat.Next
         Valeur = Resultat.Columns(0).int
         maRequete2.setInt(1, Valeur)
         maRequete2.execute
      Wend
      maRequete2.dispose
   End if
   oSubForm.Reload
End Sub
A+
Pièces jointes
TEST.odb
(14.22 Kio) Téléchargé 30 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Base]Automatiser des nouvelles entrées

Messagepar RobinC » 05 Mars 2018 11:14

Bonjour Piaf,
Merci de ta réponse !
Grace à ton code et en retouchant un peu le formulaire, j'ai réussi à obtenir ce que je souhaitais !
Ça faisait deux semaine que je cherchais !
Encore merci !

(en pièce jointe, la version corrigée pour ceux que ça intéresse)

Edit :
En fait, ça ne marche pas encore tout à fait, je ne peux pas modifier les ventes...
Je vais regarder ça

Edit 2 :
Ca y est, on peut modifier les ventes, mais j'ai ré-appuyé sur le bouton après avoir entré des ventes pour voir ce que cela allait faire et ça a fait buger le logiciel.
Je me demande ce que je peux faire pour empêcher ça. Peut-être mettre une condition à l'exécution du code ?
Pièces jointes
TEST.odb
(15.33 Kio) Téléchargé 23 fois
LibreOffice Version: 5.4.5.1 (x64) sous Windows 7
RobinC
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 12 Fév 2018 12:17


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)