modifier plusieurs querys suite à changement de nom de champ

Le
FTH
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans une
table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu "find et
change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer, dans
l'ensemble des querys, tous les anciens noms de champs par les nouveaux?

en vous remerciant,

Frédéric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #19435051
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans une
table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu "find
et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer, dans
l'ensemble des querys, tous les anciens noms de champs par les nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql = replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+
FTH
Le #19478681
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans MSysQueries.expression et
je ne vois rien dans le code qui fasse reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans une
table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu "find et
change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer, dans
l'ensemble des querys, tous les anciens noms de champs par les nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta base
et pour chacune tu utilises un replace pour changer le nom du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+



Fabien
Le #19483681
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans
une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu
"find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer,
dans l'ensemble des querys, tous les anciens noms de champs par les
nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Oups
Manque un rst_Query.Movenext avant le Wend et un Dim StrSql as String

Sub ...
Dim StrSQl as String
Dim Rst_Query as DAO.Recordset
.
.
.
StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
>> currentdb.querydefs(Rst_Query("Name")).sql >> replace(Strsql,Ancien,Nouveau)
rst_Query.Movenext
>> Wend
.
.
.

@+
Fabien
Le #19483701
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans
une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu
"find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer,
dans l'ensemble des querys, tous les anciens noms de champs par les
nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne connaissant
pas les conséquences de manip sur les tables systéme, je regarde mais je
touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me permet de
reccuperer le 'source' de la requete "Nomrequete" et de le modifier à
mon grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+
FTH
Le #19484861
Re,

Quand tu dis 'le source', s'agit il du "texte" SQL de la requete?

"Fabien" news:
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans MSysQueries.expression
et je ne vois rien dans le code qui fasse reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans une
table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu "find
et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer, dans
l'ensemble des querys, tous les anciens noms de champs par les
nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne connaissant pas
les conséquences de manip sur les tables systéme, je regarde mais je
touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me permet de
reccuperer le 'source' de la requete "Nomrequete" et de le modifier à mon
grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+


Fabien
Le #19485171
FTH a écrit :
Re,

Quand tu dis 'le source', s'agit il du "texte" SQL de la requete?

"Fabien" news:
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans
une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu
"find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer,
dans l'ensemble des querys, tous les anciens noms de champs par les
nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du
champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne connaissant
pas les conséquences de manip sur les tables systéme, je regarde mais
je touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me permet
de reccuperer le 'source' de la requete "Nomrequete" et de le modifier
à mon grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+





oui exactement
FTH
Le #19486781
Re bonjour Fabien,

je reviens vers toi et ta solution pour remplacer les anciens noms de champs
par les nouveaux.
j'y arrive pas. En fait, ça se bloque (not responding)
Quand je regarde pas à pas, je ne vois apparaitre nulle part le "contenu" de
la query.
par contre, je crois voir, dans le SELECT, toutes les queries concernées. Ne
serait il pas possible de traiter chaque query une à une genre for each xxx?
(je dis ça mais suis pas capable de mettre ça en oeuvre!)

en te remerciant,

Fréédric

"Fabien" news:eMwy%
FTH a écrit :
Re,

Quand tu dis 'le source', s'agit il du "texte" SQL de la requete?

"Fabien" news:
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans
une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu
"find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer,
dans l'ensemble des querys, tous les anciens noms de champs par les
nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du
champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne connaissant
pas les conséquences de manip sur les tables systéme, je regarde mais je
touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me permet de
reccuperer le 'source' de la requete "Nomrequete" et de le modifier à
mon grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+





oui exactement


Fabien
Le #19486771
FTH a écrit :
Re bonjour Fabien,

je reviens vers toi et ta solution pour remplacer les anciens noms de
champs par les nouveaux.
j'y arrive pas. En fait, ça se bloque (not responding)
Quand je regarde pas à pas, je ne vois apparaitre nulle part le
"contenu" de la query.
par contre, je crois voir, dans le SELECT, toutes les queries
concernées. Ne serait il pas possible de traiter chaque query une à une
genre for each xxx? (je dis ça mais suis pas capable de mettre ça en
oeuvre!)

en te remerciant,

Fréédric

"Fabien" news:eMwy%
FTH a écrit :
Re,

Quand tu dis 'le source', s'agit il du "texte" SQL de la requete?

"Fabien" news:
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs
dans une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu
"find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de
changer, dans l'ensemble des querys, tous les anciens noms de
champs par les nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de
ta base et pour chacune tu utilises un replace pour changer le nom
du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne
connaissant pas les conséquences de manip sur les tables systéme, je
regarde mais je touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me permet
de reccuperer le 'source' de la requete "Nomrequete" et de le
modifier à mon grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+





oui exactement





Ben c'est fort ça !!!
J'ai testé sur une petite base avec quelques requetes et ça fonctionne.
Quant tu debugge fait un debug.print StrSQl pour voir ce que contient
la chaine. Places en un avant et aprés le replace.
Peux tu me copier/coller le code que tu as mis en place ou mieux mettre
ta base sur cjoint.com si elle est petite.
@+
FTH
Le #19487511
Re Bonjour Fabien,

ça semble fonctionner!
la proc allait trop vite je l'ai donc fait tourner au pas à pas (F5) et
c'est ok
et depuis, ça tourne tout seul.
Merci beaucoup ;-)

Tiens, histoire de fignoler, comment pourrait on faire pour avoir une table
avec (par exemple) MyOldField et MyNewField et pouvoir lancer la proc qui
appliquerait toute la liste des modifs?

En te remerciant encore,

Frédéric

"Fabien" news:
FTH a écrit :
Re bonjour Fabien,

