Quelle solution utilisez vous lorsque vous devez créer un fichier contenant
un compteur unique, mais pouvant être nul ??
par exemple, un fichier de colis, chaque colis n'a pas de numéro tant qu'il
est à l'endroit "A".
Des que l'on passe le colis à l'endroit "B" il recoit un numéro unique.
Déclarer une clé unique coince pour les colis à l'endroit A
Déclarer une clé doublon coince en multiuser pour etre sur d'attriber 1 et 1
seul numéro.
ma solution : avoir un fichier "compteur" contenant un seul enregistrement
(le fameux numéro unique) :
Locker fichier "compteur"
prendre le numéro
numéro = numéro+1,
mettre à jour fichier "compteur", Delocker fichier compteur
mais ca me gave profondément, de devoir jongler comme ca ....
y a t'il une solution + élégante ??
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
mat
patrice wrote:
Bonjour
Quelle solution utilisez vous lorsque vous devez créer un fichier contenant un compteur unique, mais pouvant être nul ??
par exemple, un fichier de colis, chaque colis n'a pas de numéro tant qu'il est à l'endroit "A". Des que l'on passe le colis à l'endroit "B" il recoit un numéro unique.
Déclarer une clé unique coince pour les colis à l'endroit A Déclarer une clé doublon coince en multiuser pour etre sur d'attriber 1 et 1 seul numéro.
ma solution : avoir un fichier "compteur" contenant un seul enregistrement (le fameux numéro unique) : Locker fichier "compteur" prendre le numéro numéro = numéro+1, mettre à jour fichier "compteur", Delocker fichier compteur
mais ca me gave profondément, de devoir jongler comme ca .... y a t'il une solution + élégante ??
Bonjour,
Question bête: puisque le numéro unique est attribué automatiquement, pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A? Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait pas avoir besoin d'une autre distinction par le numéro. Tous les colis à A ont alors le même statut.
A part cela, on peut aussi verrouiller l'enregistrement automatiquement au moment de la lecture au lieu de verrouiller le fichier:
tantque vrai si hLitPremier(monFichier, hBlocageEcriture) alors sortir fin monFichier.numéro ++ hModifie(monFichier) // déblocage automatique
Salutations Mat
patrice wrote:
Bonjour
Quelle solution utilisez vous lorsque vous devez créer un fichier contenant
un compteur unique, mais pouvant être nul ??
par exemple, un fichier de colis, chaque colis n'a pas de numéro tant qu'il
est à l'endroit "A".
Des que l'on passe le colis à l'endroit "B" il recoit un numéro unique.
Déclarer une clé unique coince pour les colis à l'endroit A
Déclarer une clé doublon coince en multiuser pour etre sur d'attriber 1 et 1
seul numéro.
ma solution : avoir un fichier "compteur" contenant un seul enregistrement
(le fameux numéro unique) :
Locker fichier "compteur"
prendre le numéro
numéro = numéro+1,
mettre à jour fichier "compteur", Delocker fichier compteur
mais ca me gave profondément, de devoir jongler comme ca ....
y a t'il une solution + élégante ??
Bonjour,
Question bête: puisque le numéro unique est attribué automatiquement,
pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A?
Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait
pas avoir besoin d'une autre distinction par le numéro. Tous les colis à
A ont alors le même statut.
A part cela, on peut aussi verrouiller l'enregistrement automatiquement
au moment de la lecture au lieu de verrouiller le fichier:
tantque vrai
si hLitPremier(monFichier, hBlocageEcriture) alors sortir
fin
monFichier.numéro ++
hModifie(monFichier) // déblocage automatique
Quelle solution utilisez vous lorsque vous devez créer un fichier contenant un compteur unique, mais pouvant être nul ??
par exemple, un fichier de colis, chaque colis n'a pas de numéro tant qu'il est à l'endroit "A". Des que l'on passe le colis à l'endroit "B" il recoit un numéro unique.
Déclarer une clé unique coince pour les colis à l'endroit A Déclarer une clé doublon coince en multiuser pour etre sur d'attriber 1 et 1 seul numéro.
ma solution : avoir un fichier "compteur" contenant un seul enregistrement (le fameux numéro unique) : Locker fichier "compteur" prendre le numéro numéro = numéro+1, mettre à jour fichier "compteur", Delocker fichier compteur
mais ca me gave profondément, de devoir jongler comme ca .... y a t'il une solution + élégante ??
Bonjour,
Question bête: puisque le numéro unique est attribué automatiquement, pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A? Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait pas avoir besoin d'une autre distinction par le numéro. Tous les colis à A ont alors le même statut.
A part cela, on peut aussi verrouiller l'enregistrement automatiquement au moment de la lecture au lieu de verrouiller le fichier:
tantque vrai si hLitPremier(monFichier, hBlocageEcriture) alors sortir fin monFichier.numéro ++ hModifie(monFichier) // déblocage automatique
Salutations Mat
patrice
"mat" a écrit dans le message de news:42f231f6$
Question bête: puisque le numéro unique est attribué automatiquement, pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A? Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait pas avoir besoin d'une autre distinction par le numéro. Tous les colis à A ont alors le même statut.
Parce que l'on veut par exemple, que tous les colis ait un numéro d'entrée dans la zone, qui se suive dans l'ordre d'arrivée, par exemple :ex:
Colis 1, A Colis 2, A Colis 3, A Colis 4, B,num 1 Colis 5, A Colis 6, B, num 2
et maintenant, si le colis 2,A passe dans B, il devient : Colis 2, B, num 3
A part cela, on peut aussi verrouiller l'enregistrement automatiquement au moment de la lecture au lieu de verrouiller le fichier:
bien sur, je cherchais plus une solution qui n'aurait pas besoin d'un 2ieme fichier par exemple: prochain= MAX( colis.num )+1 hlitrecherche( le colis à faire entrer dasn B) colis.zone=B colis.num=prochain+1 tantque pas hmodifie(COLIS) si herreurdoublon()úux alors traitement d'erreur colis.num++ fin
ce genre de truc marche nickel avec la majorité des databases qui n'enregistre pas les clés dont les colonnes sont nulles
"mat" <NoSPAM-mnobs@bluemail.ch> a écrit dans le message de
news:42f231f6$1_3@news.bluewin.ch...
Question bête: puisque le numéro unique est attribué automatiquement,
pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A?
Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait
pas avoir besoin d'une autre distinction par le numéro. Tous les colis à
A ont alors le même statut.
Parce que l'on veut par exemple, que tous les colis ait un numéro d'entrée
dans la zone, qui se suive dans l'ordre d'arrivée,
par exemple :ex:
Colis 1, A
Colis 2, A
Colis 3, A
Colis 4, B,num 1
Colis 5, A
Colis 6, B, num 2
et maintenant, si le colis 2,A passe dans B, il devient :
Colis 2, B, num 3
A part cela, on peut aussi verrouiller l'enregistrement automatiquement
au moment de la lecture au lieu de verrouiller le fichier:
bien sur, je cherchais plus une solution qui n'aurait pas besoin d'un 2ieme
fichier
par exemple:
prochain= MAX( colis.num )+1
hlitrecherche( le colis à faire entrer dasn B)
colis.zone=B
colis.num=prochain+1
tantque pas hmodifie(COLIS)
si herreurdoublon()úux alors traitement d'erreur
colis.num++
fin
ce genre de truc marche nickel avec la majorité des databases qui
n'enregistre pas les clés dont les colonnes sont nulles
Question bête: puisque le numéro unique est attribué automatiquement, pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A? Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait pas avoir besoin d'une autre distinction par le numéro. Tous les colis à A ont alors le même statut.
Parce que l'on veut par exemple, que tous les colis ait un numéro d'entrée dans la zone, qui se suive dans l'ordre d'arrivée, par exemple :ex:
Colis 1, A Colis 2, A Colis 3, A Colis 4, B,num 1 Colis 5, A Colis 6, B, num 2
et maintenant, si le colis 2,A passe dans B, il devient : Colis 2, B, num 3
A part cela, on peut aussi verrouiller l'enregistrement automatiquement au moment de la lecture au lieu de verrouiller le fichier:
bien sur, je cherchais plus une solution qui n'aurait pas besoin d'un 2ieme fichier par exemple: prochain= MAX( colis.num )+1 hlitrecherche( le colis à faire entrer dasn B) colis.zone=B colis.num=prochain+1 tantque pas hmodifie(COLIS) si herreurdoublon()úux alors traitement d'erreur colis.num++ fin
ce genre de truc marche nickel avec la majorité des databases qui n'enregistre pas les clés dont les colonnes sont nulles
mat
patrice wrote:
"mat" a écrit dans le message de news:42f231f6$
Question bête: puisque le numéro unique est attribué automatiquement, pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A? Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait pas avoir besoin d'une autre distinction par le numéro. Tous les colis à A ont alors le même statut.
Parce que l'on veut par exemple, que tous les colis ait un numéro d'entrée dans la zone, qui se suive dans l'ordre d'arrivée, par exemple :ex:
Colis 1, A Colis 2, A Colis 3, A Colis 4, B,num 1 Colis 5, A Colis 6, B, num 2
et maintenant, si le colis 2,A passe dans B, il devient : Colis 2, B, num 3
A part cela, on peut aussi verrouiller l'enregistrement automatiquement au moment de la lecture au lieu de verrouiller le fichier:
bien sur, je cherchais plus une solution qui n'aurait pas besoin d'un 2ieme fichier par exemple: prochain= MAX( colis.num )+1 hlitrecherche( le colis à faire entrer dasn B) colis.zone=B colis.num=prochain+1 tantque pas hmodifie(COLIS) si herreurdoublon()úux alors traitement d'erreur colis.num++ fin
ce genre de truc marche nickel avec la majorité des databases qui n'enregistre pas les clés dont les colonnes sont nulles
je vois...
Il y a une solution pour éviter l'usage un autre fichier mais elle est au moins aussi compliqué. On peut utiliser un 2e curseur sur le même fichier (hAlias/hChangeNom), faire une lecture/blocage du dernier enregistrement (recherche générique avec clé sur zone et num) hLitRecherchePremier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture) Colis.Num = Colis2.Num + 1 modifier enregistrement Colis débloquer enregistrement Colis2
des doublons ne sont pas possible dans ce cas, mais est-ce une solution meilleure ?
Salutations Mat
patrice wrote:
"mat" <NoSPAM-mnobs@bluemail.ch> a écrit dans le message de
news:42f231f6$1_3@news.bluewin.ch...
Question bête: puisque le numéro unique est attribué automatiquement,
pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A?
Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait
pas avoir besoin d'une autre distinction par le numéro. Tous les colis à
A ont alors le même statut.
Parce que l'on veut par exemple, que tous les colis ait un numéro d'entrée
dans la zone, qui se suive dans l'ordre d'arrivée,
par exemple :ex:
Colis 1, A
Colis 2, A
Colis 3, A
Colis 4, B,num 1
Colis 5, A
Colis 6, B, num 2
et maintenant, si le colis 2,A passe dans B, il devient :
Colis 2, B, num 3
A part cela, on peut aussi verrouiller l'enregistrement automatiquement
au moment de la lecture au lieu de verrouiller le fichier:
bien sur, je cherchais plus une solution qui n'aurait pas besoin d'un 2ieme
fichier
par exemple:
prochain= MAX( colis.num )+1
hlitrecherche( le colis à faire entrer dasn B)
colis.zone=B
colis.num=prochain+1
tantque pas hmodifie(COLIS)
si herreurdoublon()úux alors traitement d'erreur
colis.num++
fin
ce genre de truc marche nickel avec la majorité des databases qui
n'enregistre pas les clés dont les colonnes sont nulles
je vois...
Il y a une solution pour éviter l'usage un autre fichier mais elle est
au moins aussi compliqué. On peut utiliser un 2e curseur sur le même
fichier (hAlias/hChangeNom), faire une lecture/blocage du dernier
enregistrement (recherche générique avec clé sur zone et num)
hLitRecherchePremier(Colis2, cleZoneNum, hConstruitValCle(Colis,
cleZoneNum, "B"), hBlocageEcriture)
Colis.Num = Colis2.Num + 1
modifier enregistrement Colis
débloquer enregistrement Colis2
des doublons ne sont pas possible dans ce cas, mais est-ce une solution
meilleure ?
Question bête: puisque le numéro unique est attribué automatiquement, pourquoi ne peut il pas l'avoir déjà lorsqu'il se trouve à l'endroit A? Si l'endroit est spécifié sur l'enregistrement des colis, on ne devrait pas avoir besoin d'une autre distinction par le numéro. Tous les colis à A ont alors le même statut.
Parce que l'on veut par exemple, que tous les colis ait un numéro d'entrée dans la zone, qui se suive dans l'ordre d'arrivée, par exemple :ex:
Colis 1, A Colis 2, A Colis 3, A Colis 4, B,num 1 Colis 5, A Colis 6, B, num 2
et maintenant, si le colis 2,A passe dans B, il devient : Colis 2, B, num 3
A part cela, on peut aussi verrouiller l'enregistrement automatiquement au moment de la lecture au lieu de verrouiller le fichier:
bien sur, je cherchais plus une solution qui n'aurait pas besoin d'un 2ieme fichier par exemple: prochain= MAX( colis.num )+1 hlitrecherche( le colis à faire entrer dasn B) colis.zone=B colis.num=prochain+1 tantque pas hmodifie(COLIS) si herreurdoublon()úux alors traitement d'erreur colis.num++ fin
ce genre de truc marche nickel avec la majorité des databases qui n'enregistre pas les clés dont les colonnes sont nulles
je vois...
Il y a une solution pour éviter l'usage un autre fichier mais elle est au moins aussi compliqué. On peut utiliser un 2e curseur sur le même fichier (hAlias/hChangeNom), faire une lecture/blocage du dernier enregistrement (recherche générique avec clé sur zone et num) hLitRecherchePremier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture) Colis.Num = Colis2.Num + 1 modifier enregistrement Colis débloquer enregistrement Colis2
des doublons ne sont pas possible dans ce cas, mais est-ce une solution meilleure ?
Il y a une solution pour éviter l'usage un autre fichier mais elle est au moins aussi compliqué. On peut utiliser un 2e curseur sur le même fichier (hAlias/hChangeNom), faire une lecture/blocage du dernier enregistrement (recherche générique avec clé sur zone et num) hLitRecherchePremier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture) Colis.Num = Colis2.Num + 1 modifier enregistrement Colis débloquer enregistrement Colis2
des doublons ne sont pas possible dans ce cas, mais est-ce une solution meilleure ?
l'idée est interessante, mais si l'enregistrement est déjà vérouillé, on ne peut plus créer de nouveau numéro.
bon je crois que l'on ne peut pas échapper au 2ieme fichier
merci pour vos lumières.
"mat" <NoSPAM-mnobs@bluemail.ch> a écrit dans le message de
news:42f25191_1@news.bluewin.ch...
Il y a une solution pour éviter l'usage un autre fichier mais elle est
au moins aussi compliqué. On peut utiliser un 2e curseur sur le même
fichier (hAlias/hChangeNom), faire une lecture/blocage du dernier
enregistrement (recherche générique avec clé sur zone et num)
hLitRecherchePremier(Colis2, cleZoneNum, hConstruitValCle(Colis,
cleZoneNum, "B"), hBlocageEcriture)
Colis.Num = Colis2.Num + 1
modifier enregistrement Colis
débloquer enregistrement Colis2
des doublons ne sont pas possible dans ce cas, mais est-ce une solution
meilleure ?
l'idée est interessante, mais si l'enregistrement est déjà vérouillé, on ne
peut plus créer de nouveau numéro.
bon je crois que l'on ne peut pas échapper au 2ieme fichier
Il y a une solution pour éviter l'usage un autre fichier mais elle est au moins aussi compliqué. On peut utiliser un 2e curseur sur le même fichier (hAlias/hChangeNom), faire une lecture/blocage du dernier enregistrement (recherche générique avec clé sur zone et num) hLitRecherchePremier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture) Colis.Num = Colis2.Num + 1 modifier enregistrement Colis débloquer enregistrement Colis2
des doublons ne sont pas possible dans ce cas, mais est-ce une solution meilleure ?
l'idée est interessante, mais si l'enregistrement est déjà vérouillé, on ne peut plus créer de nouveau numéro.
bon je crois que l'on ne peut pas échapper au 2ieme fichier
merci pour vos lumières.
mat
patrice wrote:
l'idée est interessante, mais si l'enregistrement est déjà vérouillé, on ne peut plus créer de nouveau numéro.
Non, c'est comme une nouvelle instance (contexte hyper file indépendant). Le dernier enregistrement est verrouillé dans une instance et le nouveau créé dans l'autre. Essaye, c'est quand-même assez simple.
Salutations Mat
patrice wrote:
l'idée est interessante, mais si l'enregistrement est déjà vérouillé, on ne
peut plus créer de nouveau numéro.
Non, c'est comme une nouvelle instance (contexte hyper file
indépendant). Le dernier enregistrement est verrouillé dans une instance
et le nouveau créé dans l'autre. Essaye, c'est quand-même assez simple.
l'idée est interessante, mais si l'enregistrement est déjà vérouillé, on ne peut plus créer de nouveau numéro.
Non, c'est comme une nouvelle instance (contexte hyper file indépendant). Le dernier enregistrement est verrouillé dans une instance et le nouveau créé dans l'autre. Essaye, c'est quand-même assez simple.
Salutations Mat
Patrice Labracherie
"mat" a écrit dans le message de news:42f38e80$
Non, c'est comme une nouvelle instance (contexte hyper file indépendant). Le dernier enregistrement est verrouillé dans une instance et le nouveau créé dans l'autre. Essaye, c'est quand-même assez simple.
ce que je voulais dire, c'est que si quelqu'un est entré en modif sur la fiche colis (pendant plusieurs secondes, le temps de modifier des données quelconque) l'instruction hLitRechercheDernier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture + hGénérique) devrait renvoyer faux en refusant de bloquer le colis.
"mat" <NoSPAM-mnobs@bluemail.ch> a écrit dans le message de
news:42f38e80$1_1@news.bluewin.ch...
Non, c'est comme une nouvelle instance (contexte hyper file
indépendant). Le dernier enregistrement est verrouillé dans une instance
et le nouveau créé dans l'autre. Essaye, c'est quand-même assez simple.
ce que je voulais dire, c'est que si quelqu'un est entré en modif sur la
fiche colis (pendant plusieurs secondes, le temps de modifier des données
quelconque)
l'instruction
hLitRechercheDernier(Colis2, cleZoneNum, hConstruitValCle(Colis,
cleZoneNum, "B"), hBlocageEcriture + hGénérique)
devrait renvoyer faux en refusant de bloquer le colis.
Non, c'est comme une nouvelle instance (contexte hyper file indépendant). Le dernier enregistrement est verrouillé dans une instance et le nouveau créé dans l'autre. Essaye, c'est quand-même assez simple.
ce que je voulais dire, c'est que si quelqu'un est entré en modif sur la fiche colis (pendant plusieurs secondes, le temps de modifier des données quelconque) l'instruction hLitRechercheDernier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture + hGénérique) devrait renvoyer faux en refusant de bloquer le colis.
mat
Patrice Labracherie wrote:
ce que je voulais dire, c'est que si quelqu'un est entré en modif sur la fiche colis (pendant plusieurs secondes, le temps de modifier des données quelconque) l'instruction hLitRechercheDernier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture + hGénérique) devrait renvoyer faux en refusant de bloquer le colis.
très vrai, alors retour au fichier séparé... personnellement, j'utilise un fichier "Configuration" pour des valeurs par défaut et, entre autre, les numéros de documents. Donc pas besoin d'un fichier additionnel.
Patrice Labracherie wrote:
ce que je voulais dire, c'est que si quelqu'un est entré en modif sur la
fiche colis (pendant plusieurs secondes, le temps de modifier des données
quelconque)
l'instruction
hLitRechercheDernier(Colis2, cleZoneNum, hConstruitValCle(Colis,
cleZoneNum, "B"), hBlocageEcriture + hGénérique)
devrait renvoyer faux en refusant de bloquer le colis.
très vrai, alors retour au fichier séparé... personnellement, j'utilise
un fichier "Configuration" pour des valeurs par défaut et, entre autre,
les numéros de documents. Donc pas besoin d'un fichier additionnel.
ce que je voulais dire, c'est que si quelqu'un est entré en modif sur la fiche colis (pendant plusieurs secondes, le temps de modifier des données quelconque) l'instruction hLitRechercheDernier(Colis2, cleZoneNum, hConstruitValCle(Colis, cleZoneNum, "B"), hBlocageEcriture + hGénérique) devrait renvoyer faux en refusant de bloquer le colis.
très vrai, alors retour au fichier séparé... personnellement, j'utilise un fichier "Configuration" pour des valeurs par défaut et, entre autre, les numéros de documents. Donc pas besoin d'un fichier additionnel.