[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 !
RobinC
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 12 févr. 2018 12:17

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

Message 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/v ... =9&t=57005
Pièces jointes
TEST.odb
(4.15 Kio) Téléchargé 89 fois
LibreOffice Version: 5.4.5.1 (x64) sous Windows 7
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Automatiser des nouvelles entrées

Message par Piaf »

Bonsoir
Un exemple à tester.

Code : Tout sélectionner

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é 100 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
RobinC
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 12 févr. 2018 12:17

Re: [Base]Automatiser des nouvelles entrées

Message 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 ?
Pièces jointes
TEST.odb
(15.33 Kio) Téléchargé 91 fois
LibreOffice Version: 5.4.5.1 (x64) sous Windows 7
Verrouillé