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

Erreur d'execution 2001

2 réponses
Avatar
el_quincho
Bonjour

Suite a mon message j'ai reussi a ecrire ce code :


Code :
dim somme as variant
Dim db As Database: Set db = CurrentDb
Dim rFacture As DAO.Recordset
Set rFacture = db.OpenRecordset("facture", dbOpenDynaset)
Do While Not rFacture.EOF

DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Factures reçues selon contrat] =
budget2.[Factures reçues selon contrat] +" & rFacture!montan & " WHERE
(((budget2.Idbudget)=" & rFacture!recupidbudget & "));")
DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Dépenses Total] =
budget2!Bdcencours+budget2![Factures reçues selon contrat]+budget2![Factures
reçues hors contrats] WHERE (((budget2.Idbudget)=" & rFacture!recupidbudget &
"));")
DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Solde à ce jour] =
[budget2]![Budget DSI initial]-[budget2]![Dépenses Total] WHERE
(((budget2.Idbudget)=" & rFacture!recupidbudget & "));")

somme = DLookup("[Expr1]", "R_sommecheancmoulin")

DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Solde (avec prévcontrats selon
budg DSI)] = budget2![Budget DSI initial]-(budget2![Dépenses Total]+ " &
somme & ") WHERE (((budget2.Idbudget)=" & rFacture!recupidbudget & "));")
rFacture.MoveNext


Loop
rFacture.Close: Set rFacture = Nothing
db.Close: Set db = Nothing

Les premieres commandes runSQL s'execute bien mais j'ai un probleme d'erreur
d'execution 2001 sur le dlookup

La requete R_sommecheancmoulin est basé sur une requete de non concordance.
Voici le code des requetes:
R_sommecheancmoulin:

Code :
SELECT Sum(RNC_echeancmoulin!montant) AS Expr1, RNC_echeancmoulin.idcontrat
FROM RNC_echeancmoulin
GROUP BY RNC_echeancmoulin.idcontrat;

Et voici le code de la requete de non concordance :

Code :
SELECT Echeancier.idecheanc, Echeancier.mois, Echeancier.année,
Echeancier.montant, Echeancier.idcontrat
FROM Echeancier LEFT JOIN facture ON Echeancier.mois = facture.mois
WHERE (((Echeancier.année)="2006") AND
((Echeancier.idcontrat)=[rFacture]![recupnbdc]) AND ((facture.mois) Is Null));

Je ne sis pas si la variable somme qui ne va pas ou si c'est le code de mes
requetes

Je fais bien reference aux champs du recordset ouvert
[rFacture]![recupnbdc]

Merci de m'aider

2 réponses

Avatar
Eric
re,

Au premier coup d'oeil, je dirai qu'il faut que tu sortes
[rFacture]![recupnbdc] dans ta requête de non-correspondance

SELECT Echeancier.idecheanc, Echeancier.mois, Echeancier.année,
Echeancier.montant, Echeancier.idcontrat
FROM Echeancier LEFT JOIN facture ON Echeancier.mois = facture.mois
WHERE Echeancier.année="2006" AND
Echeancier.idcontrat=" & rFacture![recupnbdc] & " AND facture.mois Is Null;

Echeancier.année est un champ Texte ? Si non, supprimes les " autour de 2006

Bonjour

Suite a mon message j'ai reussi a ecrire ce code :


Code :
dim somme as variant
Dim db As Database: Set db = CurrentDb
Dim rFacture As DAO.Recordset
Set rFacture = db.OpenRecordset("facture", dbOpenDynaset)
Do While Not rFacture.EOF

DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Factures reçues selon contrat] =
budget2.[Factures reçues selon contrat] +" & rFacture!montan & " WHERE
(((budget2.Idbudget)=" & rFacture!recupidbudget & "));")
DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Dépenses Total] =
budget2!Bdcencours+budget2![Factures reçues selon contrat]+budget2![Factures
reçues hors contrats] WHERE (((budget2.Idbudget)=" & rFacture!recupidbudget &
"));")
DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Solde à ce jour] =
[budget2]![Budget DSI initial]-[budget2]![Dépenses Total] WHERE
(((budget2.Idbudget)=" & rFacture!recupidbudget & "));")

somme = DLookup("[Expr1]", "R_sommecheancmoulin")

DoCmd.RunSQL ("UPDATE budget2 SET budget2.[Solde (avec prévcontrats selon
budg DSI)] = budget2![Budget DSI initial]-(budget2![Dépenses Total]+ " &
somme & ") WHERE (((budget2.Idbudget)=" & rFacture!recupidbudget & "));")
rFacture.MoveNext


Loop
rFacture.Close: Set rFacture = Nothing
db.Close: Set db = Nothing

Les premieres commandes runSQL s'execute bien mais j'ai un probleme d'erreur
d'execution 2001 sur le dlookup

La requete R_sommecheancmoulin est basé sur une requete de non concordance.
Voici le code des requetes:
R_sommecheancmoulin:

Code :
SELECT Sum(RNC_echeancmoulin!montant) AS Expr1, RNC_echeancmoulin.idcontrat
FROM RNC_echeancmoulin
GROUP BY RNC_echeancmoulin.idcontrat;

Et voici le code de la requete de non concordance :

Code :
SELECT Echeancier.idecheanc, Echeancier.mois, Echeancier.année,
Echeancier.montant, Echeancier.idcontrat
FROM Echeancier LEFT JOIN facture ON Echeancier.mois = facture.mois
WHERE (((Echeancier.année)="2006") AND
((Echeancier.idcontrat)=[rFacture]![recupnbdc]) AND ((facture.mois) Is Null));

Je ne sis pas si la variable somme qui ne va pas ou si c'est le code de mes
requetes

Je fais bien reference aux champs du recordset ouvert
[rFacture]![recupnbdc]

Merci de m'aider



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
Comme tu dois réécrire le sql de la requête de non correspondance, il
faut corriger comme suit pour l'année:
"... WHERE Echeancier.année='2006' AND Echeancier.idcontrat=" &
rFacture![recupnbdc] & " AND ..."

(enlever les ' si année est numérique)

re,

Au premier coup d'oeil, je dirai qu'il faut que tu sortes
[rFacture]![recupnbdc] dans ta requête de non-correspondance

SELECT Echeancier.idecheanc, Echeancier.mois, Echeancier.année,
Echeancier.montant, Echeancier.idcontrat
FROM Echeancier LEFT JOIN facture ON Echeancier.mois = facture.mois
WHERE Echeancier.année="2006" AND
Echeancier.idcontrat=" & rFacture![recupnbdc] & " AND facture.mois Is Null;

Echeancier.année est un champ Texte ? Si non, supprimes les " autour de
2006



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr