Page 1 sur 1

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

MessagePublié: 02 Mars 2018 17:30
par RobinC
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

Re: [Base]Automatiser des nouvelles entrées

MessagePublié: 02 Mars 2018 20:04
par Piaf
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+

Re: [Base]Automatiser des nouvelles entrées

MessagePublié: 05 Mars 2018 11:14
par RobinC
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 ?