Connection BDD access

Fermé
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 - 13 août 2012 à 11:37
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 - 11 oct. 2012 à 16:00
Bonjour à tous,

j'utilise access 2010 sur un sbs 2003.

j'ai fait quelque formulaire sous access pour une petite gestion de facture et de stock.

Je me suis aidé du site www.compagnon.info

Voilà ce qui me bloque c'est l'ajout de stock, j'aimerais archiver des enregistrements, car le prix investit dans chaque entré de stock et différent alors j'ai créé une table que j'ai mie en relation avec une table inventaire et j'ai créé un formulaire à partir de la table ajout de stock. Le problème est dans la mise à jour de nouveaux stock, je ne sais pas trop comment m'y prendre.

j'ai trouvé un bout de code pour récupérer la valeur MAX du champ ref_ajout de la table ajout de stock


Function drnierenreg()
txtreq = "select max(id) AS maxi from table"
set res=conn.execute(txtreq)
do until (res.EOF)
dernierenrg = res("maxi")
exit function
loop
dernierenrg= -1
end function


La requête SQL fonctionne bien, elle me trouve la valeur max du champ spécifié, mais, quand je lance la macro j'ai l'erreur 424 (objets requis), j'ai l'impression que cela vient de la méthode de connexion à la base avec "conn.execute" et access n'a pas l'air de le reconnaitre.

J'ai besoin d'aide je n'arrive pas à trouver ce qui cloche...

l'idée au final est d'avoir la dernière ligne d'enregistrement de la table ajout_stock afin de l'utiliser pour mettre à jour des données dans une table inventaire.


Merci beaucoup




A voir également:

12 réponses

kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 11:42
voici le code SQL que j'utilise pour teste la fonction derniereng ()

SELECT ajout_stock.ref_ajout, ajout_stock.ref_produit, ajout_stock.prix_achat, ajout_stock.quantité
FROM ajout_stock
GROUP BY ajout_stock.ref_ajout, ajout_stock.ref_produit, ajout_stock.prix_achat, ajout_stock.quantité
HAVING (ajout_stock.ref_ajout)=dernierenreg();


merci beaucoup je prend tout les commentaire
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
13 août 2012 à 12:40
Salut,

tu vas te retrouver confronté à un souci : un SGBD n'enregistre pas les données dans un ordre particulier et une requête SQL (non triée) renvoie les résultats dans l'ordre dans lequel elle les trouve.

Ce qui fait que si tu veux trouver le dernier enregistrement ajouté dans une table, il te faut absolument ajouter un champ d'horodatage sur lequel tu pourras baser une requête avec un prédicat de type FIRST, LAST, MAX ou MIN...
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 14:01
merci pour t'as réponse blux,

j'ai créé une table avec un champ auto-incrémenté appeler ref_ajout j'imaginais utiliser "select max(id) AS maxi from table" qui me renvoie la valeur la plus élever du champs spécifié.

vue que le dernier enregistrement et obligatoirement la valeur la plus elever je pense que sa dois etre bon.


dites moi ce que vous en pensé
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 14:29
je viens de vérifier pour l'horodatage et je l'avais déjà fais j'ai bien la date et l'heure qui s'applique dans le champ spécifier à chaque nouvelle enregistrement.

est-ce que cela est possible de récupérer le dernier enregistrement en fonction de la date la plus récente ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
13 août 2012 à 14:32
Si tu as un champ d'horodatage ou un auto-incrément, alors un MAX() suffit.
Je ne comprends pas pourquoi tu veux utiliser une fonction...
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 14:46
Je vois pas du tout comment faire, sa fait deux semaine que je me familiarise avec access.

access me sort tout les enregistrements quand j'essaie de faire quelque chose.

j'ai imaginé que je devait faire une fonction pour récupérer le dernier enregistrement mais s'il y a une autre solution sincèrement je suis preneur.
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
13 août 2012 à 15:10
Le problème n'est pas de récupérer un enregistrement, mais de savoir ce que tu veux en faire !
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 15:31
je cherche à faire de l'ajout de stock.

