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

Erreur pour cree une nouvelle fiche

5 réponses
Avatar
Claude
Bonjour vous tous

Je ne suis pas un pro de la programmation. Je suis sous=20
Access 2000 et je me bute a un petit probl=E8me.=20
Je tiens en inventaire un parc informatique, et dans un=20
formulaire sous des controles d'onglet, j'ai un bouton=20
pour cree des nouveaux enregistrements avec des references=20
(Ex. : PC. Moniteur, Imprimante, etc.). Lors ce que=20
j'utilise ma commande, je suis capable de cree une=20
nouvelle fiche avec tous mes parametres. Mais voila mon=20
probleme , lors ce que je veux lui fait executer une=20
boucle pour cree plusieurs fiches, il m'affiche =AB Erreur=20
d'execution 2105. Impossible d'atteindre l'enregistrement=20
specifie =BB =20
J'ai utilise l'outil de debogage pour voir le chemin et il=20
cree une premiere fiche correctement. C'est seulement=20
quand il revient au debut de la boucle qu'il bloque a =AB=20
DoCmd.GoToRecord , , acNewRec =BB. J'ai meme fait l'essai=20
d'actualiser le formulaire a la fin de la boucle mais sans=20
succes.

Ou est mon erreur .
Merci pour votre temps et patiente.
Claude


Voici une partie du code :
Dim IntNomSymMax As Integer
Dim SinCadreInfoNouveau As Single
Dim LongQuantite As Long

SinCadreInfoNouveau =3D DLookup
("[ValeurCadre]", "infoNouveau", "")
IntNomSymMax =3D DMax("[General_NomSym]", "general")
LongQuantite =3D DLookup("[Quantite]", "infoNouveau", "")
=20
Do Until LongQuantite =3D 0
=20
DoCmd.GoToRecord , , acNewRec
=20
If IntNomSymMax < 900000 Then
Me.General_NomSym.Value =3D 900000
Else
Me.General_NomSym =3D IntNomSymMax + 1
End If

Select Case SinCadreInfoNouveau
Case 1
With Me
.NomP =3D "Nouveau"
.Prenom =3D "Nouveau"
.OrdiTexte =3D "Ordi"
.Model =3D DLookup("[model]", "InfoNouveau", "")
.Puissance =3D DLookup
("[Puissance]", "InfoNouveau", "")
.Memoire =3D DLookup("[Memoire]", "InfoNouveau", "")
.Disque =3D DLookup("[Disque]", "InfoNouveau", "")
.Commande =3D DLookup
("[Commande]", "InfoNouveau", "")

End With
Case 2
With Me

.NomP =3D "Nouveau"
.Prenom =3D "Nouveau"
=20
.OrdiTexte =3D "Ecran"
.Model =3D DLookup("[modelEcran]", "InfoNouveau", "")
.Commande =3D DLookup
("[Commande]", "InfoNouveau", "")
End With

End Select
LongQuantite =3D LongQuantite - 1
Loop
End Sub

5 réponses

Avatar
Gilbert
Bonjour,

Es-tu sûr de remplir tous les champs obligatoires? Ceux qui ont Null
interdit à Oui, ou bien Chaîne vide autorisée à Non, ou des règles de
validation qui ne seraient pas respectées.
Quelle est la clef primaire? Est-ce un champ NuméroAuto?

Gilbert

"Claude" a écrit dans le message de
news:057801c4dee4$2e43c6c0$
Bonjour vous tous

Je ne suis pas un pro de la programmation. Je suis sous
Access 2000 et je me bute a un petit problème.
Je tiens en inventaire un parc informatique, et dans un
formulaire sous des controles d'onglet, j'ai un bouton
pour cree des nouveaux enregistrements avec des references
(Ex. : PC. Moniteur, Imprimante, etc.). Lors ce que
j'utilise ma commande, je suis capable de cree une
nouvelle fiche avec tous mes parametres. Mais voila mon
probleme , lors ce que je veux lui fait executer une
boucle pour cree plusieurs fiches, il m'affiche « Erreur
d'execution 2105. Impossible d'atteindre l'enregistrement
specifie »
J'ai utilise l'outil de debogage pour voir le chemin et il
cree une premiere fiche correctement. C'est seulement
quand il revient au debut de la boucle qu'il bloque a «
DoCmd.GoToRecord , , acNewRec ». J'ai meme fait l'essai
d'actualiser le formulaire a la fin de la boucle mais sans
succes.

