OVH Cloud OVH Cloud

detecter s'il existe deja ...

8 réponses
Avatar
fth
Bonjour,
Un petit soucis pour une appli qui gère des tables de restaurants.
Process:
Je crée une table (de resto, pas access!)
j'ajoute les articles etc...
quand le client paie, j'imprime le ticket et la table est effacée.

Tout ça fonctionne bien.

Probleme:
je crée une nlle table mais je me trompe de numéro de table;
je crée donc (par exemple) la table N°2 qui existe déjà.
Probleme!

Ce que je cherche à faire:
si la table 2 existe déjà, on l'affiche;
si elle n'existe pas, je la crée.

Ci-joint le code que je cherche à faire tourner et qui me pose probleme, en
effet, tout semble bien se dérouler mais quand il doit créer la nlle table,
j'ai une erreur qui me dit que le record doit d'abord etre sauvé etc ...

d'avance merci pour vos lumières!

Frédéric

Dim Runningtable
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Please find another table number" ' Define message.
Style = vbYes + vbCritical + vbDefaultButton2 ' Define buttons.
Title = "Existing Table Number" ' Define title.
'Help = "DEMO.HLP" ' Define Help file.
'Ctxt = 1000 ' Define topic

If IsNull(DLookup("NumItem", "item", NumItem = Form_MainScreen.NumItem)) =
True Then
DoCmd.GoToRecord , , acNewRec

Else

Response = MsgBox(Msg, Style, Title)
Form_MainScreen.NumItem.SetFocus
End If

8 réponses

Avatar
3stone
Salut,

"fth"
| Un petit soucis pour une appli qui gère des tables de restaurants.
| Process:
| Je crée une table (de resto, pas access!)
| j'ajoute les articles etc...
| quand le client paie, j'imprime le ticket et la table est effacée.
|
| Tout ça fonctionne bien.
|
| Probleme:
| je crée une nlle table mais je me trompe de numéro de table;
| je crée donc (par exemple) la table N°2 qui existe déjà.
| Probleme!
|
| Ce que je cherche à faire:
| si la table 2 existe déjà, on l'affiche;
| si elle n'existe pas, je la crée.
|
| Ci-joint le code que je cherche à faire tourner et qui me pose probleme, en
| effet, tout semble bien se dérouler mais quand il doit créer la nlle table,
| j'ai une erreur qui me dit que le record doit d'abord etre sauvé etc ...
|
| d'avance merci pour vos lumières!
|
| Frédéric
|
| Dim Runningtable
| Dim Msg, Style, Title, Help, Ctxt, Response, MyString
| Msg = "Please find another table number" ' Define message.
| Style = vbYes + vbCritical + vbDefaultButton2 ' Define buttons.
| Title = "Existing Table Number" ' Define title.
| 'Help = "DEMO.HLP" ' Define Help file.
| 'Ctxt = 1000 ' Define topic

faudrait typer les variables, aussi... ;-)


Tu as déjà posé cette question, non ?

J'imagine :
- que tu ouvre un petit formulaire de saisie du numéro ?
- que ton formulaire principal se nomme "MainScreen"
- Que tu supprime la 'table' avant de la recréer

Sans le dernier cas, un simple index sans doublons sur le champ
"item" (NumeroTable) devrais suffire...


Sinon, a placer dans l'événement sur "Avant mise à jour" du textbox NumItem :
(le textbox de saisie du numéro de table...)


If IsNull(DLookup("NumItem", "item", "NumItem =" & Forms!MainScreen.NumItem)) = True Then
DoCmd.GoToRecord , , acNewRec
Else
Response = MsgBox(Msg, Style, Title)
Cancel = True
End If


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
fth
Salut Pierre,

Oui effectivement, j'ai deja posé cette question il y a qq temps, sans
réussir à résoudre le probleme. (entretemps, j'ai déménagé, donc tout
emballé et voila que je récupère mon pc ...et les prob!).

Bon, comme rien ne t'échappe (!), quand j'applique ton code, j'ai une erreur
du genre:
" run time error 2105: you can't go to the spécified record"
Et pourquoi donc bien que je ne peux pas aller sur le spécified record
nontichaP'

Merci
"3stone" wrote in message
news:uX9OI$
Salut,

"fth"
| Un petit soucis pour une appli qui gère des tables de restaurants.
| Process:
| Je crée une table (de resto, pas access!)
| j'ajoute les articles etc...
| quand le client paie, j'imprime le ticket et la table est effacée.
|
| Tout ça fonctionne bien.
|
| Probleme:
| je crée une nlle table mais je me trompe de numéro de table;
| je crée donc (par exemple) la table N°2 qui existe déjà.
| Probleme!
|
| Ce que je cherche à faire:
| si la table 2 existe déjà, on l'affiche;
| si elle n'existe pas, je la crée.
|
| Ci-joint le code que je cherche à faire tourner et qui me pose probleme,
en
| effet, tout semble bien se dérouler mais quand il doit créer la nlle
table,
| j'ai une erreur qui me dit que le record doit d'abord etre sauvé etc ...
|
| d'avance merci pour vos lumières!
|
| Frédéric
|
| Dim Runningtable
| Dim Msg, Style, Title, Help, Ctxt, Response, MyString
| Msg = "Please find another table number" ' Define message.
| Style = vbYes + vbCritical + vbDefaultButton2 ' Define buttons.
| Title = "Existing Table Number" ' Define title.
| 'Help = "DEMO.HLP" ' Define Help file.
| 'Ctxt = 1000 ' Define topic

faudrait typer les variables, aussi... ;-)