je reviens vers toi et ta solution pour remplacer les anciens noms de
champs par les nouveaux.
j'y arrive pas. En fait, ça se bloque (not responding)
Quand je regarde pas à pas, je ne vois apparaitre nulle part le "contenu"
de la query.
par contre, je crois voir, dans le SELECT, toutes les queries concernées.
Ne serait il pas possible de traiter chaque query une à une genre for
each xxx? (je dis ça mais suis pas capable de mettre ça en oeuvre!)

en te remerciant,

Fréédric

"Fabien" news:eMwy%
FTH a écrit :
Re,

Quand tu dis 'le source', s'agit il du "texte" SQL de la requete?

"Fabien" news:
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs dans
une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le menu
"find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de changer,
dans l'ensemble des querys, tous les anciens noms de champs par les
nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête de ta
base et pour chacune tu utilises un replace pour changer le nom du
champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId =
MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne connaissant
pas les conséquences de manip sur les tables systéme, je regarde mais
je touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me permet
de reccuperer le 'source' de la requete "Nomrequete" et de le modifier
à mon grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+





oui exactement





Ben c'est fort ça !!!
J'ai testé sur une petite base avec quelques requetes et ça fonctionne.
Quant tu debugge fait un debug.print StrSQl pour voir ce que contient la
chaine. Places en un avant et aprés le replace.
Peux tu me copier/coller le code que tu as mis en place ou mieux mettre ta
base sur cjoint.com si elle est petite.
@+


Fabien
Le #19490901
FTH a écrit :
Re Bonjour Fabien,

ça semble fonctionner!
la proc allait trop vite je l'ai donc fait tourner au pas à pas (F5) et
c'est ok
et depuis, ça tourne tout seul.
Merci beaucoup ;-)

Tiens, histoire de fignoler, comment pourrait on faire pour avoir une
table avec (par exemple) MyOldField et MyNewField et pouvoir lancer la
proc qui appliquerait toute la liste des modifs?

En te remerciant encore,

Frédéric

"Fabien" news:
FTH a écrit :
Re bonjour Fabien,

je reviens vers toi et ta solution pour remplacer les anciens noms de
champs par les nouveaux.
j'y arrive pas. En fait, ça se bloque (not responding)
Quand je regarde pas à pas, je ne vois apparaitre nulle part le
"contenu" de la query.
par contre, je crois voir, dans le SELECT, toutes les queries
concernées. Ne serait il pas possible de traiter chaque query une à
une genre for each xxx? (je dis ça mais suis pas capable de mettre ça
en oeuvre!)

en te remerciant,

Fréédric

"Fabien" news:eMwy%
FTH a écrit :
Re,

Quand tu dis 'le source', s'agit il du "texte" SQL de la requete?

"Fabien" news:
FTH a écrit :
Bonjour Fabien,

je test mais pas avec bcp de succes.
ps d'erreur qui s'affichent mas un blocage de l'appli..
Glup

Ceci dit, les champs à modifier apparaissent dans
MSysQueries.expression et je ne vois rien dans le code qui fasse
reference à cela..

Merci

Frédéric
"Fabien" news:
FTH a écrit :
Bonjour,
Pour différentes raisons, j'ai changé plusieurs noms de champs
dans une table.
pour ce qui est du code vba, pas de soucis, j'ai utilisé le
menu "find et change all" pour passer les nouveaux noms.
par contre, pour les querys, existe il une possibilité de
changer, dans l'ensemble des querys, tous les anciens noms de
champs par les nouveaux?

en vous remerciant,

Frédéric


Salut,
Je propose une procédure qui te donne le nom de chaque requête
de ta base et pour chacune tu utilises un replace pour changer
le nom du champ

Sub Remplace_dans_query(Ancien as string,nouveau as string)
Dim Rst_Query as dao.recordset
Set Rst_Query =Currentdb.openrecordset("SELECT MSysObjects.Name,
MSysQueries.Attribute
FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId
= MSysObjects.Id
WHERE (((MSysObjects.Name) Not Like '~*') AND
((MSysQueries.Attribute)%5));")
While not Rst_Query.eof

StrSQl=currentdb.querydefs(Rst_Query("Name")).sql
currentdb.querydefs(Rst_Query("Name")).sql =
replace(Strsql,Ancien,Nouveau)
Wend
Rst_Query.close
Set Rst_query=Nothing
end sub

Voilà comme ça à la volée ...
A tester donc ;-)
@+






Suite ...
Effectivement je ne touche pas a la table MSSysQueries. Ne
connaissant pas les conséquences de manip sur les tables systéme,
je regarde mais je touche pô !

L'instruction StrSql=currentdb.querydefs("Nomrequete").sql me
permet de reccuperer le 'source' de la requete "Nomrequete" et de
le modifier à mon grés puis de le réenregistrer par un
currentdb.querydefs("Nomrequete").sql=strsql
@+





oui exactement





Ben c'est fort ça !!!
J'ai testé sur une petite base avec quelques requetes et ça fonctionne.
Quant tu debugge fait un debug.print StrSQl pour voir ce que contient
la chaine. Places en un avant et aprés le replace.
Peux tu me copier/coller le code que tu as mis en place ou mieux
mettre ta base sur cjoint.com si elle est petite.
@+





Bonjour,
Avec
Public Sub Correction()
Dim Rst_Correction as DAO.Recordset
set currentdb.openrecordset("Tbl_Correction")
While not Rst_Correction.eof
Remplace_dans_query Rst_Correction("MyOldField"),
Rst_Correction("MyNewField")
Rst_Correction.movenext
Wend
Rst_Correction.Close
Set Rst_Correction=Nothing
End Sub
Voilà !
@+
Publicité
Poster une réponse
Anonyme