web-dev-qa-db-fra.com

extraire une requête SQL brute à partir d'un fichier .rpt de Crystal Report

J'ai un fichier .rpt que je n'ai pas écrit et sur lequel je ne trouve aucune documentation. Je souhaite pouvoir consulter le code SQL généré à partir de ce rapport afin de pouvoir déterminer quelles données il était en train d'extraire et quels paramètres de la clause WHERE ont été utilisés. 

Je peux l'ouvrir et voir la mise en page du rapport. Mais lorsque je sélectionne Base de données | Afficher la requête SQL ... le rapport tente de se connecter à la source de données. Le problème est que la source de données utilisée est inconnue de moi, probablement une connexion ODBC utilisée par le destinataire de la requête. Tout ce que je peux faire à ce stade est «Annuler» et je reviens au concepteur de rapport. 

Est-ce que je manque quelque chose? Puis-je accéder à la requête SQL sans me connecter à la source de données? Il semble que l'affichage des critères de sélection ne devrait pas dépendre d'une connexion de données. 

Merci.

version: Crystal Reports 2008

17
Greg P

Je sais que c'est un vieux fil, mais j'ai rencontré le même problème. En réalité, nous avions auparavant une base de données/application acquise par un organisme externe.

Bien qu'ils disposent maintenant de la base de données/de l'application, ils n'ont pas accès aux rapports Crystal. Nous ne pouvons donc pas leur envoyer l'ancien rapport que nous utilisions auparavant. De même, nous ne pouvons pas l'exécuter car nous n'avons même pas configuré la base de données n'importe où ... Par conséquent, notre plan était simplement d'extraire le code SQL généré par le rapport et de le transférer ensuite.

Nous avons rencontré le même problème, mais la solution est en fait assez simple. Si vous n’avez pas accès à la source de données originale, créez simplement une nouvelle source de données «vierge» (telle qu’un ODBC lien). Tant que la connexion à la source de données fonctionne (c’est-à-dire qu’il s’agit d’une source de données valide, cela fonctionne correctement). Lors de l'exécution de l'option "Afficher SQL", pointez le rapport sur cette source de données. Tant que vous n'essayez pas d'exécuter le rapport (et d'afficher uniquement le code SQL), l'opération échouera. Cela a fonctionné pour notre situation de toute façon. (Crystal Reports 2008)

(Je peux donner plus de détails si cela peut vous aider.)

17
Scott Barron

Il devrait être possible de connaître quelques détails sur la source de données existante en sélectionnant Base de données> Définir l'emplacement de la source de données .... 

En plus de vous permettre de changer l'emplacement de la source de données, cette opération devrait vous montrer des informations sur la source de données actuelle, telles que le type de source de données utilisé et éventuellement (en fonction du type de pilote) le nom de la base de données. Il sera probablement moins utile si (comme vous l’imaginez) que la source de données est ODBC, mais si elle utilise un pilote natif, il peut y avoir quelque chose d’utile.

6
user359040

Sans le mot de passe, je ne sais pas ce que vous pouvez faire. Il semble que "Show SQL Query" nécessite de générer un rapport avant de générer le plan SQL.

Ce n'est pas idéal, mais vous pouvez accéder à Base de données> Expert en liens visuels pour voir au moins les tables et leur jonction, puis pour accéder à l'éditeur de formule de sélection d'enregistrements et voir quelles sont les instructions WHERE personnalisées.

5
LittleBobbyTables

Affichage du code SQL d'une commande dans un fichier de rapport Crystal

Il arrive que vous n'ayez que le fichier de rapport, mais pas la structure de base de données associée utilisée par le rapport. Ceci est courant lorsque vous traitez avec des exemples de rapports de fonctionnalités que vous souhaitez imiter. Il s'agit d'une solution de contournement. SEULEMENT pour vous permettre de voir le code SQL d'une commande sur laquelle est basé un rapport Crystal, lorsque vous ne disposez pas de la connexion à la base de données sous-jacente sur laquelle le rapport est basé. En substance, la boîte de dialogue doit être: satisfait avant de montrer le code SQL, nous le trompons donc avec une source de données légitime, mais pas avec une source fonctionnant avec le code SQL figurant dans la commande SQL.

Pourquoi un rapport utilise-t-il une commande? Crystal Reports n'a-t-il pas la capacité de lier des tables? Lorsqu'un Crystal Report est basé sur un ensemble d'enregistrements trop complexe pour la fonctionnalité de liaison de table dans Crystal Reports, le rapport peut plutôt être basé sur une requête SQL. , généralement développé/testé dans un autre outil d'édition et collé dans la commande. Cela permet d’utiliser des fonctions SQL avancées.

Si vous ne disposez pas déjà d'une source de données sur votre ordinateur à laquelle vous pouvez vous connecter, vous devez d'abord en créer une.

Un simple fichier Microsoft Access .mdb enregistré dans un emplacement simple suffira. J'ai placé le mien avec le chemin C:\A_test\test.mdb pour le rendre facile à trouver. Si vous ne le faites pas t en avez un, google pour un exemple de fichier mdb et téléchargez-le, enregistrez-le avec un nom et un emplacement dont vous vous souviendrez. (Vous n'ouvrirez jamais ce fichier, mais vous y connecterez.) Une fois le fichier enregistré, ouvrez le ODBC Administrateur et créez une nouvelle source de données. (vous pouvez accéder rapidement à ODBC, administrateur depuis Démarrer> tapez ODBC dans la recherche) Dans l'onglet User DSN, cliquez sur le bouton Ajouter. ____.] Faites défiler la liste des pilotes jusqu'à Microsoft Access Driver (* .mdb), sélectionnez-le et cliquez sur le bouton Terminer. Dans la zone Nom de la source de données, saisissez un nom (j'ai utilisé MyTest). Cliquez sur le bouton de sélection et sélectionnez le fichier mdb que vous avez enregistré à une étape précédente, puis cliquez sur OK. Cliquez à nouveau sur OK. Vous verrez votre nouvelle source de données répertoriée par le nom que vous lui avez donné. Cliquez sur OK. Vous avez maintenant la source de données dont vous aurez besoin pour les prochaines étapes.

  1. Ouvrez le rapport Crystal pour lequel vous souhaitez voir la commande SQL, puis cliquez sur le bouton Expert base de données ou sur le menu Base de données> Expert base de données.
  2. Sous Tableaux sélectionnés, cliquez avec le bouton droit sur la commande et choisissez Afficher la commande.
  3. La boîte de sélection de la source de données apparaît. Sélectionnez la source de données que vous avez créée (ou celle que vous utilisez déjà) et cliquez sur le bouton Terminer. La boîte de dialogue Afficher la commande doit s'ouvrir avec le code SQL dans le volet gauche. Copiez le code SQL dans votre éditeur de texte préféré.
3
Phil B

Ce qui se passe, c’est que les rapports Crystal ont besoin d’une base de données à laquelle se connecter, qu’il s’agisse ou non de la base de données source d’origine.

Créez une base de données locale ou utilisez une base de données stockée sur un serveur, ajoutez-la à votre source de données ODBC et utilisez-la lors de la connexion. Une fois la connexion établie, vous devriez pouvoir afficher la requête SQL sans erreur.

0
sqrepants