[Base]Gestion de Fidélité

Discussions sur les projets et applications développés en liaison avec une suite bureautique libre.

Modérateur : Vilains modOOs

Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

[Base]Gestion de Fidélité

Message par Zicaflex »


La modération vous a écrit: Suppression de l'icône Image
Les icônes mises à votre disposition ont une signification précise sur ce forum.
Veuillez consulter ce fil pour en savoir plus : https://forum.openoffice.org/fr/forum/ftopic3299.html

Bonjour à tous,

Voici quelques mois que je travail sur un projet de création d'une base de données pour la gestion de la fidélité sur une gamme de produit de mon entreprise.

OBJECTIF: Lorsque le client atteint les 10 paquets de protection achetés il en a 1 offert.

Mon fichier est déja bien avancé, seulement pour le finaliser, je souhaiterai insérer une boite de dialogue permettant d'avertir la personne en caisse lorsque le client dépasse la dizaine de paquets achetés. Ceci dans le but de ne pas oublier de donner le paquet offert.

Alors je me rapproche de vos compétences pour savoir comment je pourrais l'envisager s'il vous plait ?

Vous trouverez ma base de donnée en pièce jointe.

Merci par avance
Pièces jointes
BDD-Fidélité-test.odb
Base de donné fidelite
(68.27 Kio) Téléchargé 286 fois
Dernière modification par micmac le 28 févr. 2018 17:51, modifié 2 fois.
Raison : Ajout de la balise après déplacement du sujet
Open Office 4.1.3 Mac OS Sierra 10.12.6
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9222
Inscription : 28 août 2010 10:45

Re: Gestion de Fidelite

Message par micmac »

Bonjour et bienvenue sur le forum,
votre signature a écrit : Open Office 4.1.3 Mac OS Sierra 10.12.6
Votre signature indique une version de OpenOffice qui n'est plus maintenue.
Est-ce une une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".

Pour connaître la version que vous possédez : https://forum.openoffice.org/fr/forum/v ... 582#p11582

Il est fortement recommandé d'être à jour de la dernière version : Soyez à jour de la dernière version

Dans votre signature il est nécessaire d'indiquer :
1- La version exacte de AOO ou LibO (AOO 4.1.5, LibO 5.4.5 par exemple) ;
2- La version exacte du système d'exploitation (Windows XP SP3, Vista SP2, Windows 7 SP1, Win 8.1, Win 10, Ubuntu 17.04, MacOS 10.13.3, par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidelite

Message par Piaf »

Bonjour
Un petit exemple :)

Code : Tout sélectionner

Sub Main(oEv as Object)
	If oEv.Source.EffectiveValue > 10 Then
		MsgBox("Il y a " & oEv.Source.EffectiveValue & " paquets pour le produit " & oEv.Source.Parent.getByName("NomProduit").CurrentValue,64,"Fidélité")
	End If
End Sub
A+
Pièces jointes
BDD-Fidélité-test.odb
(66 Kio) Téléchargé 231 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidelite

Message par Zicaflex »

Bonjour Piaf,

Pouvez vous me dire ou est ce que je dois coller ce script s’il vous plait ?

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidelite

Message par Piaf »

Re
Récupère la base jointe à mon message pour test.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidelite

Message par Zicaflex »

Je suis désolé, mais je ne parviens pas à voir à quel moment le message apparait.

Pouvez vous m'en dire plus ?

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidelite

Message par Piaf »

Re
La procédure est affectée à l'événement Après l'actualisation de la colonne Quantité du contrôle de table du sous-formulaire ToutesLesLignes.
MsgBox.png
Elle est activée quand la quantité pour un produit est supérieure à 10 soit au changement d'enregistrement dans le contrôle de table, soit à l'appuie sur le bouton Valider le produit et la quantité.
Il n'y a pas de macro sur le bouton, juste l'action Enregistrer
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidelite

Message par Zicaflex »

Bonjour Piaf,

J'ai du mal m'exprimer lorsqe j'ai énoncé l'objectif de mon projet.

Le message doit apparaitre lorsque la somme des pacquets acheté par le client dépasse chaque dizaine.

Soit à 10 paquets achetés -> 1 offert
Lorsque l'on arrive à 20 paquets achetés -> 1 offert
Lorsque l'on arrive à 30 paquets achetés -> 1 offert
...

En tout cas, merci pour votre réactivité et votre aide précieuse.
Open Office 4.1.3 Mac OS Sierra 10.12.6
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidelite

Message par Zicaflex »

Pour info, la somme des paquets achetés apparait dans le contrôle de table du formulaire ''ConsltationParClient''.
La modération vous a écrit: Merci de ne pas poster plusieurs messages à la suite, si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
Image
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidelite

Message par Piaf »

Bonjour
Un peu plus difficile à mettre en œuvre :lol:
A tester

Code : Tout sélectionner

Option Explicit
Sub totalProduitClient(oEv as Object)
Dim maConnexion As Object, maRequete As Object, Resultat As Object
Dim IdProduit as Integer, IdClient as Integer, strSQL as String, nbrCadeaux as Integer, InstrSQL as String
Dim nbrTotal as Integer, nbEnCours as Integer, Reponse as Long
	MajDonnees(oEv.Source.Parent.Parent)
	maConnexion = oEv.Source.Parent.Parent.Parent.ActiveConnection
	IdProduit = oEv.Source.Parent.getByName("NomProduit").valueItemList(oEv.Source.Parent.getByName("NomProduit").SelectedItems(0))
	IdClient = oEv.Source.Parent.Parent.Parent.getByName("ListBox").valueItemList(oEv.Source.Parent.Parent.Parent.getByName("ListBox").SelectedItems(0))
	strSQL = "SELECT ""Nbre paquet offert"" FROM ""Fidélité"" WHERE ""RefClient"" = " &  IdClient & "  AND ""RéfProduit"" = " & IdProduit
	maRequete = maConnexion.createStatement()
	Resultat = maRequete.executeQuery(strSQL)
	If Resultat.Next Then
		nbrCadeaux = Resultat.Columns(0).Int
	Else
		InstrSQL = "INSERT INTO ""Fidélité"" (""RéfProduit"", ""RefClient"", ""Nbre paquet offert"") VALUES (" & IdProduit & " , " & IdClient & " , 0)"
		maRequete.executeUpdate(instrSQL)
		nbrCadeaux = 0
	End If	
	strSQL = "SELECT SUM( ""DétailsCommande"".""Quantité"" ) AS ""Qte"" FROM ""DétailsCommande"", ""Commandes"" WHERE ""DétailsCommande"".""RéfCommande"" = ""Commandes"".""RéfCommande"" GROUP BY ""DétailsCommande"".""RéfProduit"", ""Commandes"".""RéfClient"" HAVING ( ( ""DétailsCommande"".""RéfProduit"" = " & IdProduit & " AND ""Commandes"".""RéfClient"" = " &  IdClient & " ) )"
	Resultat = maRequete.executeQuery(strSQL)
	Resultat.Next
	nbrTotal = Resultat.Columns(0).Int
	nbEnCours = nbrTotal - (nbrCadeaux * 10)
	If nbEnCours >= 10 Then
		Reponse = MsgBox("Il y a " & nbEnCours & " paquets pour le produit " & oEv.Source.Parent.getByName("NomProduit").CurrentValue & Chr(13) & "Voulez-vous ajouter le(s) paquet(s) cadeau",4+32,"Fidélité")
		Select Case Reponse
			Case 6
				InstrSQL = "UPDATE ""Fidélité"" SET ""Nbre paquet offert"" = " & CInt(Left(nbEnCours,1)) & " WHERE ""RéfProduit"" = " & IdProduit & " AND ""RefClient"" = " & IdClient
				maRequete.executeUpdate(instrSQL)
			Case 7
				Exit Sub
		End Select				
	End If
End Sub

Sub MajDonnees(oForm as Object)
	With oForm
		If .isModified Then
			If .IsNew Then
           		.insertRow
        	Else
            	.updateRow
	        End If
		End If
	End With
End Sub
A+
Pièces jointes
BDD-Fidélité-test.odb
(68.27 Kio) Téléchargé 216 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidelite

Message par Zicaflex »

Re,

C'est plutot bien, on progresse ...

Seulement dans cette configuration nous avons le message à chaque incrémentation.

Est il possible d'avoir le message a chaque fois que l'on change de Dizaine ?

Par Exemple:

Le client a acheté 6 paquets le 12/01/2018, il reviens au magasin et il achete 6 paquets. Nous sommes donc passé de 6 paquets à 12 paquets. Alors je souhaiterai que le message ''Donner un paquet offert de '' Nom du produit'' à ''Nom et prénom du client''.

Le client revient le 03/03/2018 et achéte 4 paquets soit 16 paquets achetés depuis sa première venue. Alors, nous n'aurions pas de message.

Le client reviens le 04/04/2018 et achète 5 Paquets soit 21 paquets au total. Alors nous aurions l'affichage du message.

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidelite

Message par Piaf »

Re
Il y avait une erreur dans l'attribution des paquets cadeaux.
le code suivant devrait le faire.

Code : Tout sélectionner

InstrSQL = "UPDATE ""Fidélité"" SET ""Nbre paquet offert"" = " & nbrCadeaux + CInt(Left(nbEnCours,1)) & " WHERE ""RéfProduit"" = " & IdProduit & " AND ""RefClient"" = " & IdClient
Zicaflex a écrit :Seulement dans cette configuration nous avons le message à chaque incrémentation.
Je ne reproduis pas.
J'ai mis en œuvre ton exemple.
Création d'un client.
Création d'une nouvelle facture pour le 12/1/2018,de 6 paquets de FORM_EXTRA_COTTON_FEEL.
Pas de message.
Création d'une nouvelle facture pour le 12/1/2018 de 6 paquets de FORM_EXTRA_COTTON_FEEL.
Affichage du message, réponse Oui, la table Fidélité est bien mise à jour.
Création d'une nouvelle facture pour le 3/3/2018 de 4 paquets de FORM_EXTRA_COTTON_FEEL.
Pas de message.
Création d'une nouvelle facture pour le 4/4/2018 pour 5 paquets de FORM_EXTRA_COTTON_FEEL.
Affichage du message.
Msg.png
Msg.png (13.41 Kio) Consulté 9135 fois
Réponse Oui, la table Fidélité est bien mise à jour.
A+
Pièces jointes
BDD-Fidélité-test.odb
(68.36 Kio) Téléchargé 211 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bonjour Piaf,

Je fais des test avec la base de données, mais j'ai un message d'erreur dû à une mauvaise syntaxe SQL. Pouvez vous me dire pourquoi SVP ?

Je joins la nouvelle base de donnée complété, ainsi qu'un Imprim Ecran du message.

Merci pour votre réponse.

Cordialement
Open Office 4.1.3 Mac OS Sierra 10.12.6
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Voici les pièces jointes
Capture d’écran 2018-03-08 à 12.08.28.jpg

La modération vous a écrit: Merci de ne pas poster plusieurs messages à la suite, si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
Image
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

Pièces jointes
BDD-Fidélité-test.odb
(80.07 Kio) Téléchargé 212 fois
Open Office 4.1.3 Mac OS Sierra 10.12.6
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: [Base]Gestion de Fidélité

Message par DLE »

Bonjour,

Vous obtenez ce message parce que vous voulez insérer un "RéfProduit" déjà inscrit mais pour un autre client, une solution serait de mettre les champs "RéfProduit" et "RefClient" comme clé primaire.
A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bonjour DLE,

Est il possible de mettre 2 clefs Primaire dans la même table ? Si oui, comment fait on ?

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: [Base]Gestion de Fidélité

Message par DLE »

Re,
En mode modification sur la table, sélectionner les deux colonnes, clic droit et affecter "clé primaire".
A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Ok, cela fonctionne. Merci

D'autre part, je ne comprend pas pourquoi dans ma Requête ''RConsultation'' la somme des quantité par produit ne se fait pas correctement ?????

Pourriez vous m'éclairer s'il vous plait ?
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidélité

Message par Piaf »

Bonjour
Tu dois refaire les liaisons avec la nouvelle clé primaire.
Pour ta requête, tu ne peux pas donner de fonction pour le nombre de paquets offerts.

Code : Tout sélectionner