Ou est mon erreur .
Merci pour votre temps et patiente.
Claude


Voici une partie du code :
Dim IntNomSymMax As Integer
Dim SinCadreInfoNouveau As Single
Dim LongQuantite As Long

SinCadreInfoNouveau = DLookup
("[ValeurCadre]", "infoNouveau", "")
IntNomSymMax = DMax("[General_NomSym]", "general")
LongQuantite = DLookup("[Quantite]", "infoNouveau", "")

Do Until LongQuantite = 0

DoCmd.GoToRecord , , acNewRec

If IntNomSymMax < 900000 Then
Me.General_NomSym.Value = 900000
Else
Me.General_NomSym = IntNomSymMax + 1
End If

Select Case SinCadreInfoNouveau
Case 1
With Me
.NomP = "Nouveau"
.Prenom = "Nouveau"
.OrdiTexte = "Ordi"
.Model = DLookup("[model]", "InfoNouveau", "")
.Puissance = DLookup
("[Puissance]", "InfoNouveau", "")
.Memoire = DLookup("[Memoire]", "InfoNouveau", "")
.Disque = DLookup("[Disque]", "InfoNouveau", "")
.Commande = DLookup
("[Commande]", "InfoNouveau", "")

End With
Case 2
With Me

.NomP = "Nouveau"
.Prenom = "Nouveau"

.OrdiTexte = "Ecran"
.Model = DLookup("[modelEcran]", "InfoNouveau", "")
.Commande = DLookup
("[Commande]", "InfoNouveau", "")
End With

End Select
LongQuantite = LongQuantite - 1
Loop
End Sub
Avatar
Claude
Bonjour Gilbert

Mon formulaire est base sur une requete de plusieurs
tables liees avec une clef primaire sans doublons. C'est
pour cela que dans mon code je fais verifier ce No, car
mes nouvelles fiches (Commande de biens )ont un numero
supperieur a 900000 avant de recevoir un numero definitif
mais inferieur et tous les champs sont bien définis Ce qui
est bizarre c'est que si je retire le Do Until/Loop tout
fonctionne tres bien. Il passe une premiere fois dans la
boucle. C'est seulement quand il veut cree une deuxieme
fiche que le message s'affiche. J'ai essaye de lui faire
un requery (Me.requery) mais sans succes. Est-il possible
que l'execution se fasse trop vite, peut-on lui mettre un
temps de pause avant de repasser dans la boucle?

Encore merci pour vos precieux conseils
Claude


-----Message d'origine-----
Bonjour,

Es-tu sûr de remplir tous les champs obligatoires? Ceux
qui ont Null

interdit à Oui, ou bien Chaîne vide autorisée à Non, ou
des règles de

validation qui ne seraient pas respectées.
Quelle est la clef primaire? Est-ce un champ NuméroAuto?

Gilbert

"Claude" a écrit
dans le message de

news:057801c4dee4$2e43c6c0$
Bonjour vous tous

Je ne suis pas un pro de la programmation. Je suis sous
Access 2000 et je me bute a un petit problème.
Je tiens en inventaire un parc informatique, et dans un
formulaire sous des controles d'onglet, j'ai un bouton
pour cree des nouveaux enregistrements avec des references
(Ex. : PC. Moniteur, Imprimante, etc.). Lors ce que
j'utilise ma commande, je suis capable de cree une
nouvelle fiche avec tous mes parametres. Mais voila mon
probleme , lors ce que je veux lui fait executer une
boucle pour cree plusieurs fiches, il m'affiche « Erreur
d'execution 2105. Impossible d'atteindre l'enregistrement
specifie »
J'ai utilise l'outil de debogage pour voir le chemin et il
cree une premiere fiche correctement. C'est seulement
quand il revient au debut de la boucle qu'il bloque a «
DoCmd.GoToRecord , , acNewRec ». J'ai meme fait l'essai
d'actualiser le formulaire a la fin de la boucle mais sans
succes.

