OVH Cloud OVH Cloud

Modifier requête SQL

4 réponses
Avatar
Bodking
Bonjour,

j'aimerai savoir s'il est possible de visualiser et modifier le code SQL =

d'une requ=EAte cr=E9=E9e sous Excel avec MS Querry et qui pointe vers un=
=20
autre fichier Excel.
Je voudrais juste changer le nom de la source et MS Querry ne veux plus=20
d=E9marrer quand je fait modification de la requ=EAte. Je peux cr=E9er de=
s=20
nouvelles mais pas les modifier ???
Or, j'ai plusieurs requ=EAte a modifier et je n'ai pas envie de=20
recommencer tout alors qu'il n'y a qu'une petite chose a changer.

D'avance merci.

4 réponses

Avatar
Damien Kergosien
Bonjour

pour afficher la chaîne sql, tu sélectionnes la feuille qui reçoit les
données, tu affiches Visual Basic.
Dans la fenêtre exécution, tu tapes :
print activesheet.querytables(1).commandtext
pour voit la chaîne sql.

Si elle n'est pas trop longue, on peut la redéfinir facilement.

Extrait de l'aide :
--------------------------
Cet exemple montre comment définir la chaîne de commande de la source
de données ODBC de la première table de requête. Notez que la chaîne de
commande constitue une instruction SQL.

Set qtQtrResults = _
Workbooks(1).Worksheets(1).QueryTables(1)
With qtQtrResults
.CommandType = xlCmdSQL
.CommandText = _
"Select ProductID From Products Where ProductID < 10"
.Refresh
End With
-----------------------------
Damien

Bodking a présenté l'énoncé suivant :
Bonjour,

j'aimerai savoir s'il est possible de visualiser et modifier le code SQL
d'une requête créée sous Excel avec MS Querry et qui pointe vers un autre
fichier Excel.
Je voudrais juste changer le nom de la source et MS Querry ne veux plus
démarrer quand je fait modification de la requête. Je peux créer des
nouvelles mais pas les modifier ???
Or, j'ai plusieurs requête a modifier et je n'ai pas envie de recommencer
tout alors qu'il n'y a qu'une petite chose a changer.

D'avance merci.


Avatar
Bodking
Merci pour la réponse.

J'ai exécuté la commande (print activesheet.querytables(1).commandtex t)
et la requête s'affiche effectivement.
Mais comment faire pour la modifier ?
Si je change dans cette fenêtre il me dit :
Erreur de compilation
Attendu fin d'instruction.

Voilà ma requête :

SELECT Source.`N° demande`, Source.Nom, Source.`Date de naissance`,
Source.`Age au prélèvement`, Source.Service, Source.Germe, Source.`Da te
d'admission`, Source.`Date prélèvement`, Source.`Date de Sortie`,
Source.`Issue (D/R/T/I)`, Source.`DCD des suites de l'hémoc`,
Source.`Origine septique`, Source.Classe, Source.`Degré de certitude`,
Source.Hcont, Source.`#`, Source.Episode, Source.Polymicrobien,
Source.`Germes polymicrobiens`, Source.`Nosoc (N/A)`, Source.`Nosoc
ISP`, Source.`Durée avant`, Source.`Durée après`, Source.`Avant
infection`, Source.`Début infection`, Source.`Après résultat HC`,
Source.Précision, Source.AB1, Source.AB2
FROM `D:Mes documentsHémocHémoc 2003`.Source Source (*<- ICI*)
WHERE (Source.Episode=1.0) AND (Source.`Date prélèvement`>=?) AND
(Source.`Date prélèvement`<=?)
ORDER BY Source.`N° demande`

C'est un peu long ??? Je vourais juste changer "Hémoc 2003" en "Hémoc
2004" dans la ligne FROM (au *<-ICI*). Les deux fichiers ont exactement
la même structure.

Bonjour

pour afficher la chaîne sql, tu sélectionnes la feuille qui reçoi t les
données, tu affiches Visual Basic.
Dans la fenêtre exécution, tu tapes :
print activesheet.querytables(1).commandtext
pour voit la chaîne sql.

Si elle n'est pas trop longue, on peut la redéfinir facilement.

Extrait de l'aide :
--------------------------
Cet exemple montre comment définir la chaîne de commande de la sour ce de
données ODBC de la première table de requête. Notez que la chaî ne de
commande constitue une instruction SQL.

Set qtQtrResults = _
Workbooks(1).Worksheets(1).QueryTables(1)
With qtQtrResults
.CommandType = xlCmdSQL
.CommandText = _
"Select ProductID From Products Where ProductID < 10"
.Refresh
End With
-----------------------------
Damien

