2008-08-21 31 views
12

Si vous avez deux versions du même rapport (.rpt) et que vous voulez établir les différences exactes, quelle est la meilleure façon de procéder? J'ai vu quelques outils commerciaux pour le faire, mais je ne suis pas trop intéressé par l'argent comptant pour quelque chose qui devrait être relativement simple. Puis-je me connecter à l'API Crystal et simplement lister toutes les propriétés de chaque domaine ou quelque chose? S'il vous plaît quelqu'un me dire qu'il ya un projet Open Source quelque part qui fait cela ... :-) @Quelle est la meilleure façon de différencier Crystal Reports?

@Kogus, ne diffing les sorties sous forme de texte cacher les différences de formatage?

@ladoucep, je ne semble pas pouvoir exporter le rapport sans les données.

+1

Juste couru d'une autre manière à diff, cherchant spécifiquement les changements de code cachés dans toutes les propriétés de divers objets de rapport - exporter les rapports au format 'Report Definition (TXT)' – SQLFox

Répondre

8

Puis-je brancher dans l'API de cristal et liste simplement toutes les propriétés de tous les domaines ou quelque chose? S'il vous plaît quelqu'un me dire qu'il ya un projet Open Source quelque part qui fait ça ... :-) @

Il est en fait, une telle API. J'ai écrit une application VB6 pour faire exactement ce que vous avez demandé et plus encore. Je pense que j'ai même migré vers VB.Net. Comme c'était pour mon usage personnel, je n'ai pas passé beaucoup de temps à le faire «poli». J'avais l'intention de le publier, mais je n'ai pas eu le temps ...

Une autre approche que j'ai utilisée dans le passé est de créer une application Access pour aider à gérer de grands projets de développement de rapports. L'une de ses nombreuses fonctionnalités inclut la possibilité d'extraire les tables utilisées par le rapport et les instructions SQL utilisées par ses commandes et ses expressions SQL. Son but est de donner une perspective globale de quels rapports utilisent quelles tables. Je l'ai encore probablement quelque part ...

** 1 ** modifier

BusinessObjects Enterprise XI (R?) A une fonctionnalité nommée 'MetaManager'. Il examinera périodiquement le contenu du référentiel et enregistrera les résultats dans une base de données. Il utilise le service RAS (Report-Application Service) pour générer les métadonnées. C'est une licence supplémentaire à 5 chiffres, bien sûr.

** modifier 2 **

Pensez à utiliser PowerShell pour faire le travail: PsCrystal.

+1

Si vous pensez que votre code pourrait prendre en charge Crystal Reports 11, je souhaiterais avoir accès aux deux programmes que vous décrivez. – LeBleu

+0

cela semble très pratique, est-ce quelque chose que vous seriez heureux de mettre dans un dépôt GitHub ou quelque chose? – ninesided

+5

Ajouté à code.google.com. Le nom du projet est 'RptToXml'. – craig

1

Une technique utile consiste à afficher les deux versions du rapport en texte brut, puis de différencier ces sorties.

Vous pouvez écrire quelque chose en utilisant le composant du rapport de cristal pour décrire toutes les propriétés du rapport, comme vous l'avez décrit. Ensuite, vous pouvez produire que en texte, et diff ceux. Je ne suis au courant d'aucun outil open source qui le fait pour vous, mais ce ne serait pas terriblement difficile à écrire.

@question dans la publication: Différer les sorties ne montrerait des changements de formatage que si les positions relatives avaient changé. Par exemple, si j'avais ceci:

avant: nom, prénom, addresss

après: Nom, Prénom, Adresse

Alors que se présenteraient comme une différence.

Mais si je venais endommager la colonne d'adresse sur quelques pixels, ou changé de texte brut en gras, alors vous avez raison, ce ne serait pas apparaître.

+0

Exporter chaque rapport au format de définition de rapport (un texte à base de fichier) et utiliser des outils de comparaison de texte comme Compare It ou Beyond Compare pour comparer les rapports – marak

1

Une technique que je l'ai utilisé à bon escient dans le passé est d'imprimer des rapports des deux versions basées sur les mêmes données. Je prends ensuite la première page de chaque version, je les pose l'une sur l'autre (il est important de ne pas les mélanger) et je les tiens jusqu'à une fenêtre. Il est généralement assez facile de voir les différences, et ces différences peuvent être annotées manuellement avec un instrument d'écriture approprié comme un crayon. Répétez l'opération pour chaque page du rapport.

Il est vrai que, pour les grands rapports cela peut prendre beaucoup de temps et d'erreurs, mais ces limitataions peuvent être surmontés avec soin et patience.

+2

ha, nice - les moyens low tech (ou pas de technologie) sont souvent les meilleurs! – ninesided