Ou est mon erreur .
Merci pour votre temps et patiente.
Claude


Voici une partie du code :
Dim IntNomSymMax As Integer
Dim SinCadreInfoNouveau As Single
Dim LongQuantite As Long

SinCadreInfoNouveau = DLookup
("[ValeurCadre]", "infoNouveau", "")
IntNomSymMax = DMax("[General_NomSym]", "general")
LongQuantite = DLookup("[Quantite]", "infoNouveau", "")

Do Until LongQuantite = 0

DoCmd.GoToRecord , , acNewRec

If IntNomSymMax < 900000 Then
Me.General_NomSym.Value = 900000
Else
Me.General_NomSym = IntNomSymMax + 1
End If

Select Case SinCadreInfoNouveau
Case 1
With Me
.NomP = "Nouveau"
.Prenom = "Nouveau"
.OrdiTexte = "Ordi"
.Model = DLookup("[model]", "InfoNouveau", "")
.Puissance = DLookup
("[Puissance]", "InfoNouveau", "")
.Memoire = DLookup("[Memoire]", "InfoNouveau", "")
.Disque = DLookup("[Disque]", "InfoNouveau", "")
.Commande = DLookup
("[Commande]", "InfoNouveau", "")

End With
Case 2
With Me

.NomP = "Nouveau"
.Prenom = "Nouveau"

.OrdiTexte = "Ecran"
.Model = DLookup
("[modelEcran]", "InfoNouveau", "")

.Commande = DLookup
("[Commande]", "InfoNouveau", "")
End With

End Select
LongQuantite = LongQuantite - 1
Loop
End Sub


.



Avatar
Gilbert
Il est possible de mettre un 'temps de pause' avec la commande DoEvents

Gilbert

"Claude" a écrit dans le message de
news:078301c4dfbb$d786f180$
Bonjour Gilbert

Mon formulaire est base sur une requete de plusieurs
tables liees avec une clef primaire sans doublons. C'est
pour cela que dans mon code je fais verifier ce No, car
mes nouvelles fiches (Commande de biens )ont un numero
supperieur a 900000 avant de recevoir un numero definitif
mais inferieur et tous les champs sont bien définis Ce qui
est bizarre c'est que si je retire le Do Until/Loop tout
fonctionne tres bien. Il passe une premiere fois dans la
boucle. C'est seulement quand il veut cree une deuxieme
fiche que le message s'affiche. J'ai essaye de lui faire
un requery (Me.requery) mais sans succes. Est-il possible
que l'execution se fasse trop vite, peut-on lui mettre un
temps de pause avant de repasser dans la boucle?

Encore merci pour vos precieux conseils
Claude


-----Message d'origine-----
Bonjour,

Es-tu sûr de remplir tous les champs obligatoires? Ceux
qui ont Null

interdit à Oui, ou bien Chaîne vide autorisée à Non, ou
des règles de

validation qui ne seraient pas respectées.
Quelle est la clef primaire? Est-ce un champ NuméroAuto?

Gilbert

"Claude" a écrit
dans le message de

news:057801c4dee4$2e43c6c0$
Bonjour vous tous

Je ne suis pas un pro de la programmation. Je suis sous
Access 2000 et je me bute a un petit problème.
Je tiens en inventaire un parc informatique, et dans un
formulaire sous des controles d'onglet, j'ai un bouton
pour cree des nouveaux enregistrements avec des references
(Ex. : PC. Moniteur, Imprimante, etc.). Lors ce que
j'utilise ma commande, je suis capable de cree une
nouvelle fiche avec tous mes parametres. Mais voila mon
probleme , lors ce que je veux lui fait executer une
boucle pour cree plusieurs fiches, il m'affiche « Erreur
d'execution 2105. Impossible d'atteindre l'enregistrement
specifie »
J'ai utilise l'outil de debogage pour voir le chemin et il
cree une premiere fiche correctement. C'est seulement
quand il revient au debut de la boucle qu'il bloque a «
DoCmd.GoToRecord , , acNewRec ». J'ai meme fait l'essai
d'actualiser le formulaire a la fin de la boucle mais sans
succes.