Bodking a présenté l'énoncé suivant :

Bonjour,

j'aimerai savoir s'il est possible de visualiser et modifier le code
SQL d'une requête créée sous Excel avec MS Querry et qui pointe vers
un autre fichier Excel.
Je voudrais juste changer le nom de la source et MS Querry ne veux
plus démarrer quand je fait modification de la requête. Je peux cr éer
des nouvelles mais pas les modifier ???
Or, j'ai plusieurs requête a modifier et je n'ai pas envie de
recommencer tout alors qu'il n'y a qu'une petite chose a changer.

D'avance merci.







Avatar
Damien Kergosien
re bonjour

C'est quelquechose sur lequel j'ai travaillé il y a longtemps. Je pense
quand-même que je ne dis pas de bétises.
Lorsque la chaîne est longue, il faut la mettre dans un tableau dont
les élément ne dépassent pas 255 caractères (enfin, à l'époque où je
l'ai fait).

Ce que j'avais donnait

activesheet.querytables(1).commandtext = Array( _
"SELECT tClub.NoClub, tClub.NoClubMaitre, tClub.NomClub" _
& Chr(13) & "" & Chr(10), _
str_SqlFrom _
& Chr(13) & "" & Chr(10), _
str_SqlWhere1, str_SqlWhere2, _
Chr(13) & "" & Chr(10) _
& "ORDER BY tClub.NoClub")


donc transposé pour toi, il faidrait décomposer la chaîne SELECT en
plusieurs entre "" et séparées par des virgules.
Ce pourrait être quelquechose du genre :

activesheet.querytables(1).commandtext = Array( _
"SELECT Source.`N° demande`, Source.Nom, Source.`Date de
naissance`, Source.`Age au prélèvement`," , _
" Source.Service, Source.Germe, Source.`Date d'admission`, Source.`Date
prélèvement`, Source.`Date de Sortie`, ", _
"Source.`Issue (D/R/T/I)`, Source.`DCD des suites de l'hémoc`,
Source.`Origine septique`, Source.Classe, ", _
"Source.`Degré de certitude`, Source.Hcont, Source.`#`, Source.Episode,
Source.Polymicrobien, ", _
"Source.`Germes polymicrobiens`, Source.`Nosoc (N/A)`, Source.`Nosoc
ISP`, Source.`Durée avant`, ", _
"Source.`Durée après`, Source.`Avant infection`, Source.`Début
infection`, Source.`Après résultat HC`, Source.Précision, Source.AB1,
Source.AB2" _
& Chr(13) & "" & Chr(10), _
"FROM `D:Mes documentsHémocHémoc 2003`.Source Source
(*<- ICI*)" _
& Chr(13) & "" & Chr(10), _
"FROM `D:Mes documentsHémocHémoc 2003`.Source Source
(*<- ICI*)", _
Chr(13) & "" & Chr(10) _
& "ORDER BY Source.`N° demande`")

Damien

Bodking a émis l'idée suivante :
SELECT Source.`N° demande`, Source.Nom, Source.`Date de naissance`,
Source.`Age au prélèvement`, Source.Service, Source.Germe, Source.`Date
d'admission`, Source.`Date prélèvement`, Source.`Date de Sortie`,
Source.`Issue (D/R/T/I)`, Source.`DCD des suites de l'hémoc`, Source.`Origine
septique`, Source.Classe, Source.`Degré de certitude`, Source.Hcont,
Source.`#`, Source.Episode, Source.Polymicrobien, Source.`Germes
polymicrobiens`, Source.`Nosoc (N/A)`, Source.`Nosoc ISP`, Source.`Durée
avant`, Source.`Durée après`, Source.`Avant infection`, Source.`Début
infection`, Source.`Après résultat HC`, Source.Précision, Source.AB1,
Source.AB2
FROM `D:Mes documentsHémocHémoc 2003`.Source Source (*<- ICI*)
WHERE (Source.Episode=1.0) AND (Source.`Date prélèvement`>=?) AND
(Source.`Date prélèvement`<=?)
ORDER BY Source.`N° demande`


Avatar
Bodking
Excellent, ça fonctionne.
Merci Damien.

Tu avais quand même fait une petite erreur de recopiage
(tu répetais 2x la ligne FROM au lieu de WHERE).
Mais c'est peu de chose face au temps que tu me permettra de gagner
chaque année. ;-)

La bonne commande est:

activesheet.querytables(1).commandtext = Array( _
"SELECT Source.`N° demande`, Source.Nom, Source.`Date de naissance`,
Source.`Age au prélèvement`,", _
" Source.Service, Source.Germe, Source.`Date d'admission`, Source.`Date
prélèvement`, Source.`Date de Sortie`, ", _
"Source.`Issue (D/R/T/I)`, Source.`DCD des suites de l'hémoc`,
Source.`Origine septique`, Source.Classe, ", _
"Source.`Degré de certitude`, Source.Hcont, Source.`#`, Source.Episode,
Source.Polymicrobien, ", _
"Source.`Germes polymicrobiens`, Source.`Nosoc (N/A)`, Source.`Nosoc
ISP`, Source.`Durée avant`, ", _
"Source.`Durée après`, Source.`Avant infection`, Source.`Début
infection`, Source.`Après résultat HC`, Source.Précision, Source.AB 1,
Source.AB2" _
& Chr(13) & "" & Chr(10), _
"FROM `D:Mes documentsHémocHémoc 2005`.Source Source" _
& Chr(13) & "" & Chr(10), _
"WHERE (Source.Episode=1.0) AND (Source.`Date prélèvement`>=?) AN D
(Source.`Date prélèvement`<=?) ", _
Chr(13) & "" & Chr(10) _
& "ORDER BY Source.`N° demande`")


re bonjour

C'est quelquechose sur lequel j'ai travaillé il y a longtemps. Je pen se
quand-même que je ne dis pas de bétises.
Lorsque la chaîne est longue, il faut la mettre dans un tableau dont les
élément ne dépassent pas 255 caractères (enfin, à l'époque où je l'ai
fait).

Ce que j'avais donnait

activesheet.querytables(1).commandtext = Array( _
"SELECT tClub.NoClub, tClub.NoClubMaitre, tClub.NomClub" _
& Chr(13) & "" & Chr(10), _
str_SqlFrom _
& Chr(13) & "" & Chr(10), _
str_SqlWhere1, str_SqlWhere2, _
Chr(13) & "" & Chr(10) _
& "ORDER BY tClub.NoClub")


donc transposé pour toi, il faidrait décomposer la chaîne SELECT en
plusieurs entre "" et séparées par des virgules.
Ce pourrait être quelquechose du genre :

activesheet.querytables(1).commandtext = Array( _
"SELECT Source.`N° demande`, Source.Nom, Source.`Date de
naissance`, Source.`Age au prélèvement`," , _
" Source.Service, Source.Germe, Source.`Date d'admission`, Source.`Date
prélèvement`, Source.`Date de Sortie`, ", _
"Source.`Issue (D/R/T/I)`, Source.`DCD des suites de l'hémoc`,
Source.`Origine septique`, Source.Classe, ", _
"Source.`Degré de certitude`, Source.Hcont, Source.`#`, Source.Episod e,
Source.Polymicrobien, ", _
"Source.`Germes polymicrobiens`, Source.`Nosoc (N/A)`, Source.`Nosoc
ISP`, Source.`Durée avant`, ", _
"Source.`Durée après`, Source.`Avant infection`, Source.`Début
infection`, Source.`Après résultat HC`, Source.Précision, Source. AB1,
Source.AB2" _
& Chr(13) & "" & Chr(10), _
"FROM `D:Mes documentsHémocHémoc 2003`.Source Source (*<-
ICI*)" _
& Chr(13) & "" & Chr(10), _
"FROM `D:Mes documentsHémocHémoc 2003`.Source Source (*<-
ICI*)", _
Chr(13) & "" & Chr(10) _
& "ORDER BY Source.`N° demande`")

Damien

Bodking a émis l'idée suivante :

SELECT Source.`N° demande`, Source.Nom, Source.`Date de naissance`,
Source.`Age au prélèvement`, Source.Service, Source.Germe,
Source.`Date d'admission`, Source.`Date prélèvement`, Source.`Date de
Sortie`, Source.`Issue (D/R/T/I)`, Source.`DCD des suites de l'hémoc `,
Source.`Origine septique`, Source.Classe, Source.`Degré de certitude `,
Source.Hcont, Source.`#`, Source.Episode, Source.Polymicrobien,
Source.`Germes polymicrobiens`, Source.`Nosoc (N/A)`, Source.`Nosoc
ISP`, Source.`Durée avant`, Source.`Durée après`, Source.`Avant
infection`, Source.`Début infection`, Source.`Après résultat HC` ,
Source.Précision, Source.AB1, Source.AB2
FROM `D:Mes documentsHémocHémoc 2003`.Source Source (*<- ICI*)
WHERE (Source.Episode=1.0) AND (Source.`Date prélèvement`>=?) AND
(Source.`Date prélèvement`<=?)
ORDER BY Source.`N° demande`