OVH Cloud OVH Cloud

[acc 2003] openrecordset

15 réponses
Avatar
Patrick
Bonjour à tous et toutes

sur un formulaire, j'ai un champ texte nommé REQUETE qui contient le nom
d'une requete existante dans la base, un autre champ DOCUMENT qui contient
le nom d'un document Word à ouvrir (avec son chemin absolu)

sur un bouton je lance un traitement et je souhaite ouvrir le recordset avec
:
Set Rs = Db.OpenRecordset(Me.REQUETE.)
celà ne fonctionne pas, en débug j'ai Rs =<<nothing>>
si je met :
Set Rs = Db.OpenRecordset(Me.REQUETE.Value)................. pas mieux
par contre
Set Rs = Db.OpenRecordset("LE_NOM_DE_MA_REQUETTE_EN_DUR") ca fonctionne
!

En fait je souhaiterais lancer un document word qui selon le choix sur 3
listes déroulantes est différent avec une requete source différente qui me
permet de passer les paramètres à word avec un truc du style :
Rs.MoveFirst
With W_App
.Visible = True
Do While Not Rs.EOF
.Documents.Open (DOCUMENT)
.ActiveDocument.Bookmarks("nom").Select
.Selection.InsertAfter Rs.Fields("nom")
.ActiveDocument.Bookmarks("adresse_1").Select
.Selection.InsertAfter Rs.Fields("adresse 1")
.ActiveDocument.Bookmarks("adresse_2").Select
.Selection.InsertAfter Rs.Fields("adresse 2")
.ActiveDocument.Bookmarks("code_postal").Select
.Selection.InsertAfter Rs.Fields("code postal")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Rs.Fields("ville")
'.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rs.MoveNext
Loop
Rs.Close

Je pourrais gérer celà avec un MONSQL = "select etc...", mais trop lour,
j'ai 15 puissance 2 possibilité de combinaisons entre
les courrier différents et les destinataires différents LOURD!!!!

et je ne peux pas traiter celà à partir de Word, l'appli tourne en réseau
avec des plateformes différentes et des Word différents

Je cherche une astuce autour de OpenRecordset

merci par avance de vos lumières ou de vos pistes

Cordialement
Patrick

5 réponses

1 2
Avatar
Patrick
le retour....le problème persiste

je met un point d'arrêt sur mon code (là ou il y a le X)
extrait du code :
Dim strRst As String
X strRst = Me.REQUETE_COURRIER--------------> strRST contient bien
le nom de ma requete
Set Rs = Db.OpenRecordset(strRst)------------------> access ne
"râle" pas, donc à priori il trouve bien le recordset
DOCUMENT = Me.chemin--------------------------> c'est bien mon
document word
If Not IsNull(DOCUMENT) Then
Rs.MoveFirst---------------------------------------> access ne
"râle" pas, donc il trouve le premier enreg
With W_App
(sinon j'aurais un truc du style "pas d'enregistrement courant" ???)
.Visible = True
Do While Not Rs.EOF
.Documents.Open (DOCUMENT)
.ActiveDocument.Bookmarks("nom").Select
.Selection.InsertAfter Rs.Fields("nom")---------> ici mon
RS.Fields et considéré

comme une variable non définie

je me demande si le lancement de word n'interfèrerait pas à partir de
.Visible = True ????

en étant en mode débogage, je lance ma requete elle me donne bien les
enregistrements sélectionnés !!!

j'y perds mon VBA, pardon mon latin

encore merci pour vos suggestions...
Question subsidiaire:
y a t il une autre méthode pour piloter word, compte tenu que j'ouvre des
*.doc, ne faut-il pas ouvrir un *.dot ? car en plus de ce souci,
j'ai un message d'erreur à la fermeture de word indiquant un normal.dot
verrouillé

Encore merci
Patrick
Avatar
Patrick
Bonjour Ilan

non pas de caracteres espaces supplementaires dans le contenu du controle
REQUETE.

merci
@+patrick
"Ilan" a écrit dans le message de news:

Bonjour Patrick,

il n'y aurait pas des caracteres espaces supplementaires dans le contenu
du
controle REQUETE.

En clair, il semble simplement que REQUETE ne contienne pas le nom d'une
requete ou d'une table existante.

"Patrick" wrote:

désolé je begaye du clavier ;-P

je teste tout je vous tiens au courant

"Jessy Sempere [MVP]" a écrit dans le message
de
news: ckgpf7$8mn$
Salut Raymond

Je pense effectivement que c'est une faute de frappe vu qu'il a aussi
essayer :

me.requete.value

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Raymond [mvp]" a écrit dans le message
news:
#
Bonjour Jessy.

Le point après requêtte c'est une faute de frappe ?

Set Rs = Db.OpenRecordset(Me.REQUETE.)


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jessy Sempere [MVP]" a écrit dans le
message
de

news: ckgonj$8bb$
Non...

Tu peux tout à fait passer par une variable pour renseigner la
source
de ton recordset

Essais peut-être de passer par une variable string :

dim strRst as string
strrst = me.requete
set rs = db.openrecordset (strRst)
--

@+
Jessy Sempere - Access MVP

















Avatar
Patrick
re, tous et toutes
Il me vient une idée
connaisez vous un moyen de récupérer la chaine SQL d'une requête existante
dans la base ?
ca me permettrai en récupérant le nom de ma requete de mettre dans mon code
un MONSQL = "select etc..." pour le déclarer en recordset ,

@ vous lire
Cordialement
Patrick
"Jessy Sempere [MVP]" a écrit dans le message de
news: ckgnae$7kd$
Bonjour

Je pense que le problème vient du fait que tu as nommés ton champ
Requete...

Je ne serais pas catégorique mais essais en le nommant autrement ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Patrick" a écrit dans le message news:

Bonjour à tous et toutes

sur un formulaire, j'ai un champ texte nommé REQUETE qui contient le nom
d'une requete existante dans la base, un autre champ DOCUMENT qui
contient
le nom d'un document Word à ouvrir (avec son chemin absolu)

sur un bouton je lance un traitement et je souhaite ouvrir le recordset
avec

:
Set Rs = Db.OpenRecordset(Me.REQUETE.)
celà ne fonctionne pas, en débug j'ai Rs =<<nothing>>
si je met :
Set Rs = Db.OpenRecordset(Me.REQUETE.Value)................. pas
mieux
par contre
Set Rs = Db.OpenRecordset("LE_NOM_DE_MA_REQUETTE_EN_DUR") ca
fonctionne

!

En fait je souhaiterais lancer un document word qui selon le choix sur 3
listes déroulantes est différent avec une requete source différente qui
me
permet de passer les paramètres à word avec un truc du style :
Rs.MoveFirst
With W_App
.Visible = True
Do While Not Rs.EOF
.Documents.Open (DOCUMENT)
.ActiveDocument.Bookmarks("nom").Select
.Selection.InsertAfter Rs.Fields("nom")
.ActiveDocument.Bookmarks("adresse_1").Select
.Selection.InsertAfter Rs.Fields("adresse 1")
.ActiveDocument.Bookmarks("adresse_2").Select
.Selection.InsertAfter Rs.Fields("adresse 2")
.ActiveDocument.Bookmarks("code_postal").Select
.Selection.InsertAfter Rs.Fields("code postal")
.ActiveDocument.Bookmarks("ville").Select
.Selection.InsertAfter Rs.Fields("ville")
'.ActiveDocument.PrintOut False
.ActiveDocument.Close wdDoNotSaveChanges
Rs.MoveNext
Loop
Rs.Close

Je pourrais gérer celà avec un MONSQL = "select etc...", mais trop lour,
j'ai 15 puissance 2 possibilité de combinaisons entre
les courrier différents et les destinataires différents LOURD!!!!

et je ne peux pas traiter celà à partir de Word, l'appli tourne en réseau
avec des plateformes différentes et des Word différents

Je cherche une astuce autour de OpenRecordset

merci par avance de vos lumières ou de vos pistes

Cordialement
Patrick








Avatar
Raymond [mvp]
je reviens en arrière.

j'ai testé cette procédure.
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset(Me.Requete)
Debug.Print Rs(0)
Rs.Close
Set Rs = Nothing
Set Db = Nothing

je n'ai aucun problème j'affiche bien la valeur du bon champ de
l'enregistrement 1, Me.Requete étant un contrôle du formulaire.
faudrait peut-être reprendre la procédure complète à partir des Dim.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Patrick" a écrit dans le message de news:

re, tous et toutes
Il me vient une idée
connaisez vous un moyen de récupérer la chaine SQL d'une requête existante
dans la base ?
ca me permettrai en récupérant le nom de ma requete de mettre dans mon
code
un MONSQL = "select etc..." pour le déclarer en recordset ,

@ vous lire
Cordialement
Patrick
"Jessy Sempere [MVP]" a écrit dans le message
de news: ckgnae$7kd$
Bonjour

Je pense que le problème vient du fait que tu as nommés ton champ
Requete...

Je ne serais pas catégorique mais essais en le nommant autrement ?





Avatar
pat
OK raymond,
je remet tout à plat et je vous tiens au courant
il doit y avoir un problème quelque part...
par contre je redonne des nouvelles que vendredi...

ces 2 prochains jours je suis hors du bureau

@+ et merci
Patrick
"Raymond [mvp]" a écrit dans le message de
news: eO2s%
je reviens en arrière.

j'ai testé cette procédure.
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset(Me.Requete)
Debug.Print Rs(0)
Rs.Close
Set Rs = Nothing
Set Db = Nothing

je n'ai aucun problème j'affiche bien la valeur du bon champ de
l'enregistrement 1, Me.Requete étant un contrôle du formulaire.
faudrait peut-être reprendre la procédure complète à partir des Dim.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Patrick" a écrit dans le message de news:

re, tous et toutes
Il me vient une idée
connaisez vous un moyen de récupérer la chaine SQL d'une requête
existante
dans la base ?
ca me permettrai en récupérant le nom de ma requete de mettre dans mon
code
un MONSQL = "select etc..." pour le déclarer en recordset ,

@ vous lire
Cordialement
Patrick
"Jessy Sempere [MVP]" a écrit dans le message
de news: ckgnae$7kd$
Bonjour

Je pense que le problème vient du fait que tu as nommés ton champ
Requete...

Je ne serais pas catégorique mais essais en le nommant autrement ?









1 2