Si la requête possède déjà une clause where, soit la complèter, soit la remplacer. Cela devient un simple travail sur une chaîne...
Cela répond à ta question ?
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut,
"Bruno MAZÉPA"
J'ai un formulaire dont le RecordSource est : "Rqt SaisieDepMod"
Sous Access 2000, peut-on rajouter une condition "where"
à ma requête "Rqt SaisieDepMod" déjà existante, par VBA !?
T peux déjà récuperer la chaîne SQL ainsi...
Dim strSQL As String
strSQL = CurrentDb.QueryDefs("Rqt SaisieDepMod").SQL
Si cette requête ne possède pas de condition where, il suffit de l'ajouter
par concaténation...
Si la requête possède déjà une clause where, soit la complèter, soit la remplacer.
Cela devient un simple travail sur une chaîne...
Cela répond à ta question ?
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Si la requête possède déjà une clause where, soit la complèter, soit la remplacer. Cela devient un simple travail sur une chaîne...
Cela répond à ta question ?
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Alain TEYSSEDRE
Bonjour Pierre
Ne faut il pas supprimer le ; avant de faire la concaténation ?
@+ Alain
"3stone" a écrit dans le message de news:3fc37625$0$3240$
Salut,
"Bruno MAZÉPA"
J'ai un formulaire dont le RecordSource est : "Rqt SaisieDepMod"
Sous Access 2000, peut-on rajouter une condition "where" à ma requête "Rqt SaisieDepMod" déjà existante, par VBA !?
T peux déjà récuperer la chaîne SQL ainsi...
Dim strSQL As String strSQL = CurrentDb.QueryDefs("Rqt SaisieDepMod").SQL
Si cette requête ne possède pas de condition where, il suffit de l'ajouter par concaténation...
Si la requête possède déjà une clause where, soit la complèter, soit la remplacer.
Cela devient un simple travail sur une chaîne...
Cela répond à ta question ?
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Bonjour Pierre
Ne faut il pas supprimer le ; avant de faire la concaténation ?
@+
Alain
"3stone" <3stone@skynet.be> a écrit dans le message de
news:3fc37625$0$3240$ba620e4c@reader0.news.skynet.be...
Salut,
"Bruno MAZÉPA"
J'ai un formulaire dont le RecordSource est : "Rqt SaisieDepMod"
Sous Access 2000, peut-on rajouter une condition "where"
à ma requête "Rqt SaisieDepMod" déjà existante, par VBA !?
T peux déjà récuperer la chaîne SQL ainsi...
Dim strSQL As String
strSQL = CurrentDb.QueryDefs("Rqt SaisieDepMod").SQL
Si cette requête ne possède pas de condition where, il suffit de l'ajouter
par concaténation...
Si la requête possède déjà une clause where, soit la complèter, soit la
remplacer.
Cela devient un simple travail sur une chaîne...
Cela répond à ta question ?
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Si la requête possède déjà une clause where, soit la complèter, soit la remplacer.
Cela devient un simple travail sur une chaîne...
Cela répond à ta question ?
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Xavier HUE
Salut Pierre,
Cela devient un simple travail sur une chaîne... T'es sûr que c'est aussi simple? ;-)
J'ai travaillé la dessus voilà quelque temps pour remplacer une clause Where dans n'importe quelle chaine SQL, enfin quand je dis n'importe... ;-) Disons une chaine SQL classique SELECT... FROM ... [WHERE] [ORDER BY]... etc.
Pour l'instant je ne sais remplacer que le WHERE. :-(
Je me suis remis au au boulot ce jour afin de traiter les mots clés WHERE, GROUP BY, HAVING et ORDER BY.
Pas aussi simple qu'il n'y paraît.
Si tu as une boîte noire dans tes gamelles et tes bidons qui fait le travail, je suis preneur.
Et si Bruno, toi ou autre êtes intêressés par mon travail sur la Clause WHERE, dites le moi... Je maile, ou je poste dans le forum... as you like.
Cordialement.
Salut Pierre,
Cela devient un simple travail sur une chaîne...
T'es sûr que c'est aussi simple? ;-)
J'ai travaillé la dessus voilà quelque temps pour
remplacer une clause Where dans n'importe quelle chaine
SQL, enfin quand je dis n'importe... ;-) Disons une chaine
SQL classique SELECT... FROM ... [WHERE] [ORDER BY]... etc.
Pour l'instant je ne sais remplacer que le WHERE. :-(
Je me suis remis au au boulot ce jour afin de traiter les
mots clés WHERE, GROUP BY, HAVING et ORDER BY.
Pas aussi simple qu'il n'y paraît.
Si tu as une boîte noire dans tes gamelles et tes bidons
qui fait le travail, je suis preneur.
Et si Bruno, toi ou autre êtes intêressés par mon travail
sur la Clause WHERE, dites le moi... Je maile, ou je poste
dans le forum... as you like.
Cela devient un simple travail sur une chaîne... T'es sûr que c'est aussi simple? ;-)
J'ai travaillé la dessus voilà quelque temps pour remplacer une clause Where dans n'importe quelle chaine SQL, enfin quand je dis n'importe... ;-) Disons une chaine SQL classique SELECT... FROM ... [WHERE] [ORDER BY]... etc.
Pour l'instant je ne sais remplacer que le WHERE. :-(
Je me suis remis au au boulot ce jour afin de traiter les mots clés WHERE, GROUP BY, HAVING et ORDER BY.
Pas aussi simple qu'il n'y paraît.
Si tu as une boîte noire dans tes gamelles et tes bidons qui fait le travail, je suis preneur.
Et si Bruno, toi ou autre êtes intêressés par mon travail sur la Clause WHERE, dites le moi... Je maile, ou je poste dans le forum... as you like.
Cordialement.
3stone
Salut Alain,
"Alain TEYSSEDRE"
Ne faut il pas supprimer le ; avant de faire la concaténation ?
Bien sur....
Mais, comme dirait Pierre CFI, c'était pour voir si tu suivais...
;-)))
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut Alain,
"Alain TEYSSEDRE"
Ne faut il pas supprimer le ; avant de faire la concaténation ?
Bien sur....
Mais, comme dirait Pierre CFI, c'était pour voir si tu suivais...
;-)))
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Ne faut il pas supprimer le ; avant de faire la concaténation ?
Bien sur....
Mais, comme dirait Pierre CFI, c'était pour voir si tu suivais...
;-)))
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Alain TEYSSEDRE
C'est curieux que tu n'es pas répondu à mon casse tête chinois intitulé "Parcourir l'arborescence d'une table"
je pensais que tu aurais suivi ..
Alain
"3stone" a écrit dans le message de news:3fc38a5a$0$27390$
Bien sur....
Mais, comme dirait Pierre CFI, c'était pour voir si tu suivais...
C'est curieux que tu n'es pas répondu à mon casse tête chinois intitulé
"Parcourir l'arborescence d'une table"
je pensais que tu aurais suivi ..
Alain
"3stone" <3stone@skynet.be> a écrit dans le message de
news:3fc38a5a$0$27390$ba620e4c@reader3.news.skynet.be...
Bien sur....
Mais, comme dirait Pierre CFI, c'était pour voir si tu suivais...
C'est curieux que tu n'es pas répondu à mon casse tête chinois intitulé "Parcourir l'arborescence d'une table"
je pensais que tu aurais suivi ..
Alain
"3stone" a écrit dans le message de news:3fc38a5a$0$27390$
Bien sur....
Mais, comme dirait Pierre CFI, c'était pour voir si tu suivais...
3stone
Salut,
"Xavier HUE"
Cela devient un simple travail sur une chaîne... T'es sûr que c'est aussi simple? ;-)
Je dis simple... à condition que l'on connaisse au moins les Instr, Left, Right et autres Mid... ;-)
Et comme une chaîne SQL à toujours un ordre défini... Il est assez simple de vérifier l'existance d'un "Order By" et autre... - de récupérer cela *par la droite* et de le retrancher de la chaîne et, à la fin, de "recomposer" les morceaux, avec éventuellement un nouveau "bout"
Bien sûr, s'il s'agit de recréer ainsi une chaîne très complexe, autant la créer de toute pièce.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut,
"Xavier HUE"
Cela devient un simple travail sur une chaîne...
T'es sûr que c'est aussi simple? ;-)
Je dis simple... à condition que l'on connaisse au moins les Instr, Left, Right et autres Mid...
;-)
Et comme une chaîne SQL à toujours un ordre défini...
Il est assez simple de vérifier l'existance d'un "Order By" et autre...
- de récupérer cela *par la droite* et de le retrancher de la chaîne
et, à la fin, de "recomposer" les morceaux, avec éventuellement un nouveau "bout"
Bien sûr, s'il s'agit de recréer ainsi une chaîne très complexe, autant la créer de toute pièce.
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Cela devient un simple travail sur une chaîne... T'es sûr que c'est aussi simple? ;-)
Je dis simple... à condition que l'on connaisse au moins les Instr, Left, Right et autres Mid... ;-)
Et comme une chaîne SQL à toujours un ordre défini... Il est assez simple de vérifier l'existance d'un "Order By" et autre... - de récupérer cela *par la droite* et de le retrancher de la chaîne et, à la fin, de "recomposer" les morceaux, avec éventuellement un nouveau "bout"
Bien sûr, s'il s'agit de recréer ainsi une chaîne très complexe, autant la créer de toute pièce.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Bruno MAZÉPA
Bonjour à tous, et merci de votre aide. Donc effectivement je récupère ma définition sql avec : strSQL = CurrentDb.QueryDefs("Rqt SaisieDepMod").SQL Je manipule ensuite la chaine de caractère pour intégrer mon "WHERE" Puis je remplace mon recordsource, par la nouvelle valeur. Ca marche, mais.... oui je sais il faut qu'il y ai tjs un mais ;-)) Quand je veux refaire la manipulation (changement de mon critère de choix) Je fais donc : strSQL = Me![SFrm SaisieDepMod].Form.RecordSource Puisqu'il ne s'agit plus de la référence à une requète. Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !? Que ce passe t'il !? -- Cordialement.
"Bruno MAZÉPA" <ReplyToNewsGroup> a écrit dans le message de news:%
Bonjour à tous,
J'ai un formulaire dont le RecordSource est : "Rqt SaisieDepMod"
Sous Access 2000, peut-on rajouter une condition "where" à ma requête "Rqt SaisieDepMod" déjà existante, par VBA !?
-- Cordialement.
Bonjour à tous, et merci de votre aide.
Donc effectivement je récupère ma définition sql avec :
strSQL = CurrentDb.QueryDefs("Rqt SaisieDepMod").SQL
Je manipule ensuite la chaine de caractère pour intégrer mon "WHERE"
Puis je remplace mon recordsource, par la nouvelle valeur.
Ca marche, mais.... oui je sais il faut qu'il y ai tjs un mais ;-))
Quand je veux refaire la manipulation (changement de mon critère de choix)
Je fais donc :
strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Puisqu'il ne s'agit plus de la référence à une requète.
Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !?
Que ce passe t'il !?
--
Cordialement.
"Bruno MAZÉPA" <ReplyToNewsGroup> a écrit dans le message de
news:%23UtuNG2sDHA.424@TK2MSFTNGP11.phx.gbl...
Bonjour à tous,
J'ai un formulaire dont le RecordSource est : "Rqt SaisieDepMod"
Sous Access 2000, peut-on rajouter une condition "where"
à ma requête "Rqt SaisieDepMod" déjà existante, par VBA !?
Bonjour à tous, et merci de votre aide. Donc effectivement je récupère ma définition sql avec : strSQL = CurrentDb.QueryDefs("Rqt SaisieDepMod").SQL Je manipule ensuite la chaine de caractère pour intégrer mon "WHERE" Puis je remplace mon recordsource, par la nouvelle valeur. Ca marche, mais.... oui je sais il faut qu'il y ai tjs un mais ;-)) Quand je veux refaire la manipulation (changement de mon critère de choix) Je fais donc : strSQL = Me![SFrm SaisieDepMod].Form.RecordSource Puisqu'il ne s'agit plus de la référence à une requète. Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !? Que ce passe t'il !? -- Cordialement.
"Bruno MAZÉPA" <ReplyToNewsGroup> a écrit dans le message de news:%
Bonjour à tous,
J'ai un formulaire dont le RecordSource est : "Rqt SaisieDepMod"
Sous Access 2000, peut-on rajouter une condition "where" à ma requête "Rqt SaisieDepMod" déjà existante, par VBA !?
-- Cordialement.
3stone
Salut,
"Bruno MAZÉPA"
Je fais donc : strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Tu ne pense pas inverser ton expression ?
Puisqu'il ne s'agit plus de la référence à une requète. Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !?
Je pencherai pour une erreur de concaténation... puisque strSQL est un simple... string !
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut,
"Bruno MAZÉPA"
Je fais donc :
strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Tu ne pense pas inverser ton expression ?
Puisqu'il ne s'agit plus de la référence à une requète.
Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !?
Je pencherai pour une erreur de concaténation...
puisque strSQL est un simple... string !
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Je fais donc : strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Tu ne pense pas inverser ton expression ?
Puisqu'il ne s'agit plus de la référence à une requète. Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !?
Je pencherai pour une erreur de concaténation... puisque strSQL est un simple... string !
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Bruno MAZÉPA
Salut Pierre, Dans ma procédure j'ai le code suivant : Dim MyQuery, strSQL, strSQLtmp, PosWhere, PosOrder, PosFinal Set xdb = CurrentDb ' MyQuery = Me![SFrm SaisieDepMod].Form.RecordSource ' Si nom de requete remplacé par sa définition If Left(MyQuery, 3) = "Rqt" Then strSQL = xdb.QueryDefs(MyQuery).SQL Else strSQL = MyQuery End If
Ensuite j'ai un tas de test et de manipulation de chaine pour placer mon "WHERE ..." A la fin de ma procédure j'ai donc : 'Affecter la nouvelle source au formulaire Me![SFrm SaisieDepMod].Form.RecordSource = strSQL Me![SFrm SaisieDepMod].Requery Set xdb = Nothing
Tout ça fonctionne bien la première fois, lorsque je reviens sur la procédure suite à un changement de condition "WHERE" Mon code au début : MyQuery = Me![SFrm SaisieDepMod].Form.RecordSource ne me retourne que les 256 premiers caractères !? Je ne comprends pas ! -- Cordialement.
"3stone" a écrit dans le message de news:3fc493bc$0$3247$
Salut,
"Bruno MAZÉPA"
Je fais donc : strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Tu ne pense pas inverser ton expression ?
Puisqu'il ne s'agit plus de la référence à une requète. Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !?
Je pencherai pour une erreur de concaténation... puisque strSQL est un simple... string !
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut Pierre,
Dans ma procédure j'ai le code suivant :
Dim MyQuery, strSQL, strSQLtmp, PosWhere, PosOrder, PosFinal
Set xdb = CurrentDb
'
MyQuery = Me![SFrm SaisieDepMod].Form.RecordSource
' Si nom de requete remplacé par sa définition
If Left(MyQuery, 3) = "Rqt" Then
strSQL = xdb.QueryDefs(MyQuery).SQL
Else
strSQL = MyQuery
End If
Ensuite j'ai un tas de test et de manipulation de chaine pour placer mon
"WHERE ..."
A la fin de ma procédure j'ai donc :
'Affecter la nouvelle source au formulaire
Me![SFrm SaisieDepMod].Form.RecordSource = strSQL
Me![SFrm SaisieDepMod].Requery
Set xdb = Nothing
Tout ça fonctionne bien la première fois,
lorsque je reviens sur la procédure suite à un changement de condition
"WHERE"
Mon code au début : MyQuery = Me![SFrm SaisieDepMod].Form.RecordSource
ne me retourne que les 256 premiers caractères !?
Je ne comprends pas !
--
Cordialement.
"3stone" <3stone@skynet.be> a écrit dans le message de
news:3fc493bc$0$3247$ba620e4c@reader0.news.skynet.be...
Salut,
"Bruno MAZÉPA"
Je fais donc :
strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Tu ne pense pas inverser ton expression ?
Puisqu'il ne s'agit plus de la référence à une requète.
Et là j'ai un gros soucis, il ne me prend que les 256 premiers
caractères !?
Je pencherai pour une erreur de concaténation...
puisque strSQL est un simple... string !
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Salut Pierre, Dans ma procédure j'ai le code suivant : Dim MyQuery, strSQL, strSQLtmp, PosWhere, PosOrder, PosFinal Set xdb = CurrentDb ' MyQuery = Me![SFrm SaisieDepMod].Form.RecordSource ' Si nom de requete remplacé par sa définition If Left(MyQuery, 3) = "Rqt" Then strSQL = xdb.QueryDefs(MyQuery).SQL Else strSQL = MyQuery End If
Ensuite j'ai un tas de test et de manipulation de chaine pour placer mon "WHERE ..." A la fin de ma procédure j'ai donc : 'Affecter la nouvelle source au formulaire Me![SFrm SaisieDepMod].Form.RecordSource = strSQL Me![SFrm SaisieDepMod].Requery Set xdb = Nothing
Tout ça fonctionne bien la première fois, lorsque je reviens sur la procédure suite à un changement de condition "WHERE" Mon code au début : MyQuery = Me![SFrm SaisieDepMod].Form.RecordSource ne me retourne que les 256 premiers caractères !? Je ne comprends pas ! -- Cordialement.
"3stone" a écrit dans le message de news:3fc493bc$0$3247$
Salut,
"Bruno MAZÉPA"
Je fais donc : strSQL = Me![SFrm SaisieDepMod].Form.RecordSource
Tu ne pense pas inverser ton expression ?
Puisqu'il ne s'agit plus de la référence à une requète. Et là j'ai un gros soucis, il ne me prend que les 256 premiers caractères !?
Je pencherai pour une erreur de concaténation... puisque strSQL est un simple... string !
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------