SELECT "Produits"."NomProduit", "Clients"."Nom", "Clients"."Prénom", SUM( "DétailsCommande"."Quantité" ) AS "Total Produit", ( SELECT "Fidélité"."Nbre paquet offert" FROM "Fidélité" WHERE "Fidélité"."RéfProduit" = "Produits"."RéfProduit" AND "Fidélité"."RefClient" = "Clients"."RéfClient" ) AS "Paquet(s) offert(s)" FROM "Clients", "Commandes", "DétailsCommande", "Produits", "Fidélité" WHERE "Clients"."RéfClient" = "Commandes"."RéfClient" AND "DétailsCommande"."RéfCommande" = "Commandes"."RéfCommande" AND "DétailsCommande"."RéfProduit" = "Produits"."RéfProduit" AND "Fidélité"."RéfProduit" = "Produits"."RéfProduit" AND "Fidélité"."RefClient" = "Clients"."RéfClient" GROUP BY "Produits"."NomProduit", "Clients"."Nom", "Clients"."Prénom" HAVING ( ( "Clients"."Nom" LIKE :Nom ) )
Requete.png
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bonjour Messieurs,

Voila maintenant une semaine que je fais des tests avec ma base, et j'ai un message d'erreur qui apparait.

Pouvez vous m'en dire plus à ce sujet s'il vous plait ?

Meri par avance
Pièces jointes
BDD-Fidélité-test.odb
(101.51 Kio) Téléchargé 219 fois
Capture d’écran 2018-03-23 à 14.59.41.jpg
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidélité

Message par Piaf »

Bonjour
Tu devrais vérifier le nom des tes contrôles

Code : Tout sélectionner

oEv.Source.Parent.Parent.Parent.getByName("ListBox")
NomCtrl.png
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bonjour Piaf,

Tout d'abord, merci pour ta réponse rapide.

Quel nom de contrôle je dois avoir pour que ça fonctionne ?

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidélité

Message par Piaf »

re
Tu dois donner au contrôle le nom donné dans la procédure.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Excellent Piaf,

Tout fonctionne à merveille.

Continuer le développement de ma base, je souhaiterai que lorsque je consulte par client, j'ai une colonne dans la table du formulaire avec ''Nombre de paquet offert'' correspondant au total des paquets offerts par produits achetés.

Comment puis je procéder ?

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidélité

Message par Piaf »

Re
Zicaflex a écrit :je souhaiterai que lorsque je consulte par client, j'ai une colonne dans la table du formulaire avec ''Nombre de paquet offert'' correspondant au total des paquets offerts par produits achetés.
Paquets.png
Voir https://forum.openoffice.org/fr/forum/v ... 33#p309239
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bonjour Piaf,

Est ce que je dois insérer ce script à la requête Rconsultation ?

Merci
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidélité

Message par Piaf »

Bonjour
Zicaflex a écrit :Est ce que je dois insérer ce script à la requête Rconsultation ?
C'est la requête rConsultation.
A+
Pièces jointes
BDD-Fidélité-test(2).odb
(83.5 Kio) Téléchargé 196 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bojour Piaf,

Lorsque j'essai d'enrgistrer la requete Rconsultation, il m'indiue un message d'erreur correspondant à un problème de syntaxe SQL.

Peux tu me dire où se situe cette erreur s'il te plait ?

Cordialement
Pièces jointes
Capture d’écran 2018-03-28 à 16.48.23.jpg
Open Office 4.1.3 Mac OS Sierra 10.12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Base]Gestion de Fidélité

Message par Piaf »

Bonjour
L'erreur vient du fait que tu veux modifier la requête en mode modification, tu ne peux la modifier qu'en l'éditant en mode SQL et comme elle est paramétrée, tu ne peux pas l'enregistrer en SQL direct.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Zicaflex
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 27 févr. 2018 11:47

Re: [Base]Gestion de Fidélité

Message par Zicaflex »

Bonjour Piaf,

Désolé de te déranger encore ...

Lorsque j'intègre le script, et que je fait une Consultation par client, la quantité n'apparait plus dans la table. Et le nombre de paquet offert non plus.

Alors que lorsque j'execute la requête tout et OK.

??????

Merci par avance
Pièces jointes
Fidélité.odb
(101.63 Kio) Téléchargé 209 fois
Open Office 4.1.3 Mac OS Sierra 10.12.6
Répondre