Ou est mon erreur .
Merci pour votre temps et patiente.
Claude


Voici une partie du code :
Dim IntNomSymMax As Integer
Dim SinCadreInfoNouveau As Single
Dim LongQuantite As Long

SinCadreInfoNouveau = DLookup
("[ValeurCadre]", "infoNouveau", "")
IntNomSymMax = DMax("[General_NomSym]", "general")
LongQuantite = DLookup("[Quantite]", "infoNouveau", "")

Do Until LongQuantite = 0

DoCmd.GoToRecord , , acNewRec

If IntNomSymMax < 900000 Then
Me.General_NomSym.Value = 900000
Else
Me.General_NomSym = IntNomSymMax + 1
End If

Select Case SinCadreInfoNouveau
Case 1
With Me
.NomP = "Nouveau"
.Prenom = "Nouveau"
.OrdiTexte = "Ordi"
.Model = DLookup("[model]", "InfoNouveau", "")
.Puissance = DLookup
("[Puissance]", "InfoNouveau", "")
.Memoire = DLookup("[Memoire]", "InfoNouveau", "")
.Disque = DLookup("[Disque]", "InfoNouveau", "")
.Commande = DLookup
("[Commande]", "InfoNouveau", "")

End With
Case 2
With Me

.NomP = "Nouveau"
.Prenom = "Nouveau"

.OrdiTexte = "Ecran"
.Model = DLookup
("[modelEcran]", "InfoNouveau", "")

.Commande = DLookup
("[Commande]", "InfoNouveau", "")
End With

End Select
LongQuantite = LongQuantite - 1
Loop
End Sub


.



Avatar
3stone
Salut,

"Gilbert"
Il est possible de mettre un 'temps de pause' avec la commande DoEvents



Hmmm...

DoEvents, "rend la main" pour permettre au CPU de s'occuper
d'autres jobs en attentes...

Parfait, par exemple dans un série de mise à jour, pour permettre
à l'affichage de "suivre" les mises à jour déjà réalisées.

Mais, il n'y a pas de notion de "durée"...
Donc, s'il n'y a rien d'autre "sur le feu", il est de retour très rapidement.


Claude:
"Est-il possible que l'execution se fasse trop vite..."

Cela voudrait dire que tu *devrais* retoucher ton programme avant
les 5 prochaines années, puisque l'on prévoit une accélération par 10
de la puissance des CPU ;-)
La réponse est donc non, si l'enchainement des actions est correct!


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
Claude
Bonjour vous deux.
J'ai trouve mon erreur, j'avais une variable que je devais
re-initialiser quand elle revenait dans la boucle, car je
voulais vérifier sa valeur (DMAX)pour l'incrémenter

IntNomSymMax = DMax("[General_NomSym]", "general")

C'est quand on est trop pret que l'on ne voit rien

Merci pour vos conseils.
Claude

-----Message d'origine-----
Salut,

"Gilbert"
Il est possible de mettre un 'temps de pause' avec la
commande DoEvents




Hmmm...

DoEvents, "rend la main" pour permettre au CPU de
s'occuper

d'autres jobs en attentes...

Parfait, par exemple dans un série de mise à jour, pour
permettre

à l'affichage de "suivre" les mises à jour déjà réalisées.

Mais, il n'y a pas de notion de "durée"...
Donc, s'il n'y a rien d'autre "sur le feu", il est de
retour très rapidement.



Claude:
"Est-il possible que l'execution se fasse trop vite..."

Cela voudrait dire que tu *devrais* retoucher ton
programme avant

les 5 prochaines années, puisque l'on prévoit une
accélération par 10

de la puissance des CPU ;-)
La réponse est donc non, si l'enchainement des actions
est correct!



--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome



.