2010-11-15 42 views
7

J'ai un formulaire simple, une requête et un rapport dans Access 2003. Je dois manipuler les résultats de la requête dans un jeu d'enregistrements en utilisant VBA, puis le transmettre au rapport en tant que RecordSource.ADODB RecordSet en tant que rapport d'accès RecordSource

Si je déclare le jeu d'enregistrements en tant que RecordSet et utilise sa propriété Name en tant que RecordSource du rapport, alors il fonctionne. Cependant, parce que j'ai besoin d'éditer le jeu d'enregistrements, je pense qu'il serait plus facile d'utiliser un ADODB RecordSet comme ci-dessous.

L'ensemble d'enregistrements est déclaré Dim rs As ADODB.RecordSet dans un module global. Le reste du code est; J'ai utilisé pour passer le RecordSource du rapport comme myReport.RecordSource = rs.Name. Mais l'ADODB n'a pas de propriété Name.

Comment puis-je transmettre ce jeu d'enregistrements au rapport en tant que RecordSource?

Merci

+0

Pourquoi pensez-vous que vous devez faire? Pourquoi ne pouvez-vous pas simplement définir la source d'enregistrements dans l'événement OnOpen du rapport? –

+0

Je suis en train de définir la propriété RecordSource du rapport lors de l'événement open du rapport, mais elle nécessite le nom de l'ensemble d'enregistrements et ADODB Recordset n'a pas de propriété name. – Sivakanesh

+1

Je dis ne pas utiliser un jeu d'enregistrements - il suffit de définir le SQL de la propriété Recordsource pour être le SQL que vous utilisez pour ouvrir votre jeu d'enregistrements. S'il y a une raison qui ne fonctionne pas, je ne le vois pas. C'est la manière standard de le faire, au lieu de définir le Recordset du rapport (ce que je n'ai jamais eu besoin de faire pendant toutes mes années de programmation Access pour vivre). –

Répondre

5

Vous ne pouvez pas lier un rapport à un jeu d'enregistrements ADO dans un mdb, que dans un adp: http://support.microsoft.com/?id=287437

+1

Oui, pas possible avec un ADODB. Donc, je viens de créer une requête make table et manipulé les données à l'intérieur. Ensuite, il suffit de lier le rapport à cette table. – Sivakanesh

0

Je n'ai pas une copie d'accès 2003 à la main, mais de la mémoire vous venez

Set Me.Recordset = rs 

juste eu un coup d'oeil sur le Microsoft KB et il semble que ma mémoire est encore travail!

http://support.microsoft.com/kb/281998