Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

champ calculé sur enregistrement précédent

4 réponses
Avatar
accessetmoi
Bonjour

j'ai cherch=E9 avant de poser la question, j'ai bien trouv=E9 une syntaxe
du genre

PrecedentCM: DLookUp("[Relev=E9CM]";"[TableR=E9servoir]";"[R=E9fRelev=E9]=
=3D"
&
Nz(DMax("[R=E9fRelev=E9]";"[TableR=E9servoir]";"[R=E9fRelev=E9]<" & [R=E9fR=
elev=E9]);
0))

mais je n'ai pas tout compris et je n'arrive pas =E0 l'appliquer

soit une table avec diff=E9rents champs et en autres
NumDebut NumFin Quantite NumeroDeb NumeroFin
exemple de ce que je voudrais comme r=E9sultat
1er enregistrement 1316826 1318000 100 1316826 1316925
2=E8me enregistrement 1316926 1318000 75 1316926 1317000
3=E8me enregistrement 1317001 1318000 100 1317001 1317100

le champ NumeroFin du 1er enregistrement doit =EAtre recopi=E9
automatiquement dans l'enregistrement suivant dans le champ NumDebut

L'utilisateur doit saisir le champ quantit=E9

lors du premier enregistrement, l'utilisateur compl=E8te les champs
NumDebut et NumFin puis pour les enregistrements suivants ces champs
sont automatiquement compl=E9t=E9s


lors de l'enregistrement x
qui affichera
x=E8me enregistrement 1317901 1318000 100 1317901 1318000 le compte est
clos car le champ NumFin est =E9gale au champ NumeroFin
pour l'enregistrement suivant
il faudra saisir dans les champs NumDebut et NumFin
exemple
5039001 5041000 100 5039001 5039100
5039101 5041000 100 5039201 5039300

et je pense que l=E0 =E7a va coinc=E9

j'ai bien essay=E9 de cr=E9er une autre table pour les champs NumDebut et
NumFin mais je n'arrive pas au r=E9sultat escompt=E9 ( voir mon message
intitul=E9 Gestion de tickets)

Merci d'avance

4 réponses

Avatar
3stone
Salut,

a écrit:
soit une table avec différents champs et en autres
NumDebut NumFin Quantite NumeroDeb NumeroFin
exemple de ce que je voudrais comme résultat
1er enregistrement 1316826 1318000 100 1316826 1316925
2ème enregistrement 1316926 1318000 75 1316926 1317000
3ème enregistrement 1317001 1318000 100 1317001 1317100

le champ NumeroFin du 1er enregistrement doit être recopié
automatiquement dans l'enregistrement suivant dans le champ NumDebut

L'utilisateur doit saisir le champ quantité

lors du premier enregistrement, l'utilisateur complète les champs
NumDebut et NumFin puis pour les enregistrements suivants ces champs
sont automatiquement complétés


lors de l'enregistrement x
qui affichera
xème enregistrement 1317901 1318000 100 1317901 1318000 le compte est
clos car le champ NumFin est égale au champ NumeroFin
pour l'enregistrement suivant
il faudra saisir dans les champs NumDebut et NumFin
exemple
5039001 5041000 100 5039001 5039100
5039101 5041000 100 5039201 5039300
_____


Pas très cohérent comme explications ;-)

- Pourquoi as tu deux fois le champ NumDebut et NumFin ?
- Ce que tu as pensé comme structure me fait penser à Excel...

Je fais donc abstraction de cela... pour t'indiquer comment
récupérer la valeur d'un champ de l'enregistrement précédent.
Ceci à condition que la table possède un clé primaire NumeroAuto (ID)

A placer sur activation (Form_Current) du formulaire:

If Me.NewRecord Then
If DCount("*", "T_Numeros") > 0 Then
Me.NumDebut = Nz(DLookup("NumFin", "T_Numeros", "ID=" _
& DMax("ID", "T_Numeros")), 0) + 1
End If
End If

J'ai mis "+1" car je pense que tu ne peux pas récupérer le même
numéro, celui-ci existerait deux fois...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
accessetmoi
On 20 août, 14:47, "3stone" wrote:
Pas très cohérent comme explications ;-)