si tu veux plus précisément je cherche à archiver les entrées de stock, le prix de l'achat de cette entrée de stock et la date.


cela me permettra par le biais d'une requête de mettre à jour la table inventaire, de crée un formulaire me donnant les informations sur le prix réellement investit pour mes stock et ainsi archiver chaque entrer.

Pour l'instant l'idée et d'ajouté les articles correctement pour que mon stock soit a jour.

le but est simplement de faire un [table_inventaire.quantité disponble] + [ajout_stock.quantité]

je vais verrouillé le formulaire, je n'aurais pas a gérer de correction en cas d'erreur de saisie.

enfin voila j'espère que tu vois ce que je veux faire.


merci encore blux pour ton aide c'est sympa
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
13 août 2012 à 15:39
Rien compris...
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 15:54
bah alors la je vois pas trop comment explique cela différemment...

l'idée est d'ajouter des enregistrements à une table (ce qui est fait) , puis par la suite d'utiliser les données de cette enregistrement pour mettre à jour une table contenant mes articles et leur quantité.

le soucis c'est que j'ai besoin du dernier enregistrement seulement de la table ajout_stock pour pouvoir faire ma mise à jour.

je sais pas si tu vois ce que je veux faire ?
*
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
13 août 2012 à 16:05
Le problème est que tu n'as pas répondu à la question que j'ai posée :

que veux-tu faire PRÉCISÉMENT de cet enregistrement ?
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
13 août 2012 à 16:15
je veux utiliser le champ [quantité] du dernier enregistrement pour l'additionner à la quantité total de l'article.

c'est pour cela que max(quantité) je peux pas faire car il cherche la valeur la pus haute.
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
13 août 2012 à 16:39
Dans ce cas, il faut utiliser les fonctions Dlookup et Dmax.

Un exemple pour afficher la valeur de Champ1 pour lequel la ligne Id possède la plus grande valeur, dans la table nommée Table1.

MsgBox DLookup("Champ1", "Table1", "Id=" & DMax("Id", "Table1"))

Id	Champ1
1	15
2	a
3	b
5	18
6	54
7	f
8	f
9	o
10	lkhjkl

renvoie lkhjkl

Tu n'a plus qu'a intégrer cette ligne dans ta requête d'UPDATE du champ qté totale. Au besoin, dans DMax, tu devras inclure une restriction relative au numéro d'article que tu veux mettre à jour...
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
15 août 2012 à 09:34
Bonjour
voici un lien d'un exemple
https://www.cjoint.com/?BGAazWT33z4
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
15 août 2012 à 09:52
merci castours


finalement ce sont des états dans un formulaire si j'ai bien compris.


je pense que cela me servira quand j'aurai réussi a intégrer mes stock dans la table inventaire.

il faut que j'arrive à dire à access, regarde dans la derniere ligne d'enregistrement, récupère la quantité d'article à ajouté, et met a jour celle-ci dans la table inventaire en prenant soins de vérifier que le numéro d'article correspond bien pour évité de mettre à jour tous les articles de la table inventaire.


je suis sur que la ligne de blux doit fonctionner mais j'arrive pas à mettre en forme.
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
15 août 2012 à 15:42
Je suis peut-être trop bête pour comprendre...

je vois pas srx
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
15 août 2012 à 23:38
bonjour
le principe de calcule de stock est:
stock = somme des entrées - somme des sorties pour un meme produit.
tu as un formulaire qui renvoie le resultat d'une requete d'analyse croisée.
un stock est le resultat d'un calcul qui ne doit pas etre mis dans une table.
pour ma part la construction de ta base devrait s'orientait vers un formulaire de saisie d'entrées et de sortie, une requete de calcul de stock et eventuellement un etat d'inventaire pour visualiser les stocks.
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
16 août 2012 à 10:08
bonjour castours,

je crois comprendre.

pour mes sorti de stock, elle sont liée à la facture, quand je met 1 article dans une facture le stock lié à cet article diminue.

je n'ai pu faire la même chose dans le sens de l'ajout de stock car le calcul ne fonctionne plus en faisant des somme.

en gros tu me conseil de faire un formulaire pour calculer mes stock ?

j'ai voulu faire une table pour stocké l'ajout d'article avec le prix qui est différent en fonction des moments.

aujourd'hui 10 paire de basket 200€ demain 220€ fallait que je stock l'investissement et la date a la quel les stock ont étaient acheté.
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
16 août 2012 à 10:32
En fait, tu cherches à faire quelque chose qui te posera un problème un jour ou l'autre : dans un SGBDR, on ne stocke pas des valeurs que l'on sait calculer.

ex : aucun intérêt à stocker l'âge d'une personne, on sait le calculer à partir de son année de naissance et stocker son âge veut dire passer périodiquement une requête pour mettre à jour l'âge, d'où perte de temps, espace disque supplémentaire.

Pour ton souci, le mieux est de faire une table 'mouvement' où tu iras ajouter une ligne à chaque opération :

idarticle-date-type de mouvement(entree-sortie)-nb d'articles-valorisation

Ca te permettra de prévoir une formule pour calculer ton stock en temps réel, ça t'affranchit d'un recalcul à chaque mouvement, ça te permet d'ajuster ton stock (lors de l'inventaire, par exemple, ou en cas de 'démarque inconnue') par ajout d'une ligne.
Tu pourras même calculer la valeur de ton stock, pour peu que tu utilises une méthode pas trop subtile (genre FIFO plutôt de CUMP).

Tu dois juste prévoir dans ta table article deux champs : l'un avec la quantité initiale d'article et l'autre avec la valorisation, qui serviront de base à la fonction de calcul de stock.
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
16 août 2012 à 11:26
dur dur...

heureusement que c'est access, j'imagine si j'avais du développer mdr.


en gros je me suis mis dedans dès le début.

pour avoir une idée du shéma de la base de donnée que j'ai fait a l'aide du site compagnon.info

Client (relation un-à-plusieurs)
Employées (relation un-à-plusieurs)
Facture (relation un-à-plusieurs)
Inventaire (relation un-à-plusieurs)
Occupation (relation un-à-plusieurs)
Transition fact-inv (relation plusieurs-à-plusieurs)

Des relations avec intégrité référentiel.

la seul table que j'ai ajouté est "ajout_stock" cotenant les champ
ref_ajout
ref_produit (clé primaire)
date_ajout
prix_achat
quantité

lier par une relation à la table inventaire (relation de 1 à plusieurs de numéro inventaire de la table inventaire vers ref_produit de la table ajout_stock)

à mon avis faudrait donc réfléchir a faire autrement si je comprend bien mais c'est dommage il me manque juste l'ajout de stock
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
16 août 2012 à 11:36
les relations 1-n, c'est entre quoi et quoi ?
une capture de l'écran 'relations' serait plus parlante
0
kipetrovitechy Messages postés 178 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 28 février 2013 11
16 août 2012 à 12:00
http://www.x303.net/images/relation.jpg

le champ "quantité stocké " de la table "ajout_stock" était un test car je voulais faire la même chose que le déstockage au début
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
16 août 2012 à 16:18
Pour moi, la table nommée 'inventaire' devrait être la table produit. Elle ne devrait contenir que des données spécifiques au produit (nom, description, tva... ainsi que les deux colonnes dont j'ai parlé : qté initiale, et valeur initiale de ce stock).

La table 'ajout_stock' doit être la table mouvement stock, comme je l'ai dit auparavant.

Restera à faire un ajout de ligne dans cette table, lors de la saisie d'une nouvelle facture ou lors de la livraison par le grossiste.

Prends l'habitude de nommer de la même manière les même champs qui sont en relation d'une table à l'autre...

Quand tu feras une nouvelle facture, tu iras piocher la tva de l'article vendu pour la mettre dans ta facture (prévoir une colonne dans la table transition-fact-inv), ça évitera des ennuis de calcul si le taux de tva change en cours d'année...
0