[Base] Gestion de Stock

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

Modérateur : Vilains modOOs

Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

[Base] Gestion de Stock

Message par Nikita_MD »

Bonjour,
dans le cadre d'un stage, ma boîte me demande de mettre en place une petite base de données pour qu'ils puissent:
- connaitre l'état de leurs stocks
- le mettre à jour (entrée et sortie de pièces)
-avoir un seuil d'alerte les avertissant qu'ils vont tomber à court d'une pièce

Bien que je possède quelques connaissances en gestion de bases de données ( MCD, MLD, écriture de requêtes en sql), tout est très théorique et le passage à la pratique n'est pas aisé (d'autant plus que je n'ai jamais travaillé ni sur Base ni sur Access).
Ils ne recherchent pas quelque chose de très compliqué donc j'ai pensé à une table "Piece" avec comme champs la référence fabricant de la pièce(clé primaire), une description*, le fabricant*, le nombre en stock* et le prix TTC.
J'ai ensuite pensé à deux autre tables "commande" et "sortie" avec chacune un id* en clé primaire puis la reference_piece*, la quantité* concernée et la DateEtHeure.
C'est à partir de là que je commence à avoir besoin de conseils. Aurais-je besoin de tables supplémentaires (genre plutôt une table par fabricant ou une table où je détaille les commandes) ? Je pense par exemple ajouter une table utilisateur pour permettre de spécifier la personne passant une commande/sortant une pièce dans le formulaire correspondant mais je vois déjà moins bien comment l'intégrer dans mon MCD. De plus, je n'ai jamais vu le fonctionnement exact ni la mise en place des formulaires donc mes recherches sur ce forum et ailleurs m'indiquent que les formulaires sont plus pratiques que les requêtes quand les utilisateurs ont peu d'expérience (ce qui serait le cas des employés de ma boîte) donc il semblerait qu'il me faille 3 formulaires (2 de saisie pour ajouter/supprimer des pièces au stock, un pour lister les pièces actuellement en stock). Les deux premières nécessiteraient d'entrer la référence et le fabricant ainsi que la quantité pour actualiser la table "pièce" et la troisième afficherait les pièces comme le ferait une requête du genre "SELECT * FROM piece WHERE reference/frabricant/...='xxx';" Je ne vois pas bien non plus comment mettre en place ce seuil d'alerte (mes recherches sur le forum semblent dire qu'il me faut utiliser des requêtes pour tout ce qui touche aux calculs mais ça reste flou pour moi).
Enfin voilà, j'espère tomber sur une personne charitable (et courageuse) qui acceptera de me donner un petit coup de pouce.
Merci d'avance !

PS: j'ai effectué une recherche sur le forum (ainsi que téléchargé les exemples disponibles, etc.) avant de créer ce sujet mais je n'ai rien trouvé qui m'aide assez (que des fragments d'astuces me concernant par ci par là). Je continue aussi mes recherches relatives au fonctionnement de base. :mrgreen:
Open Office 3.2 Windows XP SP3
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12727
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: Mise en place BdD pour Gestion de Stock

Message par Bidouille »

Bonjour,

Votre question a été déplacée dans la section Projets car elle est trop généraliste. Son titre a été modifié.
La section Base n'est dédiée qu'à des problèmes très précis.
Nikita_MD a écrit :PS: j'ai effectué une recherche sur le forum (ainsi que téléchargé les exemples disponibles, etc.) avant de créer ce sujet mais je n'ai rien trouvé qui m'aide assez
Il est évident que vous ne trouverez jamais la copie exacte de ce que vous cherchez à faire.
Vous pouvez prendre connaissance de ce post-it afin de mieux vendre votre projet : http://forum.openoffice.org/fr/forum/vi ... 26&t=10267
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: Mise en place BdD pour Gestion de Stock

Message par Nikita_MD »

Bidouille a écrit : Il est évident que vous ne trouverez jamais la copie exacte de ce que vous cherchez à faire.
Je ne cherche bien évidemment pas à ce que quelqu'un fasse le travail à ma place mais j'indiquais par là que j'avais bien effectué les recherches d'usage pour éviter les foudres de ceux qui auraient pu être tentés de me dire d'en faire une sur ce forum, que ce sujet a été traité 100 fois. :)
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonsoir
Stock.png
Regarde si ce type de configuration te convient et que tu aies bien toutes les données nécessaires à tes futurs traitements.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Bonjour,
oui, à première vue, ça semble même plus précis que ce qui m'a été demandé donc je vais juste réajuster certains champs mais ça va m'être d'une grande aide.
Merci bien.

Edit: Après téléchargement du fichier, je vois que l'aide est encore plus importante que ce que je pensais.
C'est vraiment top, je vais pouvoir y comprendre puis voir si je suis capable d'y refaire en y adaptant à ma modeste sauce.
Cependant, si je comprend le fonctionnement de la requête ainsi que son but immédiat, j'ai plus de mal à voir comment elle est utilisée (probablement dans le formulaire employee ?)
Merci beaucoup.

Double edit : En fait je comprends mal le but de la plupart des formulaires (mis à part ceux de commande, sortie et de consultation des stocks). Il me semblait que l'intérêt des autres était de saisir de nouveaux employés, entrer de nouvelles pièces, etc. mais ça ne semble pas être le cas alors j'ai commencé à essayer de créer un tel formulaire. Pour ça, j'ai voulu créer une requête de type insert sur laquelle baser mon formulaire mais ça n'a pas l'air d'être comme ça que fonctionne base car il ne me laisse coder que des requêtes de type select. :marto:
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonjour
La requête rEmployes sert de source au formulaire fEmployes, sa seule utilité dans la base exemple est de concaténer le non et le prénom de l'employé, ça peut permettre ultérieurement une sélection de l'employé.
fEmployes permet de saisir les employés, fFournisseurs les fournisseurs etc...
Les formulaires sont basés soit sur des tables soit sur des requêtes Select. Dans le cas d'une table, Base l'interprète avec une instruction du type

Code : Tout sélectionner

"SELECT NomdelaTable.* FROM NomdelaTable"
La façon la plus pratique de créer un formulaire est d'utiliser l'assistant formulaire, ensuite on peut l'adapter à ses besoins.
Les modifications, ajouts ou suppressions des enregistrements sont gérés par Base, regarde les icônes dans la barre de navigation des formulaires.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Alors j'ai pas mal planché sur ce qui m'a été transmis et je pense avoir tout compris (grosso modo) mais quelque chose m'échappe encore. Les formulaires fCommande et fSortie permettent bien de créer de nouveaux enregistrements dans les tables Commande/Sortie et DetailsCommande/Sortie mais ils ne semblent pas actualiser le champ Qté des enregistrements de la table Pieces. J'ai cherché si je pouvais modifier ces formulaires afin d'assurer cette fonctionnalité mais je n'ai pas réussi à trouver comment. De plus, ma première idée aurait été de créer une requête de type update mais ce n'est hélas pas comme ça que fonctionne Base. Sur le ternet, on ne parle que de créer des formulaires de saisie pour créer des enregistrements mais pas de ceux visant à les modifier (ou alors je les ai raté).
Je ne désespère pas et je continue à chercher.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonsoir
Nikita_MD a écrit :ma première idée aurait été de créer une requête de type update mais ce n'est hélas pas comme ça que fonctionne Base.
Base fonctionne aussi comme ça. Mais le plus simple est d'utiliser l'interface.

Pour l'exécution des requêtes "actions" (Insert, delete, update...) tu disposes de l'outil Exécuter l'instruction SQL accessible par le menu Outils > SQL...
Pour l'utilisation de HSQLDB, voir HSQLDB: Guide de l'utilisateur., notamment le chapitre 9.

Mais si tu veux automatiser les traitements, tu vas devoir utiliser les macros.
Je te joins une base avec deux macros commentées comme exemple.

Une macro SortieStock qui met à jour le stock de pièce à chaque sortie.

Code : Tout sélectionner

Sub SortieStock(oEv as Object)
'Affectée à l'événement Après actualisation (Oev) de la colonne Quantité du sous formulaire Détails Sortie
'Déclaration des variables
Dim oGrid as Object, ctrlPiece as Object, unRowset as Object, connexion as Object
Dim Sortie as Integer, ValeurPiece as Integer, EnStock as Integer, NouveauStock as Integer
'Valeur de la quantité sortie
	Sortie = oEv.Source.CurrentValue
'Le contrôle table contenant les colonnes	
	oGrid = oEv.Source.Parent
'La liste déroulante des pièces	
	ctrlPiece = oGrid.getByName("refPiece")
'La	valeur en cours de la liste
	ValeurPiece = ctrlPiece.ValueItemList(ctrlPiece.SelectedItems(0))
'Ouverture de l'enregistrement sélectionné dans la liste dans la table Pièces	
	unRowSet = createUnoService("com.sun.star.sdb.RowSet")
	connexion = ThisDatabaseDocument.CurrentController.ActiveConnection
		With unRowSet
			.ActiveConnection = connexion
			.CommandType = com.sun.star.sdb.CommandType.COMMAND
			.Command = "SELECT ""IdPiece"", ""QtePiece"",""NiveauSeuil"" FROM ""tPieces"" WHERE ""IdPiece"" =" &  ValeurPiece
			.Execute
			.Next
'Récupération de la quantité inscrite dans la table			
			EnStock = .Columns.getByName("QtePiece").Value
'Nouvelle quantité  à enregistrer			
			NouveauStock = EnStock - Sortie
'Un exemple de test interdisant la sortie des pièces si le niveau seuil est dépassé			
			If NouveauStock < .Columns.getByName("NiveauSeuil").Value Then
				MsgBox "Le niveau de réapprovisionnement est de " & .Columns.getByName("NiveauSeuil").Value & chr(13) &_
				"Vous ne pouvez donc pas sortir la quantité demandée"
				oGrid.Parent.moveToBookmark(oGrid.Parent.rowcount)
				oGrid.Parent.Reload
				.Dispose
				Exit sub
			Else
'mise à jour de la nouvelle quantité				
				.Columns.getByName("QtePiece").updateInt(NouveauStock)
				.UpdateRow
				.Dispose
			End If	
		End With
End Sub
Et une EntreeStock qui met à jour le stock de pièce à chaque commande.

Code : Tout sélectionner

Sub EntreeStockSQL(oEv as Object)
'Affectée à l'événement Après actualisation de la colonne Dte Livraison du sous formulaire Détails commande
Dim oGrid as Object, ctrlPiece as Object,ctrlEntree as Object, maRequete As Object, connexion As Object
Dim Entree as Integer, ValeurPiece as Integer, UpdateSQL As String
'Si la date du contrôle est inférieure ou égale à la date du jour
	If CdateFromIso(oEv.Source.Date) <= Date Then
'le contrôle table
		oGrid = oEv.Source.Parent
'La liste déroulante des pièces		
		ctrlPiece = oGrid.getByName("refPiece")
'La valeur en cours de la liste		
		ValeurPiece = ctrlPiece.ValueItemList(ctrlPiece.SelectedItems(0))
'La colonne Quantité 		
		ctrlEntree = oGrid.getByName("QteCommande")
'La quantité dans l'enregistrement en cours		
		Entree = ctrlEntree.CurrentValue
'Définition et execution de la requête		
		connexion = ThisDatabaseDocument.CurrentController.ActiveConnection
		UpdateSQL = "UPDATE ""tPieces"" SET ""QtePiece"" = ""QtePiece"" + " & Entree & "WHERE ""IdPiece"" =" & ValeurPiece
		maRequete = connexion.createStatement()
		maRequete.executeUpdate(UpdateSQL)
	End If	
