Boucle

Le
Chevrot
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec la
table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20 champs
dont un champ « Numéro » dont la valeur se situe entre 1 et X step 1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ze Titi
Le #6226521
Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec la
table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20 champs
dont un champ « Numéro » dont la valeur se situe entre 1 et X step 1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Chevrot
Le #6226431
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec la
table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20 champs
dont un champ « Numéro » dont la valeur se situe entre 1 et X step 1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






ze Titi
Le #6226411
Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Chevrot
Le #6226141
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info








Jessy Sempere
Le #6226091
Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12 ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info










Chevrot
Le #6226041
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12 ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12 ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info















Jessy Sempere
Le #6226031
Re,

Dans ce cas, tu peux utiliser une autre variable

dim kMax as integer

kMax = dmax("Numéro", "[Batch 12 ADC]")

If kMax <> 0 then
...
ton code
...
End if

--
@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12
ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où
la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton
instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas
zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12
ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC
comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1
et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une
bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette
boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

















Chevrot
Le #6225781
Merci, ça marche parfaitement. Un grand merci à Ze Titi et Jessy Sempere pour
votre aide compétente, rapide et compréhensive des failles que j'ai dans
Access.

J'ai une autre question, toujours relative aux boucles:

Je dispose d'une table "Couples" à trois champs

Numéro Prix 1 Prix 2
1 25.50 110.25
2 132.18 125.41
3 78.25 120.25
et ainsi de suite jusqu'à l'enregistrement 720.

La valeur de Numéro (numérique) s'étage donc de 1 à 720.

Je cherche à rédiger une procédure en boucle qui crée, pour les valeurs de
Numéro de 1 à 720, à partir d'une requête création de table, "AAA"
(comportant le champ Prix 1 et le champ Prix 2), effectue un certain nombre
d'opérations (DoCmd.OpenQuery etc), puis passe à la valeur suivante de Numéro
etc jusqu'à 720. Il y a toujours la même condition, que le nombre
d'enregistrements dans la table créée par "AAA" soit <>0.

Pouvez vous m'aider à rédiger cette nouvelle boucle?

Merci d'avance

Chevrot


Re,

Dans ce cas, tu peux utiliser une autre variable

dim kMax as integer

kMax = dmax("Numéro", "[Batch 12 ADC]")

If kMax <> 0 then
....
ton code
....
End if

--
@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12
ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où
la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton
instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas
zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12
ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC
comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1
et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une
bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette
boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






















ze Titi
Le #6225751
Salut Chevrot !

Je pense qu'il aurait été bon de créer un nouveau post puisque le sujet
est différent. Bref...

Dim rs as DAO.Recordset
set rs=CurrentDb.OpenRecordset("Couples",dbOpendynaset)
rs.MoveLast
rs.MoveFirst
While not rs.EOF
'Opérations à effectuer
rs.MoveNext
Wend
rs.Close
Set rs=Nothing

Cette boucle te permet de parcourir tous les enregistrements de ta
table "Couples"

En ce jour exceptionnel du mercredi 04/04/2007, tu nous as très
généreusement gratifié du message suivant:

Merci, ça marche parfaitement. Un grand merci à Ze Titi et Jessy Sempere pour
votre aide compétente, rapide et compréhensive des failles que j'ai dans
Access.

J'ai une autre question, toujours relative aux boucles:

Je dispose d'une table "Couples" à trois champs

Numéro Prix 1 Prix 2
1 25.50 110.25
2 132.18 125.41
3 78.25 120.25
et ainsi de suite jusqu'à l'enregistrement 720.

La valeur de Numéro (numérique) s'étage donc de 1 à 720.

Je cherche à rédiger une procédure en boucle qui crée, pour les valeurs de
Numéro de 1 à 720, à partir d'une requête création de table, "AAA"
(comportant le champ Prix 1 et le champ Prix 2), effectue un certain nombre
d'opérations (DoCmd.OpenQuery etc), puis passe à la valeur suivante de Numéro
etc jusqu'à 720. Il y a toujours la même condition, que le nombre
d'enregistrements dans la table créée par "AAA" soit <>0.

Pouvez vous m'aider à rédiger cette nouvelle boucle?

Merci d'avance

Chevrot


Re,

Dans ce cas, tu peux utiliser une autre variable

dim kMax as integer

kMax = dmax("Numéro", "[Batch 12 ADC]")

If kMax <> 0 then
....
ton code
....
End if

--
@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12
ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où
la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton
instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas
zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12
ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC
comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1
et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une
bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette
boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info
















--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info









Publicité
Poster une réponse
Anonyme