access et génération d'une valeur auto ???

access et génération d'une valeur auto ??? - Programmation

Marsh Posté le 25-08-2002 à 16:33:08    

Salut tout le monde :D
 
je suis en train de matter ACCESS, le log de db pas le film hein  :D  
 
Et je cherche à générer une valeur automatiquement.
 
En gros c'est un chiffre "numfacture" qui correspond à un numéro de commande.
Qui contient l'id (clè primaire et NuméroAuto) et la date sous le format jjmmaa.
 
Jusqu'à là ça va ??? j'arrive bien à afficher l'id (1 pour le premier), et la date sous le format jjmmaa (240802 pour aujourd'hui). Mais lorsque je demande dans une requète de m'afficher [id]&[date] il me met 124/08/02 (le 1 de l'id et la date au format abrégé :( ).
Comment je peux faire pour générer un numéro du type 1240802 automatiquement ????
 
une macro peut-être ?????
 
je suis un newbie sur ACCESS ! alors n'y aller pas trop fort hein :D
 
merci d'avance :D

Reply

Marsh Posté le 25-08-2002 à 16:33:08   

Reply

Marsh Posté le 26-08-2002 à 15:06:17    

Bon juste pour te donner quelques idées ...
soit une table : table4
champ x type date/time
champ y type numérique
 
ex : x               y
     12/04/2002      5
     13/04/2002      6        
     
SELECT format(x,'ddmmyyyy';) & (select max(y)+1 from table4) AS Expr1
FROM Table4;
 
Résultat : 120420027
           130420027  
 
 
 

Reply

Marsh Posté le 26-08-2002 à 16:55:54    

salut :D merci de me répondre
 
je vois bien ton truc mais j'en fait quoi ??? je le met où ???
 
Depuis hier j'ai à peu près compris les tables, les requètes, les formulaires, les liaisons entre tables, les combinaisons de tables, les requètes de tri et de calcul, les sous-formulaires.
 
Mais dès qu'il faut faire des macros ou générer des formules :( je suis naze. Pourtant je viens de PHP, MySQL, mais je n'arrive pas à m'y retrouver :(
 
j'en fais quoi de ton select ????
 
 

Reply

Marsh Posté le 27-08-2002 à 14:13:34    

Ok
 
Bon tu veux générer un code style  
on est le 25/02/2002  => 125022002
on est le 27/02/2002  => 227022002
on est le 27/08/2002  => 327082002 ....
on est toujours le 27/08/2002 mais c'est un 2 ème insert
=> 427082002 ...
 
Si tu créé une table CONSTU qui contient  
1 champ numérique MAXI,
1 ligne et qui contient / va contenir  
comme donnée le dernier numéro
utilisé (1 puis 2, puis 3 et enfin 4 dans notre cas)  
 
Pour insérer dans une autre table  
champ NUMAUT ex : TABDON une bonne valeur
formatée comme tu veux, tu peux faire par ex :
 
Update CONSTU set MAXI = MAXI + 1  
(on passe de 4 à 5)
 
Insert into TABDON (NUMAUT, ...)  
values ((select max(MAXI)+1 from CONSTU) & format(now,'ddmmyyyy';),...)  
(Valeur insérée ici 527082002)
 
Bon ya d'autre façon de procéder mais ça
ça devrait fonctionner  :heink:  
 

Reply

Marsh Posté le 27-08-2002 à 18:06:59    

Tout d'abord merci de t'occuper de moi :D
 
je comprend bien ce que tu me dis.
 
Le problème c'est que je suis en train de faire les tables, les requètes et les formulaires pour gérer des prises de commandes et je ne sais pas ou mettre les lignes que tu me donne.
 
j'arrive à générer une valeur du type:
227/08/2002 (2 pour le numéro et le reste pour la suite de la date).
J'arrive à formater la date x avec 'jjmmaa' à l'affichage, et le chiffre y séparément.
Mais lors de l'enregistrement du numéro en faisant  
num: [y]&[x] dans une requète
j'obtiens toujours le numéro 2 + la date en forme abrégée 27/02/2002 ==> 2/27/08/2002 :( :( :(
 
j'ai bien matter le format(x,'ddmmyyyy';) que tu me donne et qui devrait marcher, mais je ne sais pas ou l'insérer. J'ai essayé dans une requète, puis dans un formulaire mais il me dit toujours qu'il y a une erreur :(
 
 
 
 
Je l'ai fait en PHP+MySQL pour simuler une prise de commande de pizza :) , ça marche nickel pour les numéros de facture auto, pour les commandes, les clients, bref tout est nickel :D
 
j'essai de faire la même chose avec ACCESS, le prob c'est que je n'ais toujours pas trouver ou je devais coller le code que tu me donne :(
Quand je l'aurais trouver je n'aurais plus besoin de passer par l'assistant d'ACCESS pour programmer des valeurs.
 
 
 
 
merci d'avance
 
 
je vais essayer de matter de ce que tu viens de me donner :)

Reply

Marsh Posté le 28-08-2002 à 13:07:00    

OK  :sleep:  
 
Exemple d'une ligne (en passant) de
la Propriété "sur click" d'un bouton  
texte2 (dans un formulaire formulaire1)
 
DoCmd.RunSQL "Insert into table4 (z) values (format(forms!formulaire1!texte2,'ddmmyyyy';))"
 
=> enr. (z) inséré avec la valeur 27082002

Reply

Marsh Posté le 28-08-2002 à 14:54:33    

:bounce:  :bounce:  :bounce:  
 
j't'dis si ça marche  
 
 :pt1cable:  :pt1cable:  :pt1cable:

Reply

Marsh Posté le 28-08-2002 à 17:50:14    