End Sub
Bon courage
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Alors heureusement que ces macros sont commentées parce que, n'en ayant jamais fait de ma vie, j'aurais été bien incapable de les créer de toute pièce.
Je vais bouquiner un peu cette documentation histoire de comprendre un peu mieux le fonctionnement du bazar. :mrgreen:
Encore merci.
Open Office 3.2 Windows XP SP3
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Je suis actuellement en train de refaire la base de données un peu à ma sauce pour voir si j'ai bien compris le fonctionnement de tout ça et je bloque sur la création des formulaires.
J'ai commencé par celui des commandes et je n'arrive pas à recréer les listes.
Par exemple, pour la liste "Employé", j'ai bien sélectionné tCommande.refEmploye comme champ, j'ai bien fait la "jointure" entre les deux tables dans l'assistant mais je n'arrive pas à faire en sorte que la liste affiche les résultats de la requête de concaténation. Je pense avoir à peu près tout essayé mais je n'ai au mieux que le nom de l'employé quand je choisis type de contenu de liste = champ dans l'onglet "données" des paramètres de la liste.
Pour la liste de la date, je n'arrive pas non plus à faire apparaître ce calendrier déroulant. J'ai pourtant choisi "champ de date" mais je n'obtiens qu'un champ de saisie et ce malgré toutes les bidouilles que j'ai pu tenter.
J'ai aussi voulu aller voir comment c'était fait dans la base qui m'a été transmise mais les différents paramètres de ces deux listes sont quasiment tous vides (ce qui me laisse d'ailleurs perplexe).

Merci par avance.

Edit : J'ai en fait réussi à trouver comment faire apparaître le calendrier grâce à de meilleurs mots clés sur google.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonjour
Nikita_MD a écrit :pour la liste "Employé",
La liste est basée sur la requête rEmployes où la concaténation est déjà faite.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Piaf a écrit :La liste est basée sur la requête rEmployes où la concaténation est déjà faite.
C'est pourtant bien ce que j'ai essayé de faire.
Dans type de contenu de la liste, je choisis "requête" puis je choisis la requête "rEmployes" mais ça ne marche pas.
Dans "Champ de Données", quel champ suis-je censé choisir ? En effet, la table sélectionnée pour le formulaire étant "tCommandes", je n'ai que "refCommande", "date" et la clé primaire. Donc je choisis à défaut de mieux "refCommande" mais j'ai l'impression que c'est là que ça pêche. Ai-je choisi la mauvaise table à la création de mon formulaire ?
Open Office 3.2 Windows XP SP3
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Désolé, j'ai eu une erreur sql lors de ma réponse et j'ai posté le message plusieurs fois sans faire exprès.
Un modo peut supprimer les messages en trop si il le désire.
Merci.
Dernière modification par Nikita_MD le 21 mars 2013 07:21, modifié 2 fois.
Open Office 3.2 Windows XP SP3
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Idem qu'au dessus.

Edit : Pour ce qui est de mon problème de formulaire, il semble que j'ai réussi à le résoudre à force de tâtonner.
On aimerait que ce soit les derniers soucis mais avec moi, c'est pas gagné.