Tu as déjà posé cette question, non ?

J'imagine :
- que tu ouvre un petit formulaire de saisie du numéro ?
- que ton formulaire principal se nomme "MainScreen"
- Que tu supprime la 'table' avant de la recréer

Sans le dernier cas, un simple index sans doublons sur le champ
"item" (NumeroTable) devrais suffire...


Sinon, a placer dans l'événement sur "Avant mise à jour" du textbox
NumItem :
(le textbox de saisie du numéro de table...)


If IsNull(DLookup("NumItem", "item", "NumItem =" &
Forms!MainScreen.NumItem)) = True Then
DoCmd.GoToRecord , , acNewRec
Else
Response = MsgBox(Msg, Style, Title)
Cancel = True
End If


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw





Avatar
3stone
Salut,

"fth"
| Bon, comme rien ne t'échappe (!),


si, mais je mémorise ;-)




quand j'applique ton code, j'ai une erreur
| du genre:
|


Pourquoi le simple index sans doublons ne suffit pas ?


et, ou saisi tu le "numéro de table" ?



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
fth
Re,
En fait, tout se passe dans la form "mainscreen"

un champs 'NumItem' dans un txtbox . En quittant ce champs, le code doit
agir cad soit la table existe et il l'affiche (ça évite de créer une double
table) soit elle n'existe pas et il ajoute alors un nv record dans la table
'Item'.
ça semble simple et je calle comme un cloche ..
Grrrr

"3stone" wrote in message
news:
Salut,

"fth"
| Bon, comme rien ne t'échappe (!),


si, mais je mémorise ;-)




quand j'applique ton code, j'ai une erreur
| du genre:
|


Pourquoi le simple index sans doublons ne suffit pas ?


et, ou saisi tu le "numéro de table" ?



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw



Avatar
3stone
"fth"
| En fait, tout se passe dans la form "mainscreen"
| un champs 'NumItem' dans un txtbox . En quittant ce champs, le code doit
| agir cad soit la table existe et il l'affiche (ça évite de créer une double
| table) soit elle n'existe pas et il ajoute alors un nv record dans la table
| 'Item'.



Tu as donc un textbox indépendant pour la "sélection" de la table...


Donc, a placer dans l'événement sur "Avant mise à jour" de ce textbox "txtSélectionTable"


If IsNull(DLookup("NumItem", "item", "NumItem =" & Me!txtSelectionTable)) = True Then
DoCmd.GoToRecord , , acNewRec
Else
Response = MsgBox "Cette table est déjà attribuée..."
Cancel = True
End If




--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
fth
Re,

Ben j'a itoujours la meme erreur:
" run time error 2105: you can't go to the spécified record"
Dingue comme histoire ..

"3stone" wrote in message
news:%

"fth"
| En fait, tout se passe dans la form "mainscreen"
| un champs 'NumItem' dans un txtbox . En quittant ce champs, le code doit
| agir cad soit la table existe et il l'affiche (ça évite de créer une
double
| table) soit elle n'existe pas et il ajoute alors un nv record dans la
table
| 'Item'.



Tu as donc un textbox indépendant pour la "sélection" de la table...


Donc, a placer dans l'événement sur "Avant mise à jour" de ce textbox
"txtSélectionTable"


If IsNull(DLookup("NumItem", "item", "NumItem =" & Me!txtSelectionTable))
= True Then
DoCmd.GoToRecord , , acNewRec
Else
Response = MsgBox "Cette table est déjà attribuée..."
Cancel = True
End If




--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw



Avatar
MBFAC
Bonjour

Je pense à un défaut de structure de la base :-(
pourquoi ne pas ajouter l'heure d'arrivée (automatique (time())
et l'heure de sortie à l'édition du ticket
et au lieu de saisir le numéro de table le choisir dans la liste des tables
celle dont le ticket à été édité ?
Car j'espere que la suppression de la table aprés l'édition du ticket
n'implique pas la suppression du repas !

Cordialement

Michel
Avatar
fth
Bonjour Michel,

je comprend ton point de vue.
Disons qu'il s'agit ici d'un process qui doit etre simplifié.

sur l'écran principal, en plus du détail par table, tu as un écran qui te
montre en permanence les tables ouvertes. Il suffit de cliquer sur la table
désirée pour voir les détails ajouter ou supprimer qq chose, faire un print
etc.
quand le ticket est imprimé, la table et ses détails disparaissent ( integ
referentielle).
Rien ne DOIT rester dans la base après la cloture de la table.

De la mm manière, pas question de pouvoir encoder par exemple deux table
N°3.

Voila, partant de la et du fait que tout doit aller très vite, j'ai un
txtbox ou on encode un num de table;
soit elle existe et ses détails apparaissent (elle devient la table active)
soit elle n'existe pas et elle est crée et complétée.

Simplisime à souhait ...
sauf que quand il s'agit d'ajouter un record dans la table, il me met une
erreur '2105' ...
sans ça, ça tournerais bien ...
quant à jouer sur l'heure d'entrée et de cloture ...???

Bonne journée

Frédéric



"MBFAC" wrote in message
news:dalvsk$atn$
Bonjour

Je pense à un défaut de structure de la base :-(
pourquoi ne pas ajouter l'heure d'arrivée (automatique (time())
et l'heure de sortie à l'édition du ticket
et au lieu de saisir le numéro de table le choisir dans la liste des
tables celle dont le ticket à été édité ?
Car j'espere que la suppression de la table aprés l'édition du ticket
n'implique pas la suppression du repas !

Cordialement

Michel