2009-06-17 16 views
1

Désolé s'il s'agit d'une question Noob, mais j'ai reçu l'honneur douteux de soutenir une ancienne application Access 2000 .adp, écrit mal par quelqu'un il y a des années qui n'est pas plus longtemps, quand j'ai peu d'expérience avec Access ou VB moi-même :)Mauvais nombre d'arguments pour DoCmd.OpenReport dans MS Access

J'ai configuré un ordinateur de développement WinXP avec Access 2000 (c'est un projet Access 2000) pour faire du travail de support. Il y a une ligne préexistante du code qui est censé imprimer un rapport, qui appelle DoCmd.OpenReport avec 6 arguments:

DoCmd.OpenReport ReportName, acViewPreview, , "orderId = 1234", , Printtype 

Quand je le lance, je reçois une erreur de compilation: « Le nombre d'arguments ou invalides cession de propriété ". J'ai donc utilisé 'intellisense' sur DoCmd.OpenReport, et mon éditeur de code VB d'accès m'indique qu'il attend seulement 4 arguments, pas 6: ReportName, acViewNormal, FilterName et WhereCondition. Quand je vais au navigateur d'objets pour la commande, la définition est:

Sous OpenReport (ReportName, [Voir As AcView = acViewNormal], [FilterName], [WhereCondition]) Membre de Access.DoCmd (soit 4 args

En regardant sur divers messages sur le web, certaines personnes semblent passer 4 args, certains 6. Qu'est-ce qui donne? Je suppose qu'il existe différentes versions de bibliothèques de code Access, et j'ai le mauvais. Mais je n'ai aucune idée par où commencer à résoudre cela. Quelqu'un connait Access et peut m'aider? Supprimez tout simplement après l'argument WhereCondition.

Répondre

1

Dans Access 2000, la méthode OpenReport accepté 4 paramètres:

DoCmd.OpenReport reportname[, view][, filtername][, wherecondition]

où [, paramètre] sont facultatifs.

Dans Access XP, OpenReport a gagné 2 autres paramètres pour donner:

DoCmd.OpenReport reportname[, view][, filtername][, wherecondition][, windowmode][, openargs]

est en cours Print on utilise comme argument le rapport et devra être adoptée en utilisant une autre méthode, par exemple lire à partir du champ de formulaire ou de la propriété publique.

+0

Oui, c'est la réponse, merci! Installation d'Access XP au lieu d'Access 2000 a résolu le problème. C'est bizarre, il dit dans les différentes barres de titre de la fenêtre que le projet est au format Access 2000 (c'est pourquoi je suis Access Access 2000), mais le code est clairement ciblé sur Access XP. –

+0

Le format de fichier a plus d'incidence sur les limites de la base de données de jet (taille de table et d'enregistrement) et les propriétés de formulaire et de rapport (niveaux imbriqués). Vous pouvez donc utiliser un format de fichier Access 2000 dans Access XP mais vous utilisez maintenant VB6 (Visual Basic pour Applications), comme vous pouvez le voir dans la boîte de dialogue Outils> Références de la fenêtre Code. – Ajw

+0

@ Ajw En fait, le format de fichier qui fait la différence en ce qui concerne la taille du fichier MDB est Access 97 et plus anciens qui n'étaient que de 1 Gb. Access 2000 et hewer/Jet 4.0 prennent en charge une taille de fichier de 2 Go. –

0

Les arguments supplémentaires sont pour la version ultérieure d'Access (ils sont pour WindowMode et OpenArgs)

+0

cela ne signifie-t-il pas que l'affiche n'a peut-être pas appliqué les derniers pascks de service pour Access 2000 et le moteur Jet? –

+0

J'ai installé tous les derniers service packs, cela n'a pas résolu le problème. Le problème était que j'avais besoin d'Access XP (voir la réponse acceptée) –

+0

Access XP ou plus tard, vous voulez dire. –