Edit 2 : AH si, j'avais un autre soucis : dans le champ idcommande, je n'arrive pas à avoir la saisie automatique avec la mention "<AutoChamp>" lors de la création d'un nouvel enregistrement. J'ai pourtant bien vérifié les propriétés du champ dans la table et elle est bien sur autosaisie (de toute façon, c'est la clé primaire), les paramètres de ma zone de saisie semblent également bien être identiques à ceux du formulaire que j'utilise en exemple.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonjour
Nikita_MD a écrit :"tCommandes", je n'ai que "refCommande", "date" et la clé primaire
Si tu veux pouvoir sélectionner un employé pour la commande tu devrais avoir un champ refEmploye.
Nikita_MD a écrit :(de toute façon, c'est la clé primaire)
Une clef primaire n'est pas forcement en autoValeur.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Piaf a écrit :Si tu veux pouvoir sélectionner un employé pour la commande tu devrais avoir un champ refEmploye.
Oui, j'ai finalement réussi à résoudre ce problème (une maladresse dans la requête écrite dans les paramètres de la liste).
Piaf a écrit :Une clef primaire n'est pas forcement en autoValeur.
Au temps pour moi, j'ai une seconde confondu le NOT NULL qu'implique l'état de clé primaire et l'auto indexation.

Je reste cependant bloqué sur ce dernier problème et ce malgré mes nouveaux essais.

Edit: je suis stupide, j'avais bien trouvé la source de ce problème hier mais ne pouvant rédiger un message que ce matin, je l'avais oublié. L'auto valeur pour le champ idCommande est donc bien désactivée (une énième inattention de ma part) mais le véritable problème est que quand je veux repasser ce champ en auto saisie puis sauvegarder, il me dit d'abord qu'il lui faut supprimer la colonne puis attribuer ce paramètre. Je mets OK mais il me dit alors, via un message d'erreur, qu'il ne semble pas pouvoir supprimer la colonne ("column is referenced in constraint or view: SYS_REF_SYS_FK_145_170 in statement [ALTER TABLE "tCommandes" DROP "idCommande" sauf que je vois pas de quelles contraintes il veut parler).

Edit ' : J'ai réussi à résoudre ce problème en supprimant la relation qui s'attachait à ce champ. Trouvant à chaque fois la solution juste après avoir posté ici, je vais bientôt arrêter de me creuser la tête, je vais directement poser ma question ici puis je trouverai la solution juste après. :?
Open Office 3.2 Windows XP SP3
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Nouveau rebondissement : j'ai créé le formulaire fPieces et je veux faire en sorte que le menu déroulant listant le nom des pièces ne fasse apparaître que celles correspondant au fournisseur indiqué dans la liste appropriée (celle récupérant les valeurs du champ refFournisseur).
J'ai donc essayé de régler les paramètres de cette liste sur sql avec la requête "SELECT "NomPiece" FROM "tPieces" WHERE "refFournisseur" " et d'autres variantes mais rien n'y fait. Cependant, je ne vois pas bien comment faire autrement (je continue de chercher car, logiquement, je devrais trouver la solution maintenant que j'ai demandé de l'aide ici).
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonjour
Pendant que le forum est accessible.
Ta requête est correcte, mais Base ne permet pas, sans macro, de faire référence au champ d'un formulaire.
Pour avoir uniquement les pièces du fournisseur en cours :
soit tu passes par une macro en récupérant l'identifiant fournisseur ce qui donnerait une requête du type :

Code : Tout sélectionner

"SELECT ""NomPiece"" FROM ""tPieces"" WHERE ""refFournisseur"" =" & refFournisseur
soit tu créés un formulaire Fournisseurs et un sous formulaire Pièces reliés par l'identifiant du fournisseur.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Piaf a écrit : soit tu passes par une macro en récupérant l'identifiant fournisseur ce qui donnerait une requête du type :

Code : Tout sélectionner

"SELECT ""NomPiece"" FROM ""tPieces"" WHERE ""refFournisseur"" =" & refFournisseur
soit tu créés un formulaire Fournisseurs et un sous formulaire Pièces reliés par l'identifiant du fournisseur.
Ok merci, je vais essayer ça et on verra.
D'autre part, j'aimerais savoir comment faire pour que le bouton "fermer" propose de sauvegarder ou non les données modifiées quand il est activé (car là il sauvegarde automatiquement quand je ferme, sans me demander mon avis).

Edit : J'ai bien créé un formulaire Fournisseurs avec un sous-formulaire tableau Pieces mais je ne vois pas comment lier ce dernier à l'id fournisseur (pas plus que je n'arrive à le faire pour les autres champs du formulaire). Pour une liste, on peut créer une requête et la faire exécuter dans les paramètres mais là, les colonnes du sous-formulaire sont des zones textuelles où on ne peut pas paramétrer grand chose en dehors de l'apparence. Parce qu'en gros, je veux que ce formulaire ne serve uniquement qu'à consulter les stocks. Donc on fait varier le nom du fournisseur et tous les autres champs ainsi que le sous-formulaire présentant les pièces de ce fabricant se mettent à jour pour présenter les bonnes données à l'utilisateur.

PS : Est-il possible de faire en sorte que tous les champs de ce formulaire et sous-formulaire soient "en lecture seule" pour qu'il ne soit pas utilisé pour créer de nouveaux enregistrements (des formulaires fournisseurs et pieces étant prévus à cet effet).

Edit : J'ai au moins trouvé comment désactiver les champs pour les griser (les choses les plus évidentes sont parfois les plus dures à trouver).
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Re
Si tu passes d'un enregistrement à un autre dans un formulaire ou un sous formulaire, l'enregistrement que tu viens de quitter est automatiquement sauvegardé.
Si tu passes d'un formulaire à un sous formulaire, l'enregistrement du formulaire est automatiquement sauvegardé.
Dans ces cas, le bouton Fermer ne te demande pas d'enregistrer ou pas les données puisque qu'elles sont déjà enregistrées.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Oui, avec le bouton, je m'attachais plus à l'aspect ergonomique de la chose pour que les utilisateurs se contentent de naviguer ou de rentrer des données en sachant qu'ils pourront sauvegarder si ils le veulent ou non en quittant la page. Mais ce n'est pas très important et je suis passé à autre chose. Ce sont plutôt ces histoires de formulaires décrites dans le post précédent qui m'occupent.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Re
Un petit exemple d'un formulaire en consultation uniquement.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Bon, outre les petits problèmes avec le formulaire de consultation du stock, j'en arrive à la fin où je veux implémenter mes macros (celles qui permettent la MaJ du nombre de pièces) dans les formulaires de commande et de sortie. Car j'ai beau chercher dans l'exemple, je ne vois pas à quel endroit on y fait appel.

Ok, merci pour le petit exemple. Je vais tout de suite jeter un oeil à ça.

Edit : J'ai regardé le formulaire de l'exemple et les différents paramètres semblent être les mêmes. Les formulaires sont à peu près identiques à ceci près qu'au lieu d'avoir un tableau pour la liste des fournisseurs, j'ai un menu déroulant (ou alors, ça vient de là) et que j'ai quelques champs texte en plus qui sont désactivés et n'influent pas sur le fonctionnement du formulaire... donc je suis un peu perplexe.
Je joins la version quasi finale de ma bdd (où ne manquent que l'ajout du formulaire de sorties, des macros, la résolution de ce problème et des modifications d'ordre esthétique) pour que tu puisses éventuellement mieux cerner mon problème et ainsi m'indiquer, si ça ne te dérange pas, la marche à suivre pour le régler (le formulaire qui me pose problème est celui qui s'intitule"fStock")
Un grand merci.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Re
Nikita_MD a écrit :le formulaire qui me pose problème est celui qui s'intitule"fStock"
Il ne devrait plus te poser de problème :lol:
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Ok, merci. Mais je ne saisis en revanche pas bien l'utilité de la table selectFournisseur car je ne vois pas où on fait appel à l'id (ou alors c'était un essai et il peut être supprimé ?).
Mais sinon, le formulaire est nickel. Je me lance dans la compréhension et l'utilisation des deux macros et je suis bon.

Edit : cette table semble bien nécessaire à la création du formulaire mais je ne vois pas bien comment elle marche et par où on y créera de nouveaux enregistrements. :oops:

PS: Pour l'assignation des macros, je vais les récupérer dans le module du gestionnaire et je les assigne au niveau de la colonne "dte livraison" du sous formulaire du formulaire d'entrée dans évènements > Après l'actualisation.
Mais lorsque je tente de faire une entrée, le stock ne se met pas à jour. Dans mon entrée, j'ai des pièces qui arrivent aujourdh'ui (donc qui devraient se mettre à jour) et d'autres qui arrivent demain (et donc normal si rien ne bouge avec elles) mais au final, soit rien ne bouge soit j'ai carrément un message d'erreur dans ma macro.

PS: J'ai pensé à modifier les macros pour que les intitulés des champs ayant changé entre la bdd initiale et la mienne soient reconnus. (en gros, je crois qu'il n'y a que "référence" dans tPieces qui devient la clé primaire et remplace "IdPiece".
Dernière modification par Nikita_MD le 22 mars 2013 08:52, modifié 1 fois.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonjour
Nikita_MD a écrit :cette table semble bien nécessaire à la création du formulaire mais je ne vois pas bien comment elle marche et par où on y créera de nouveaux enregistrements.
L'explication du fonctionnement de la table et du formulaire de sélection des fournisseurs est là [Base]Sélectionner un enreg. avec une liste déroulante
Pour les macros, je regarde un peu plus tard, je suis un peu à la bourre ce matin :D
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Ok, merci pour le lien, je vais aller zyeuter ça.
Piaf a écrit :Pour les macros, je regarde un peu plus tard, je suis un peu à la bourre ce matin :D
Ouais, ça roule. Merci ! (en plus après ça, j'aurai fini et tu seras enfin tranquille ! :lol: )

Edit : Ça marche bien avec la macro pour les sorties donc c'est uniquement l'autre qui me pose problème.
Je continue de chercher et tu auras peut-être la paix plus tôt que prévu. :marto:
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Bonjour
Pendant que la connexion au forum est possible.
La macro d'ajout adaptée à ta base.
Il a fallu que je corrige un peu le formulaire, regarde ce que ça donne et si tu peux faire avec.
L'identifiant de pièce étant en texte et non plus en numérique, la macro a été adaptée.
 Ajout : Un petit plus 
Macro pour prévenir à l'ouverture de la base que le niveau seuil est atteint pour une ou des pièces.

Code : Tout sélectionner

Sub Demarrage
Dim maRequete As Object, resultat As Object, oConnexion As Object
Dim instrSQL As String, cr as String
   ThisDatabaseDocument.CurrentController.connect("","")
   oConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
   cr = chr(13)
	instrSQL = "SELECT QtePiece FROM tPieces WHERE QtePiece <= NiveauSeuil"
	maRequete = oConnexion.createStatement()
	resultat = maRequete.executeQuery(instrSQL)
	If resultat.Next Then
		MsgBox "Le niveau seuil est atteint pour une ou des pièces" & cr & "Veuillez faire les commandes nécessaires"
	End If	
End Sub
Pour affectée la macro à l'ouverture de la base : Menu Outils > Personnaliser > onglet Événements.
Demarrage.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Piaf le 22 mars 2013 13:17, modifié 1 fois.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Nikita_MD
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 18 mars 2013 13:14

Re: [Base] Gestion de Stock

Message par Nikita_MD »

Bonjour,
j'ai du mal à voir quel formulaire a été modifié (ilo ne semble pas avoir de différence bien visible avc aucun des formulaires).
De plus, je ne comprends pas l'utilité de la petite macro apo (même si je saisis vaguement son fonctionnement). Dois-je l'ajouter au même endroit que celle d'entrée ?
Merci.

Edit : Ok, je vais rajouter cette macro, merci.
Et je vais aussi tenter de rajouter les deux autres en rapport avec le formulaire d'entrée sans retoucher à celui-ci et je verrai bien ce que ça donne.
Dernière modification par Nikita_MD le 22 mars 2013 13:40, modifié 2 fois.
Open Office 3.2 Windows XP SP3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Gestion de Stock

Message par Piaf »

Re
Le sous formulaire modifié est celui du formulaire fEntrée.
Apos est une fonction qui ajoute les quotes autour d'une chaîne de caractère. Comme l'identifiant pièce est en Texte, si tu veux y faire référence dans l'instruction SQL elle doit être encadrée par les quotes.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64