- Pourquoi as tu deux fois le champ NumDebut et NumFin ?
- Ce que tu as pensé comme structure me fait penser à Excel...

Je fais donc abstraction de cela... pour t'indiquer comment
récupérer la valeur d'un champ de l'enregistrement précédent.
Ceci à condition que la table possède un clé primaire NumeroAuto (I D)

A placer sur activation (Form_Current) du formulaire:

If Me.NewRecord Then
     If DCount("*", "T_Numeros") > 0 Then
           Me.NumDebut = Nz(DLookup("NumFin", "T_Numeros", "ID=" _
                               & DMax("ID ", "T_Numeros")), 0) + 1
     End If
End If

J'ai mis "+1" car je pense que tu ne peux pas récupérer le même
numéro, celui-ci existerait deux fois...

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



Merci Stone, je garde l'info précieusement
pour l'instant je suis un peu perdue
j'arrive pas à créer quelque chose de correct

une vieille base écrite sous sdb que j'essaye de comprendre
Avatar
accessetmoi
Comme mes explications n'étaient pas très claires

voilà ce que je voudrais faire mais je coince sur la structure

- soit une liasse de 300 tickets numérotés de 1 à 300
le 01/01/2008 le client dupont prend 100 tickets soit du numéro 1 à
100
reste dans la liasse 200 tickets numérotés de 101 à 300
le 10/01/2008 le client durand prend 50 tickets soit du numéro 101 à
150
reste dans la liasse 150 tickets numérotés de 151 à 300
le 31/01/2008 le client dupont prend à nouveau 150 tickets soit du
numéro 151 à 300

un message d'alerte s'affiche s'il on veut donner plus de 150 tickets
un message d'alerte précise après la dernière opération qu'il n'y a
plus de liasse

donc prise en charge d'une nouvelle liasse
01/02/2008 prise en charge d'une liasse de 500 tickets de 1001 à 1500
( à noter le numéro de tickets entre chaque liasse ne se suit pas)

Requêtes à créer pour sortir état permettant d'afficher le nombre d e
tickets sortie dans l'année, de tickets en stock,
de tickets pris par tel client etc etc

voilà si quelqu'un a une idée

merci d'avance

A moins de la faire dans Excel ?
Avatar
3stone
Salut,

a écrit :
voilà ce que je voudrais faire mais je coince sur la structure

- soit une liasse de 300 tickets numérotés de 1 à 300
le 01/01/2008 le client dupont prend 100 tickets soit du numéro 1 à
100
reste dans la liasse 200 tickets numérotés de 101 à 300
le 10/01/2008 le client durand prend 50 tickets soit du numéro 101 à
150
reste dans la liasse 150 tickets numérotés de 151 à 300
le 31/01/2008 le client dupont prend à nouveau 150 tickets soit du
numéro 151 à 300

un message d'alerte s'affiche s'il on veut donner plus de 150 tickets
un message d'alerte précise après la dernière opération qu'il n'y a
plus de liasse

donc prise en charge d'une nouvelle liasse
01/02/2008 prise en charge d'une liasse de 500 tickets de 1001 à 1500
( à noter le numéro de tickets entre chaque liasse ne se suit pas)

Requêtes à créer pour sortir état permettant d'afficher le nombre de
tickets sortie dans l'année, de tickets en stock,
de tickets pris par tel client etc etc
____


Tu me donnes l'impression que tu te demande comment créer ta base,
et que Access est encore assez hermétique pour toi ;-)

Tu dis :
"une vieille base écrite sous sdb que j'essaye de comprendre"

Superbase ?


Que dire...
Si tu as des difficultés pour créer les requetes de sélection, sommes
toutes assez simple, pour alimenter ton état (une requête avec juste
un critère sur l'année et/ou sur un client), les requêtes de "vérification"
te seront impossibles...

Découpe totalement ton problème...
Le Ticket_De doit se trouver dans la série disponible et ne pas être
dans une série attribuée.
La vérification de Ticket_A se fait pareillement...

Si ce que je t'ai indiqué est totalement opaque, ce n'est pas de l'aide
que tu cherches, mais quelqu'un qui te fait ta base...
Hésiter entre Excel et Access confirmerait plutôt cela.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)