Accueil > Forum > > > > compteur
compteur
lundi 15 janvier 2007 à 02:23:52 |
compteur

jolicoeur79
|
salut a tous je suis d'entrain de developper une application vb6 + access j'ai creer un champs qui s'appelle "n° facture" de type numerique mon probleme je veux une fonction qui permet a ce numero de s'intialiser a "1" chaque mois ou annee et merci.
|
|
lundi 15 janvier 2007 à 08:25:35 |
Re : compteur

jmfmarques
|
Si tu gères tes rajouts par une application VB ou VBA : une méthode :
Inscrire dans un fichier texte ou dans la base de registre un drapeau "mois en cours/numéro", par exemple et : - à chaque inscription : lire ce drapeau et : - si le mois en cours est celui du drapeau : donner à ton champ la valeur numéro + 1 - si le mois en cours est différent de celui du drapeau : donner à ton champ la valeur 1 - mettre systématiquement à jour ton drapeau en y inscrivant "mois en cours/numero attribué"
Celà te permettra d'éviter un champ supplémentaire dans ta base (mois) et d'aller systématiquement voir quel était la dernière facture.
Il y a d'autres méthodes, mais elles seront toutes plus gourmandes en octets inscrits sur ton disque.
|
|
lundi 15 janvier 2007 à 09:50:29 |
Re : compteur

Exploreur
|
Salut Jolicoeur79, J'ai eu la même chose à faire pour une de mes sources(Gestion Expéditions), il me fallait un nouveau numéro de bl à chaque changement d'année ex: En 2006 mon Bl était N6/001 En 2007 mon BL devenait N7/001 En faite j'ai un champ(année) supplémentaire dans ma table BL, et à chaque fois que je créé un bl, j'inscrit dans ce champ l'année en cours "2007". quand je change d'année je vais comparer l'année de mon dernier numéro de bl avec l'année en cours. Si cela est pareil je continu en "2007", si cela est différent je prend donc la nouvelle année "2008" pour faire une nouveau BL "N8/001"
Voici un bout de code de ma source pour te montrer comment j'ai procédé.. Bon je suis sûr que ce n'est pas trop optimisé, mais pour te faire une idée de comment procéder. J'espère que cela pourra t'aider.
'On récupère le dernier N° de bl et année pour attribuer un bl par année 'Positionement sur le dernier enregistrement de la base resultatADO.MoveLast 'Déclare variables pour acquisitions info Dim Rannée, Rdate If Not IsNull(resultatADO!bl) Then rrésulta = (resultatADO!bl) If Not IsNull(resultatADO!année) Then Rannée = (resultatADO!année) rrésulta = Mid(rrésulta, 4) 'Rdate = Mid(Date, 7) Rdate = Year(Date) 'Récupère la date systeme(année) et la met en long(ex:2006 au lieu de 06) 'Condition pour les années supérieur à 2009 If Rdate > "2009" Then Rdate = Mid(Rdate, 3) GoTo suite End If 'On compare les dates en vu du nouveau N° de BL If Rannée = Rdate Then Rdate = Mid(Rdate, 4) GoTo suite Else Rdate = Mid(Rdate, 4) GoTo suite End If suite:
'On reconstitut et attribu un nouveau N° de BL 'Condition pour les chiffres < à 9 If rrésulta < 9 Then rrésulta = rrésulta + 1 rrésulta = "00" & rrésulta rrésulta = "N" & Rdate & "/" & rrésulta Text4(0).text = rrésulta GoTo suite1 End If 'Condition pour les chiffres >= 10 et < 100 If rrésulta >= 9 And rrésulta < 100 Or rrésulta = "9" Then rrésulta = rrésulta + 1 rrésulta = "0" & rrésulta rrésulta = "N" & Rdate & "/" & rrésulta Text4(0).text = rrésulta GoTo suite1 End If 'Condition pour les chiffres >= 100 et < 1000 If rrésulta >= 99 Or rrésulta = "99" Then rrésulta = rrésulta + 1 rrésulta = "N" & Rdate & "/" & rrésulta Text4(0).text = rrésulta GoTo suite1 End If suite1:
'Bl par année Rannée = Rannée Like année_encours 'Condition If Rannée = False Then Dim modi modi = Mid(Text4(0).text, 4) modi = "N" & Rdate & "/" & "001" Text4(0).text = modi End If 'Init de mes varaibles rrésulta = "" Rdate = "" Rannée = ""
A+ Exploreur
|
|
lundi 15 janvier 2007 à 11:05:48 |
Re : compteur

jmfmarques
|
Bonjour Exploreur,
C'est bien, mais ... - Celà te fait (comme je le disais) un champ supplémentaire qui viendra gonfler ta base de données. - il te faut (comme je l'ai dit et que tu le dis également) aller à chaque fois à la pêche du dernier enregistrement pour le lire
|
|
lundi 15 janvier 2007 à 11:18:21 |
Re : compteur

Exploreur
|
Bonjour Jmfmarques, Effectivement, disont que j'ai fait cela suivant comment je voyait la chose, ce n'est pas la meilleure solution j'en convient avec toi...Je pensais faire le truc avec un fichier texte (comme tu le dis), c'est vrai que cela soulagerai le code..et serai plus pratique. Cela m'intérèsserai de connaître les autres méthodes dont tu parles... A+ Exploreur....au plaisir
|
|
lundi 15 janvier 2007 à 11:27:30 |
Re : compteur
|
lundi 15 janvier 2007 à 11:35:03 |
Re : compteur

Exploreur
|
Ben...voui, je n'avais pas vu la chose de cette façon, plus pratique éffectivement... Quelque fois on a les choses devant son nez(moi) et on ne voit pas la simplicité même...  ...Merci de l'explication. A+ Exploreur
|
|
lundi 15 janvier 2007 à 18:10:09 |
Re : compteur

caramelmou
|
Il vaut mieux aller cherche le dernier numero créé pour le mois en cours dans la table même, afin d'éviter des erreurs (si plusieurs tables, ou fichier texte externe : risque de problème en multi utilisateurs) Ex de code pour Jolicoeur
la table facture contient un champ n_facture (champ type texte clef primaire) ou les numero de factures sont sous la forme YY/MM/XXXX (an/mois/numero) code pour ajouter une facture émise à la date date_fac Dim monrs As New ADODB.Recordset, cnn As New ADODB.Connection Dim date_fac As Date, strCritere As String, strSQL As String date_fac = Date ' pour l'exemple la date du jour strCritere = Format(date_fac, "YY/MM") & "/" strSQL = "SELECT * from FACTURE ORDER BY n_facture DESC" Set cnn = CurrentProject.Connection monrs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic monrs.Find "n_facture LIKE '" & strCritere & "*'", 0, adSearchForward If monrs.EOF Then new_facture = strCritere & Format(1, "00000") Else new_facture = strCritere & Format(Val(Mid(monrs!n_facture, Len(strCritere) + 1)) + 1, "00000") End If monrs.AddNew monrs!n_facture = new_facture ' ....'les autres champs de la facture a ajouter monrs.Update monrs.Close
Dr.T
|
|
lundi 15 janvier 2007 à 21:04:49 |
Re : compteur

jmfmarques
|
Bonjour caramelmou...
Multi utilisateurs, hein...? Et en laissant l'ouverture accessible à tous au même moment, hein ?
Dis-voir un peu, toi : tu dois en trouver surement quelques-un beaucoup plus sévères, de problèmes.... en agissant de la sorte !!!
|
|
mardi 16 janvier 2007 à 14:55:33 |
Re : compteur

caramelmou
|
..? dans le code le champ n_facture est une clef primaire. Il faut en effet écrire une gestion d'erreur lors de l'update au cas ou plusieurs utilisateurs tentent de créer simultanement une facture (si erreur = doublon, on peut recommencer ou abandonner) Mais toute facon, en réseau il faudra gérer le verrouillage que l'on utilise un fichier externe ou une table supplementaire: cf msdn [ Lien ] Comment implémenter les compteurs multi-utilisateur personnalisés dans Jet 4.0 et ADO 2.1Il me semblait que ma solution était plus simple... maintenant si quelqu'un veut mettre un code complet avec verrrouillage et gestion d'erreur... ;-) Dr.T
|
|
Cette discussion est classée dans : compteur
Répondre à ce message
Sujets en rapport avec ce message
Compteur Internet [ par Raf ]
Les freewares ou sharewares de compteur de communications sur internet ne répondant pas à mes souhaits, je souhaite essayer de devellopper moi-même mo
compteur [ par sebanba ]
Peut on sous vb5 créer une variable ds un programme mais qui ne se vide pas a la fin du programme afin de créer un compteur pour faire un nombre limit
compteur [ par robert ]
j'aimerai savoir comment créer avec visual basic un compteur c'est à dire comment faire varier un chiffre de 1 par exemple chaque fois que l'on clique
Winsock/API/compteur internet [ par styleto ]
bon je cherche a soivoir quel est l'apiou le code qui permaitrai de fair un compteur internet non pas pour les heur mai pour savoir combien d'octet ou
Compteur [ par aoncoquin ]
J'ai une source assez intéressante mais ça me fait drôle de la publier ; ce que je sous-entend, c'est qu'en fait , il m'a fallut un bon temps de réell
Compteur ? [ par néo ]
Bjr, je débute en program VBA sous WORD 97.J'ai crée un petit logiciel et je voudrais y inclure un compteur, pour qu'a chaque redémarrage de celui il
Comment effectuer la lecture de chaque élément d'un tableau [ par emarck ]
Bonsoir, J'ai déclarer un tableau sans spécifier sa longeur et je fais un Redim preserve afin de le réajuster à chaque fois que j'ajoute un élémen
Probleme avec UserControl [ par BRAHIM ]
Bonjour,S.v.p je suis vraiment coincé c'est l'ultime etape pour bouclermon projet. J'ai creer un composant activex avec UserControl comportantune nouv
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|