Bon :(
 
je t'explique en détail car je pense qu'on est pas loin de la soluce :D
 
j'ai une table T1
 
clé primaire 'id' numauto
            'date' format date
            'num' texte
 
ensuite j'ai un formulaire F1 qui pointe sur T1
 
 
ensuite j'ai un formulaire F0 je met un bouton de commande 'nouveau numéro' qui pointe vers F1  
 
sur propriété du bouton de commande , onglet évènement, sur clic
j'ai rentrer  
DoCmd.RunSQL "Insert into T1 (num) values (format(F1!id,'ddmmyyyy';))"
 
mais lorsque je clique sur le bouton de commande 'nouveau numéro'
ça me dit "access ne peut pas trouver la macro 'DoCmd'."
 
 :(  :(  :(  
 
on ne doit pas être loin !!!
 
je suis en train de faire des tests pour savoir si on peut faire des requètes de cette façon pour afficher des données spécifiques.


Message édité par jokool le 28-08-2002 à 17:56:11
Reply

Marsh Posté le 28-08-2002 à 18:15:55    

OUPS je viens de coller ton code dans une feuille visual basic.
 
apparament c'est là qu'il faut le mettre car je viens de voir des DoCmd.  
 
par contre il m'enregistre toujours 311299 et il faut que  mette ddmmyy et non jjmmaa.
 

Reply

Marsh Posté le 29-08-2002 à 01:56:21    

il est 2h  :cry:  
 
et je viens de trouver ou je peux mettre ces satanées instructions SQL  :kaola:  
je m'y retrouve enfin :D
 
mais la syntaxe n'est pas la même qu'avec MySQL, y aurait t'il une doc sur le net dur la syntaxe ????

Reply

Marsh Posté le 29-08-2002 à 01:56:21   

Reply

Marsh Posté le 29-08-2002 à 03:04:41    

il est 3h07
 
je viens de trouver  :pt1cable:  en fait c'est vraiment tout kon
 
UPDATE T1 SET num=num+1 WHERE id=1;
dans une requete heing.
comme avec MySQL koi  :lol:  
 
 

Reply

Marsh Posté le 29-08-2002 à 03:29:37    

Bon ça y est je viens de capter :D la procédure évènementielle :D
 
en fait maintenant lorsque j'ouvre une nouvelle facture j'ai automatiquement une incrémentation du numéro de facture de type 1290802, 2290802, 3290802, etc... top kool :D et du coup je viens de comprendre ou il fallait mettre toutes les formules que tu m'as donné :D
 vieux motard que jamais heing :D
 
le seul truc maintenant c'est j'aimerais bien supprimer la boite de dialogue qui s'affiche entre les deux formulaires qui m'annonce que je met à jours une ligne de la table.
 
 
 
Bon j'm'en vais m'coucher car y s'fait tard quand même heing !!!
 
merci encore pour ta patience  :jap:


Message édité par jokool le 29-08-2002 à 03:30:20
Reply

Marsh Posté le 29-08-2002 à 04:04:48    

Bon ce coup ci je vais vraiment me chécou
 
 :sleep:  :sleep:  :sleep:  :sleep:  :sleep:  :sleep:  :sleep:

Reply

Marsh Posté le 29-08-2002 à 14:33:01    

le seul truc maintenant c'est j'aimerais bien supprimer la boite de dialogue qui s'affiche entre les deux formulaires qui m'annonce que je met à jours une ligne de la table.  
 
=> DoCmd.SetWarnings False
 
puis après ne pas oublier de le repositionner ...
 
=> DoCmd.SetWarnings True
 
 
Bon je vois que ça devient tout bon ...

Reply

Marsh Posté le 29-08-2002 à 14:59:21    

Nickel ça marche d'enfer.
 
Y'a t'il un moyen dans un formulaire de n'afficher qu'un seul enregistrement ? et de virer par la même occasion les icones qui permettent de naviguer dans les tables, pour n'avoir accès qu'a ce que je met sur le formulaire ?? en fait je voudrais pouvoir faire comme avec PHP faire un formulaire et le valider en l'enregistrant avec un bouton de commande (pour éviter d'avoir des enregistrements sans rien du tout dans les champs).
 
Merci encore  :jap:  :jap:  :jap:

Reply

Marsh Posté le 29-08-2002 à 15:59:52    

Il faut regarder dans  
propriétés du Formulaire
 
onglet format  
 
options  
afficher sélecteur ... boutons de déplacement
 

Reply

Marsh Posté le 29-08-2002 à 16:19:13    

Trop fort :D
 
bon je vais te laisser un peu en paix  :D  
 
je vaix essayer de faire un formulaire sans faire un enregistrement auto, et mettre un bouton OK pour valider l'enregistrement.
Je trouve ça nul, le fait qu'il suffise de mettre une valeur dans un champ pour automatiquement valider un nouveau enregistrement :(
 
merci encore :)

Reply

Marsh Posté le 29-08-2002 à 16:26:28    

OUPS encore moi
 
une dernière chose , y'a moyen d'annuler la navigation dans les enregistremnt avec la roulette de la souris ?????
 
Et je suppose qu'il y a aussi des commandes pour virer les barre d'outils ??? je suis en train de matter ça aussi.

Reply

Marsh Posté le 29-08-2002 à 16:34:27    

OUPS OUPS encore moi mais promis je te laisse après ça  :lol:  
 
comment je peux faire pour lors de l'ouverture d'un formulaire tester le jour du mois et remettre à 0 le numéro de facture ????
 
genre  
 
if 'jj' est 1 update num=0;
 
quoi y marche pas ce code ????  :ouch: t'es sur ????
 
je suis en train de matter sur les propriétés du formulaire...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed