salut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
salut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
salut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
Merci!
1. Comment ajouter une référence à DAO et que cela signifie t-il?
2. J'ai fait une erreur dans mon énoncé: 1250 est une chaine texte, pas un
nombre.
Désolé de mon faible niveau.
Mercisalut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
Merci!
1. Comment ajouter une référence à DAO et que cela signifie t-il?
2. J'ai fait une erreur dans mon énoncé: 1250 est une chaine texte, pas un
nombre.
Désolé de mon faible niveau.
Merci
salut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
Merci!
1. Comment ajouter une référence à DAO et que cela signifie t-il?
2. J'ai fait une erreur dans mon énoncé: 1250 est une chaine texte, pas un
nombre.
Désolé de mon faible niveau.
Mercisalut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
Bonjour,
1 - Vas dans l'éditeur VB par ALT + F11
ou par le Menu Outis|Macro|Visual Basic Editor
Dans l'éditeur VB : Menu Outils|Références et tu fais descendre
l'ascenseur jusqu'à Microsoft DAO 3.6 Object Library (3.6 ou 3.x suvant
ta version d'Access) que tu coches. Tu charges une librairie qui te
donne accès aux objets de base de données.
2 - Dans le code que t'a donné David, mets:
Dim db as DAO.Database
Dim rq as DAO.QueryDef
remplaces les + par des &
3 - le SQl devient :
SQL = SQL + "WHERE ETA_NUM='1250'"
set rqÛ.createQueryDef("A 1250")
Toutefois pas assez d'informations quant à l'origine de la valeur du
champ ETAT_NUM pour plus de précision.Merci!
1. Comment ajouter une référence à DAO et que cela signifie t-il?
2. J'ai fait une erreur dans mon énoncé: 1250 est une chaine texte, pas un
nombre.
Désolé de mon faible niveau.
Mercisalut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
1 - Vas dans l'éditeur VB par ALT + F11
ou par le Menu Outis|Macro|Visual Basic Editor
Dans l'éditeur VB : Menu Outils|Références et tu fais descendre
l'ascenseur jusqu'à Microsoft DAO 3.6 Object Library (3.6 ou 3.x suvant
ta version d'Access) que tu coches. Tu charges une librairie qui te
donne accès aux objets de base de données.
2 - Dans le code que t'a donné David, mets:
Dim db as DAO.Database
Dim rq as DAO.QueryDef
remplaces les + par des &
3 - le SQl devient :
SQL = SQL + "WHERE ETA_NUM='1250'"
set rqÛ.createQueryDef("A 1250")
Toutefois pas assez d'informations quant à l'origine de la valeur du
champ ETAT_NUM pour plus de précision.
Merci!
1. Comment ajouter une référence à DAO et que cela signifie t-il?
2. J'ai fait une erreur dans mon énoncé: 1250 est une chaine texte, pas un
nombre.
Désolé de mon faible niveau.
Merci
salut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
1 - Vas dans l'éditeur VB par ALT + F11
ou par le Menu Outis|Macro|Visual Basic Editor
Dans l'éditeur VB : Menu Outils|Références et tu fais descendre
l'ascenseur jusqu'à Microsoft DAO 3.6 Object Library (3.6 ou 3.x suvant
ta version d'Access) que tu coches. Tu charges une librairie qui te
donne accès aux objets de base de données.
2 - Dans le code que t'a donné David, mets:
Dim db as DAO.Database
Dim rq as DAO.QueryDef
remplaces les + par des &
3 - le SQl devient :
SQL = SQL + "WHERE ETA_NUM='1250'"
set rqÛ.createQueryDef("A 1250")
Toutefois pas assez d'informations quant à l'origine de la valeur du
champ ETAT_NUM pour plus de précision.Merci!
1. Comment ajouter une référence à DAO et que cela signifie t-il?
2. J'ai fait une erreur dans mon énoncé: 1250 est une chaine texte, pas un
nombre.
Désolé de mon faible niveau.
Mercisalut,
il faut faire du VB pour cela :
ajoute une référence à DAO (en plus ADO) :
et fais ceci :
public Sub CreerRqA(byval EtaNum as Long)
dim db as database
dim sql as string
dim rq as queryDef
set db=currentdb()
SQL = db.queryDefs("A").sql
SQL = SQL + "WHERE ETA_NUM=" + CStr(EtaNum)
set rqÛ.createQueryDef("A " + CStr(EtaNum))
rq.sql = SQL
db.queryDefs.Add rq
set rq=nothing
set db=nothing
end sub
Voila, je ne suis plus certain que la propriété qui retourne le code
SQL s'appelle SQL (vérifies avec l'aide) et que la méthode d'ajout
soit Add (ou append).
Rq : il faut que ta requête n'utilise pas de critère de tri ou de
critère de filtrage sinon, l'insertion du critére ETA_NUM=.... sera
plus compliqué. Il faut rechercher la position du mot WHERE et ajouter
ton critére dérière celui-ci en ajoutant ensuite " AND " et le
reste.
A+
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Merci de l'explication. En fait la requête A est formée à partir de 9 tables
liées. L'une d'entre elle appelée "SOI A" contient un champ "ETA-NUM". La
requête A permet d'éviter de manipuler les 9 tables et sert d'origine à
l'ensemble des requêtes créées pour exploiter la base de données qui comporte
environ 20 millions de lignes. Parmi celles ci , les tables "A ETA-NUM".
J'rai bien fait comme indiqué et comme suit:
Option Compare Database
'------------------------------------------------------------
' Création_requête_A
'
'------------------------------------------------------------
Function Création_requête_A()
On Error GoTo Création_requête_A_Err
Public Sub CreerRqA(ByVal EtaNum As Long)
Dim db As Database
Dim sql As String
Dim rq As queryDef
Set db = CurrentDb()
sql = dbqueryDefs("A").sql
sql = sql + "WHERE ETA_NUM='130786445'"
Set rq = dbcreateQueryDef("A 130786445")
rq.sql = sql
db.queryDefsAdd rq
Set rq = Nothing
Set db = Nothing
End Sub
Création_requête_A_Exit:
Exit Function
Création_requête_A_Err:
MsgBox Error$
Resume Création_requête_A_Exit
End Function
Lorsque je lance l'exécution, il m'affiche qu'End Sub est manquant?
Merci de l'aide supplémentaire que vous voudrez bien m'apporter
Chevrot
Merci de l'explication. En fait la requête A est formée à partir de 9 tables
liées. L'une d'entre elle appelée "SOI A" contient un champ "ETA-NUM". La
requête A permet d'éviter de manipuler les 9 tables et sert d'origine à
l'ensemble des requêtes créées pour exploiter la base de données qui comporte
environ 20 millions de lignes. Parmi celles ci , les tables "A ETA-NUM".
J'rai bien fait comme indiqué et comme suit:
Option Compare Database
'------------------------------------------------------------
' Création_requête_A
'
'------------------------------------------------------------
Function Création_requête_A()
On Error GoTo Création_requête_A_Err
Public Sub CreerRqA(ByVal EtaNum As Long)
Dim db As Database
Dim sql As String
Dim rq As queryDef
Set db = CurrentDb()
sql = dbqueryDefs("A").sql
sql = sql + "WHERE ETA_NUM='130786445'"
Set rq = dbcreateQueryDef("A 130786445")
rq.sql = sql
db.queryDefsAdd rq
Set rq = Nothing
Set db = Nothing
End Sub
Création_requête_A_Exit:
Exit Function
Création_requête_A_Err:
MsgBox Error$
Resume Création_requête_A_Exit
End Function
Lorsque je lance l'exécution, il m'affiche qu'End Sub est manquant?
Merci de l'aide supplémentaire que vous voudrez bien m'apporter
Chevrot
Merci de l'explication. En fait la requête A est formée à partir de 9 tables
liées. L'une d'entre elle appelée "SOI A" contient un champ "ETA-NUM". La
requête A permet d'éviter de manipuler les 9 tables et sert d'origine à
l'ensemble des requêtes créées pour exploiter la base de données qui comporte
environ 20 millions de lignes. Parmi celles ci , les tables "A ETA-NUM".
J'rai bien fait comme indiqué et comme suit:
Option Compare Database
'------------------------------------------------------------
' Création_requête_A
'
'------------------------------------------------------------
Function Création_requête_A()
On Error GoTo Création_requête_A_Err
Public Sub CreerRqA(ByVal EtaNum As Long)
Dim db As Database
Dim sql As String
Dim rq As queryDef
Set db = CurrentDb()
sql = dbqueryDefs("A").sql
sql = sql + "WHERE ETA_NUM='130786445'"
Set rq = dbcreateQueryDef("A 130786445")
rq.sql = sql
db.queryDefsAdd rq
Set rq = Nothing
Set db = Nothing
End Sub
Création_requête_A_Exit:
Exit Function
Création_requête_A_Err:
MsgBox Error$
Resume Création_requête_A_Exit
End Function
Lorsque je lance l'exécution, il m'affiche qu'End Sub est manquant?
Merci de l'aide supplémentaire que vous voudrez bien m'apporter
Chevrot
Re,
Plusieurs remarques :
1-Tu ne peux pas imbriquer une procédure dans une fonction comme tu le fais:
Function Toto(argument As ...)
...
Sub Tutu()
...
End Sub
...
End Function
Si tu veux, dans une fonction, appeler une procédure, tu dois écrire
séparément la fonction et la procédure. Ca donne quelque chose du genre:
Function AppelProcedure
Call maProcedure ' appel de la procédure
End Function
Sub maProcedure
...
End Sub
2-Si le champ ETAT_NUM est présent dans plusieurs tables de la requête A
il faudra préfixer dans le Where le champ par le nom de la table à prendre.
3-Il ne doit pas y avoir de clause WHERE ou ORDER BY dans la requête A,
ni de regroupement. Il doit s'agir juste d'une requête Sélection banale.
4-La procédure donnée ci-dessous doit être modifiée si tu veux créer
toutes les requêtes pour toutes les valeurs d'ETAT_NUM car elle n'en
crée qu'une, celle donnée en exemple mais je ne connais pas tes besoins.
(Attention, pas de gestion d'erreur donc on ne peut pas lancer 2 fois de
suite cette procédure)
Voila un exemple de procédure qui te crée la requête "A 130786445".
Testes-la pour voir si ca te donne le résultat escompté. (Pour relancer,
il faudra supprimer la requête dans la fenêtre de la bd. Mais cela peut
être fait dans le code.)
Sub zz()
Dim rq As DAO.QueryDef
Dim db As DAO.Database
Dim SQL As String
Set db = CurrentDb
' Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL, InStrRev(db.QueryDefs("A").SQL,
";") - 1)
SQL = SQL & " WHERE ETAT_NUM='130786445'"
'Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("A 130786445", SQL)
MsgBox "La requête " & rq.Name & " vient d'être créée !"
Set rq = Nothing
Set db = Nothing
' Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End SubMerci de l'explication. En fait la requête A est formée à partir de 9 tables
liées. L'une d'entre elle appelée "SOI A" contient un champ "ETA-NUM". La
requête A permet d'éviter de manipuler les 9 tables et sert d'origine à
l'ensemble des requêtes créées pour exploiter la base de données qui comporte
environ 20 millions de lignes. Parmi celles ci , les tables "A ETA-NUM".
J'rai bien fait comme indiqué et comme suit:
Option Compare Database
'------------------------------------------------------------
' Création_requête_A
'
'------------------------------------------------------------
Function Création_requête_A()
On Error GoTo Création_requête_A_Err
Public Sub CreerRqA(ByVal EtaNum As Long)
Dim db As Database
Dim sql As String
Dim rq As queryDef
Set db = CurrentDb()
sql = dbqueryDefs("A").sql
sql = sql + "WHERE ETA_NUM='130786445'"
Set rq = dbcreateQueryDef("A 130786445")
rq.sql = sql
db.queryDefsAdd rq
Set rq = Nothing
Set db = Nothing
End Sub
Création_requête_A_Exit:
Exit Function
Création_requête_A_Err:
MsgBox Error$
Resume Création_requête_A_Exit
End Function
Lorsque je lance l'exécution, il m'affiche qu'End Sub est manquant?
Merci de l'aide supplémentaire que vous voudrez bien m'apporter
Chevrot
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Re,
Plusieurs remarques :
1-Tu ne peux pas imbriquer une procédure dans une fonction comme tu le fais:
Function Toto(argument As ...)
...
Sub Tutu()
...
End Sub
...
End Function
Si tu veux, dans une fonction, appeler une procédure, tu dois écrire
séparément la fonction et la procédure. Ca donne quelque chose du genre:
Function AppelProcedure
Call maProcedure ' appel de la procédure
End Function
Sub maProcedure
...
End Sub
2-Si le champ ETAT_NUM est présent dans plusieurs tables de la requête A
il faudra préfixer dans le Where le champ par le nom de la table à prendre.
3-Il ne doit pas y avoir de clause WHERE ou ORDER BY dans la requête A,
ni de regroupement. Il doit s'agir juste d'une requête Sélection banale.
4-La procédure donnée ci-dessous doit être modifiée si tu veux créer
toutes les requêtes pour toutes les valeurs d'ETAT_NUM car elle n'en
crée qu'une, celle donnée en exemple mais je ne connais pas tes besoins.
(Attention, pas de gestion d'erreur donc on ne peut pas lancer 2 fois de
suite cette procédure)
Voila un exemple de procédure qui te crée la requête "A 130786445".
Testes-la pour voir si ca te donne le résultat escompté. (Pour relancer,
il faudra supprimer la requête dans la fenêtre de la bd. Mais cela peut
être fait dans le code.)
Sub zz()
Dim rq As DAO.QueryDef
Dim db As DAO.Database
Dim SQL As String
Set db = CurrentDb
' Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL, InStrRev(db.QueryDefs("A").SQL,
";") - 1)
SQL = SQL & " WHERE ETAT_NUM='130786445'"
'Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("A 130786445", SQL)
MsgBox "La requête " & rq.Name & " vient d'être créée !"
Set rq = Nothing
Set db = Nothing
' Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
Merci de l'explication. En fait la requête A est formée à partir de 9 tables
liées. L'une d'entre elle appelée "SOI A" contient un champ "ETA-NUM". La
requête A permet d'éviter de manipuler les 9 tables et sert d'origine à
l'ensemble des requêtes créées pour exploiter la base de données qui comporte
environ 20 millions de lignes. Parmi celles ci , les tables "A ETA-NUM".
J'rai bien fait comme indiqué et comme suit:
Option Compare Database
'------------------------------------------------------------
' Création_requête_A
'
'------------------------------------------------------------
Function Création_requête_A()
On Error GoTo Création_requête_A_Err
Public Sub CreerRqA(ByVal EtaNum As Long)
Dim db As Database
Dim sql As String
Dim rq As queryDef
Set db = CurrentDb()
sql = dbqueryDefs("A").sql
sql = sql + "WHERE ETA_NUM='130786445'"
Set rq = dbcreateQueryDef("A 130786445")
rq.sql = sql
db.queryDefsAdd rq
Set rq = Nothing
Set db = Nothing
End Sub
Création_requête_A_Exit:
Exit Function
Création_requête_A_Err:
MsgBox Error$
Resume Création_requête_A_Exit
End Function
Lorsque je lance l'exécution, il m'affiche qu'End Sub est manquant?
Merci de l'aide supplémentaire que vous voudrez bien m'apporter
Chevrot
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Re,
Plusieurs remarques :
1-Tu ne peux pas imbriquer une procédure dans une fonction comme tu le fais:
Function Toto(argument As ...)
...
Sub Tutu()
...
End Sub
...
End Function
Si tu veux, dans une fonction, appeler une procédure, tu dois écrire
séparément la fonction et la procédure. Ca donne quelque chose du genre:
Function AppelProcedure
Call maProcedure ' appel de la procédure
End Function
Sub maProcedure
...
End Sub
2-Si le champ ETAT_NUM est présent dans plusieurs tables de la requête A
il faudra préfixer dans le Where le champ par le nom de la table à prendre.
3-Il ne doit pas y avoir de clause WHERE ou ORDER BY dans la requête A,
ni de regroupement. Il doit s'agir juste d'une requête Sélection banale.
4-La procédure donnée ci-dessous doit être modifiée si tu veux créer
toutes les requêtes pour toutes les valeurs d'ETAT_NUM car elle n'en
crée qu'une, celle donnée en exemple mais je ne connais pas tes besoins.
(Attention, pas de gestion d'erreur donc on ne peut pas lancer 2 fois de
suite cette procédure)
Voila un exemple de procédure qui te crée la requête "A 130786445".
Testes-la pour voir si ca te donne le résultat escompté. (Pour relancer,
il faudra supprimer la requête dans la fenêtre de la bd. Mais cela peut
être fait dans le code.)
Sub zz()
Dim rq As DAO.QueryDef
Dim db As DAO.Database
Dim SQL As String
Set db = CurrentDb
' Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL, InStrRev(db.QueryDefs("A").SQL,
";") - 1)
SQL = SQL & " WHERE ETAT_NUM='130786445'"
'Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("A 130786445", SQL)
MsgBox "La requête " & rq.Name & " vient d'être créée !"
Set rq = Nothing
Set db = Nothing
' Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End SubMerci de l'explication. En fait la requête A est formée à partir de 9 tables
liées. L'une d'entre elle appelée "SOI A" contient un champ "ETA-NUM". La
requête A permet d'éviter de manipuler les 9 tables et sert d'origine à
l'ensemble des requêtes créées pour exploiter la base de données qui comporte
environ 20 millions de lignes. Parmi celles ci , les tables "A ETA-NUM".
J'rai bien fait comme indiqué et comme suit:
Option Compare Database
'------------------------------------------------------------
' Création_requête_A
'
'------------------------------------------------------------
Function Création_requête_A()
On Error GoTo Création_requête_A_Err
Public Sub CreerRqA(ByVal EtaNum As Long)
Dim db As Database
Dim sql As String
Dim rq As queryDef
Set db = CurrentDb()
sql = dbqueryDefs("A").sql
sql = sql + "WHERE ETA_NUM='130786445'"
Set rq = dbcreateQueryDef("A 130786445")
rq.sql = sql
db.queryDefsAdd rq
Set rq = Nothing
Set db = Nothing
End Sub
Création_requête_A_Exit:
Exit Function
Création_requête_A_Err:
MsgBox Error$
Resume Création_requête_A_Exit
End Function
Lorsque je lance l'exécution, il m'affiche qu'End Sub est manquant?
Merci de l'aide supplémentaire que vous voudrez bien m'apporter
Chevrot
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Merci infiniment à Eric pour une aide très précieuse, rapide et compétente.
Merci aussi.
Bonne année 2006
Meilleurs voeux à toi
Merci infiniment à Eric pour une aide très précieuse, rapide et compétente.
Merci aussi.
Bonne année 2006
Meilleurs voeux à toi
Merci infiniment à Eric pour une aide très précieuse, rapide et compétente.
Merci aussi.
Bonne année 2006
Meilleurs voeux à toi
re,Merci infiniment à Eric pour une aide très précieuse, rapide et compétente.
Merci aussi.
Je me permets d'y associer David car il avait fourni 99%
de la solution si ce n'est plus.Bonne année 2006
Meilleurs voeux à toi
--
A+
Eric
http://www.mpfa.info/
re,
Merci infiniment à Eric pour une aide très précieuse, rapide et compétente.
Merci aussi.
Je me permets d'y associer David car il avait fourni 99%
de la solution si ce n'est plus.
Bonne année 2006
Meilleurs voeux à toi
--
A+
Eric
http://www.mpfa.info/
re,Merci infiniment à Eric pour une aide très précieuse, rapide et compétente.
Merci aussi.
Je me permets d'y associer David car il avait fourni 99%
de la solution si ce n'est plus.Bonne année 2006
Meilleurs voeux à toi
--
A+
Eric
http://www.mpfa.info/
[...]
Deuxièmement, est il possible de créer une requête comportant deux
conditions. J'ai essayé avec
"SQL = SQL & " WHERE ETAT_NUM='130786445'" & "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445'" AND "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445' AND WHERE Secteur='Ardennes'"
je n'ai pas trouvé. Existe t il une solution?
J'ai le sentiment d'exagérer dans mes demandes et le fais avec humilité.
Merci d'avance de vos conseils.
Chevrot
[...]
Deuxièmement, est il possible de créer une requête comportant deux
conditions. J'ai essayé avec
"SQL = SQL & " WHERE ETAT_NUM='130786445'" & "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445'" AND "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445' AND WHERE Secteur='Ardennes'"
je n'ai pas trouvé. Existe t il une solution?
J'ai le sentiment d'exagérer dans mes demandes et le fais avec humilité.
Merci d'avance de vos conseils.
Chevrot
[...]
Deuxièmement, est il possible de créer une requête comportant deux
conditions. J'ai essayé avec
"SQL = SQL & " WHERE ETAT_NUM='130786445'" & "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445'" AND "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445' AND WHERE Secteur='Ardennes'"
je n'ai pas trouvé. Existe t il une solution?
J'ai le sentiment d'exagérer dans mes demandes et le fais avec humilité.
Merci d'avance de vos conseils.
Chevrot
Bonsoir,
1-D'où proviennent les valeurs du genre '130786445' car il est possible
de créer les requetes pour chacune de ces valeurs dans la même
procédure.(Procédure modifiée de tête à partir des infos des posts
précédents donc pas testée mais ça doit être proche de ce que tu attends)
Sub zz()
Dim rq As DAO.QueryDef
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim SQL As String, critere As String
Set db = CurrentDb
'on crée un jeu d'enregistrements ne contenant que les différents
NUM_ETAT
' adapter éventuellement le nom de la table donnant les NUM_ETAT
Set rs = db.OpenRecordset("Select distinct NUM_ETAT from [SOI A]")
' Pour chaque NUM_ETAT on crée une requête
While Not rs.EOF
' on recupère le NUM_ETAT
critere = rs(0)
' Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL,
InStrRev(db.QueryDefs("A").SQL, ";") - 1)
' on définit la clause WHERE de la nouvelle requête
SQL = SQL & " WHERE NUM_ETAT='" & critere & "'"
'Crée la requête et l'ajoute à la collection
Set rq = db.CreateQueryDef("A " & critere, SQL)
rs.MoveNext
Wend
Set rs = Nothing
Set rq = Nothing
Set db = Nothing
RefreshDatabaseWindow
End Sub
2-Oui, on peut mettre plusieurs critères sur le WHERE, comme ceci:
SQL = SQL & " WHERE ETAT_NUM='130786445' AND Secteur='Ardennes'"[...]
Deuxièmement, est il possible de créer une requête comportant deux
conditions. J'ai essayé avec
"SQL = SQL & " WHERE ETAT_NUM='130786445'" & "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445'" AND "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445' AND WHERE Secteur='Ardennes'"
je n'ai pas trouvé. Existe t il une solution?
J'ai le sentiment d'exagérer dans mes demandes et le fais avec humilité.
Merci d'avance de vos conseils.
Chevrot
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
1-D'où proviennent les valeurs du genre '130786445' car il est possible
de créer les requetes pour chacune de ces valeurs dans la même
procédure.(Procédure modifiée de tête à partir des infos des posts
précédents donc pas testée mais ça doit être proche de ce que tu attends)
Sub zz()
Dim rq As DAO.QueryDef
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim SQL As String, critere As String
Set db = CurrentDb
'on crée un jeu d'enregistrements ne contenant que les différents
NUM_ETAT
' adapter éventuellement le nom de la table donnant les NUM_ETAT
Set rs = db.OpenRecordset("Select distinct NUM_ETAT from [SOI A]")
' Pour chaque NUM_ETAT on crée une requête
While Not rs.EOF
' on recupère le NUM_ETAT
critere = rs(0)
' Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL,
InStrRev(db.QueryDefs("A").SQL, ";") - 1)
' on définit la clause WHERE de la nouvelle requête
SQL = SQL & " WHERE NUM_ETAT='" & critere & "'"
'Crée la requête et l'ajoute à la collection
Set rq = db.CreateQueryDef("A " & critere, SQL)
rs.MoveNext
Wend
Set rs = Nothing
Set rq = Nothing
Set db = Nothing
RefreshDatabaseWindow
End Sub
2-Oui, on peut mettre plusieurs critères sur le WHERE, comme ceci:
SQL = SQL & " WHERE ETAT_NUM='130786445' AND Secteur='Ardennes'"
[...]
Deuxièmement, est il possible de créer une requête comportant deux
conditions. J'ai essayé avec
"SQL = SQL & " WHERE ETAT_NUM='130786445'" & "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445'" AND "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445' AND WHERE Secteur='Ardennes'"
je n'ai pas trouvé. Existe t il une solution?
J'ai le sentiment d'exagérer dans mes demandes et le fais avec humilité.
Merci d'avance de vos conseils.
Chevrot
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
1-D'où proviennent les valeurs du genre '130786445' car il est possible
de créer les requetes pour chacune de ces valeurs dans la même
procédure.(Procédure modifiée de tête à partir des infos des posts
précédents donc pas testée mais ça doit être proche de ce que tu attends)
Sub zz()
Dim rq As DAO.QueryDef
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim SQL As String, critere As String
Set db = CurrentDb
'on crée un jeu d'enregistrements ne contenant que les différents
NUM_ETAT
' adapter éventuellement le nom de la table donnant les NUM_ETAT
Set rs = db.OpenRecordset("Select distinct NUM_ETAT from [SOI A]")
' Pour chaque NUM_ETAT on crée une requête
While Not rs.EOF
' on recupère le NUM_ETAT
critere = rs(0)
' Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL,
InStrRev(db.QueryDefs("A").SQL, ";") - 1)
' on définit la clause WHERE de la nouvelle requête
SQL = SQL & " WHERE NUM_ETAT='" & critere & "'"
'Crée la requête et l'ajoute à la collection
Set rq = db.CreateQueryDef("A " & critere, SQL)
rs.MoveNext
Wend
Set rs = Nothing
Set rq = Nothing
Set db = Nothing
RefreshDatabaseWindow
End Sub
2-Oui, on peut mettre plusieurs critères sur le WHERE, comme ceci:
SQL = SQL & " WHERE ETAT_NUM='130786445' AND Secteur='Ardennes'"[...]
Deuxièmement, est il possible de créer une requête comportant deux
conditions. J'ai essayé avec
"SQL = SQL & " WHERE ETAT_NUM='130786445'" & "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445'" AND "WHERE Secteur='Ardennes'"
"SQL = SQL & " WHERE ETAT_NUM='130786445' AND WHERE Secteur='Ardennes'"
je n'ai pas trouvé. Existe t il une solution?
J'ai le sentiment d'exagérer dans mes demandes et le fais avec humilité.
Merci d'avance de vos conseils.
Chevrot
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr