Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 17h10   #1
Invité de passage
 
Inscription : septembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 4
Points : 0
Points : 0
Par défaut Recuperer les valeurs d'un recorset

Bonjour à tous,

En principe j'essaie toujours de me débrouiller mais la, je sèche.

Je reprend une application Access et il y a dans le code pas mal de requetes. Certaines sont simples, mais d'autres très complexes.
Le but est d'avoir sous forme de table le résultat de ces requetes.

J'ai crée une fonction qui fabrique une table avec les champs du recordset.

******* la fonction **********
r_to_t (nom du recordset)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Function r_to_t(le_record) As Object
 
    Dim la_nouvelle_table As TableDef
    Dim i
 
    CurrentDb.TableDefs.Delete ("t_record_to_table")
    Set la_nouvelle_table = CurrentDb.CreateTableDef("t_record_to_table")
    For i = 0 To le_record.Count - 1
        With la_nouvelle_table
            .Fields.Append .CreateField(le_record(i).Name, dbText)
        End With
    Next
    CurrentDb.TableDefs.Append la_nouvelle_table
 
    Set la_nouvelle_table = Nothing
 
End Function
Jusque la, pas de problème, ça marche !

Mais ce que je voudrais en plus, c'est d'incrementer la nouvelle table avec les enregistrement du recorset, et c'est la que je coince.

Si quelqu'un peu m'aider, je serai le plus heureux des hommes.

Merci à tous pour votre aide.


Cordialement
marc_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h23   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Je ne comprends pas ta manière de procéder.
Si tu transformais la requête de type sélection en requête création de table n'aurais-tu pas le résultat rechercé ?
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h30   #3
Invité de passage
 
Inscription : septembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par ClaudeLELOUP Voir le message
Bonjour,

Je ne comprends pas ta manière de procéder.
Si tu transformais la requête de type sélection en requête création de table n'aurais-tu pas le résultat rechercé ?

Parce que les requetes sont du type :
************
Set Mon_Recorset = CurrentDb.OpenRecordset("select * from Ma_Table order by Date desc")
************
Dans ce cas, c'est simple effectivement, mais il y en a qui font facilement 10 lignes dans le code et je suis loin d'être un spécailiste du SQL.

Voila pourquoi je souhaite avoir le résultat de ces requetes.


Merci pour ta réponse ;-)
marc_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h47   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Excuse-moi d'insister.
ça prend maximum 1 '.

Tu crées, avec l'assistant, une requête "création de table" avec comme input ta requête de 10 lignes de sql (on peut en mettre bien davantage !)
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h19   #5
Invité de passage
 
Inscription : septembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par ClaudeLELOUP Voir le message
Excuse-moi d'insister.
ça prend maximum 1 '.

Tu crées, avec l'assistant, une requête "création de table" avec comme input ta requête de 10 lignes de sql (on peut en mettre bien davantage !)

Quand il y a un certain nombre de variables dans le code, je ne vois pas comment l'assistant pourrait m'aider.

En fait ma question est plus simple,
comment passer un recordset en parametre dans une fonction ?



Cordialement
marc_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 09h45   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Ma dernière tentative :

Code :
1
2
3
4
5
6
Public Sub tst()
Dim Sql As String
'CurrentDb.OpenRecordset ("select * from Ma_Table order by Date desc")
Sql = "select * from Ma_Table order by Date desc"
Debug.Print Sql
End Sub
J’ai défini une variable sql.
Je lui ai affecté (copier/coller) le contenu de l’argument de 'CurrentDb.OpenRecordset’.
J’ai provoqué l’exécution du code.
J’ai récupéré le produit du debug.print dans la fenêtre d’exécution (copier).
J’ai introduis ce sql dans une requête (coller).
Et en mode design, donc avec l’aide de l’assistant, je fais ce qu’il faut.
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 12h58   #7
Invité de passage
 
Inscription : septembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 4
Points : 0
Points : 0
Merci pour ta patience, Claude.

Mais quand même, j'aimerais bien savoir comment passer un recordset en parametre dans une fonction ;-(


Bonne journée
marc_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 13h32   #8
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour
Code :
Function Toto (pRec as dao.recordset) as integer
Appel de la fonction
Code :
1
2
3
4
dim iRec as dao.recordset
dim i as integer
...
i = toto (irec)
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web