2010-07-14 5 views
17

Ich habe eine .rpt-Datei, die ich nicht geschrieben habe und kann keine Dokumentation über finden. Ich möchte in der Lage sein, die von diesem Bericht generierte SQL zu überprüfen, damit ich herausfinden kann, welche Daten gezogen wurden und welche WHERE-Klauselparameter verwendet wurden.extrahieren Raw SQL-Abfrage aus einem Crystal Reports .rpt-Datei

Ich kann es öffnen und das Berichtslayout sehen. Aber wenn ich Database | Show SQL Query ... auswähle, versucht der Bericht, sich mit der Datenquelle zu verbinden. Das Problem ist, dass die verwendete Datenquelle mir unbekannt ist, wahrscheinlich eine ODBC-Verbindung, die von jedem verwendet wird, der die Abfrage geschrieben hat. Alles, was ich in diesem Stadium tun kann, ist "Abbrechen" und ich schaue wieder auf den Berichtsdesigner.

Fehle ich etwas? Kann ich ohne Verbindung zur Datenquelle zur SQL-Abfrage gelangen? Es scheint, als ob die Auswahlkriterien nicht von einer Datenverbindung abhängig sein sollten.

Danke.

Version: Crystal Reports 2008

+0

Danke - das beantwortete meine eigene Frage - wie man das SQL sieht! –

Antwort

5

Ohne das Passwort Ich bin nicht sicher, wie viel Sie tun können. Es scheint, dass "SQL-Abfrage anzeigen" erfordert, dass zuerst ein Bericht erstellt wird und dann der SQL-Plan generiert wird.

Es ist nicht ideal, aber Sie könnten zu Datenbank> Visual Linking Expert gehen, um zumindest die Tabellen und ihre Verbindungen zu sehen, und gehen Sie zum Record Selection Formula Editor und sehen Sie, was die benutzerdefinierten WHERE-Anweisungen sind.

6

Es sollte möglich sein, einige Details über die vorhandene Datenquelle zu ermitteln, indem Sie Datenbank> Datenquellenstandort festlegen ... auswählen.

Neben der Möglichkeit, den Speicherort der Datenquelle zu ändern, sollten Ihnen einige Informationen zur aktuellen Datenquelle angezeigt werden, z. B. welcher Datenquellentyp verwendet wird und möglicherweise (abhängig vom Typ des Treibers) der Name der Datenquelle Datenbank. Es ist wahrscheinlich weniger hilfreich, wenn (wie Sie vermuten) die Datenquelle ODBC ist, aber wenn es einen nativen Treiber verwendet, kann es etwas Nützliches geben.

+0

+1 Das wäre meine erste Aktion. Meine zweite Aktion wäre, in den Datenbankexperten zu gehen (wie LittleBobbyTables sagte). Zwischen diesen beiden Optionen sollten Sie eine klare Vorstellung von der Datenquelle haben. – PowerUser

16

Ich weiß, dass dies ein alter Thread ist, aber ich stieß auf das gleiche Problem. Effektiv hatten wir eine Datenbank/Anwendung, die seither von einer externen Agentur erworben wurde.

Obwohl sie jetzt die Datenbank/Anwendung haben, haben sie keinen Zugriff auf Crystal Reports, so dass wir ihnen nicht einfach den alten Bericht schicken können, den wir benutzt haben. Ebenso können wir es nicht ausführen, da wir die Datenbank nicht einmal irgendwo eingerichtet haben. Also war unser Plan nur, den vom Bericht erzeugten SQL-Code zu extrahieren und diesen weiterzuleiten.

Wir haben das gleiche Problem, aber die Lösung ist eigentlich ziemlich einfach. Wenn Sie keinen Zugriff auf die ursprüngliche Datenquelle haben, erstellen Sie einfach eine neue 'leere' Datenquelle (z. B. eine ODBC-Verbindung). Solange die Verbindung zur Datenquelle funktioniert (d. H. Es handelt sich um eine gültige Datenquelle, funktioniert dies einwandfrei). Wenn Sie die Option 'SQL anzeigen' ausführen, zeigen Sie den Bericht auf diese Datenquelle. Solange Sie nicht versuchen, den Bericht tatsächlich auszuführen (und nur SQL anzeigen), schlägt die Operation fehl. Das hat für unsere Situation trotzdem funktioniert. (Crystal Reports 2008)

(kann ich weitere Informationen geben, wenn es in irgendeiner Weise hilft.)

+1

Das hat für mich funktioniert. Im Flyout-Menü Datenbank gibt es die Option "Datenbank jedes Mal verifizieren". Dies wird dich durcheinander bringen. Klicken Sie darauf, wenn es markiert ist. Dann versuche es noch einmal. – greg

3

Anzeigen der SQL eines Befehls in einem Crystal Report-Datei

Es gibt Zeiten, die Sie gerade den Bericht haben Datei, aber nicht die zugehörige Datenbankstruktur, die der Bericht verwendet. Dies ist üblich, wenn Sie Beispielberichte von Funktionen bearbeiten, die Sie nachahmen möchten. Dies ist NUR eine Umgehung, damit Sie die SQL eines Befehls, auf dem ein Crystal Report basiert, anzeigen können, wenn Sie nicht über die zugrunde liegende Datenbankverbindung verfügen, auf der der Bericht basiert. Im Wesentlichen muss das Dialogfeld erfüllt sein, bevor es das SQL zeigt, also täuschen wir es mit einer legitimen Datenquelle, nur nicht mit der SQL, die tatsächlich im SQL-Befehl ist.

Warum verwendet ein Bericht einen Befehl? Ist Crystal Reports nicht in der Lage, Tabellen zu verknüpfen? Wenn ein Crystal Report auf einem Datensatz basiert, der für die Tabellenverknüpfungsfunktionalität in Crystal Reports zu komplex ist, kann der Bericht stattdessen auf einer SQL-Abfrage basieren, die normalerweise in einem anderen Editor-Tool entwickelt/getestet und in den Befehl eingefügt wird. Dadurch können erweiterte SQL-Funktionen verwendet werden.

Wenn Sie noch keine Datenquelle auf Ihrem Computer eingerichtet haben, mit der Sie eine Verbindung herstellen können, müssen Sie zuerst eine erstellen.

Eine einfache Microsoft Access-MDB-Datei, die an einem einfachen Speicherort gespeichert wird, reicht aus. Ich habe meins mit dem Pfad C: \ A_test \ test.mdb platziert, damit es leicht zu finden ist. Wenn Sie keine haben, suchen Sie nach einer Beispiel-MDB-Datei und laden Sie sie herunter. Speichern Sie sie unter einem Namen und Speicherort, den Sie sich merken können. (Sie werden diese Datei nie öffnen, aber verbinden Sie sie einfach.) Sobald Sie die Datei gespeichert haben, öffnen Sie den ODBC-Administrator und erstellen Sie eine neue Datenquelle. (Sie können schnell zum ODBC-Administrator gelangen, indem Sie Start> ODBC in die Suche eingeben) Klicken Sie auf der Registerkarte Benutzer-DSN auf die Schaltfläche Hinzufügen. Scrollen Sie in der Treiberliste nach Microsoft Access Driver (* .mdb), wählen Sie sie aus und klicken Sie auf die Schaltfläche Fertig stellen. Geben Sie im Feld Datenquellenname einen Namen ein (ich habe MyTest verwendet). Klicken Sie auf die Schaltfläche Auswählen, und wählen Sie die MDB-Datei aus, die Sie in einem vorherigen Schritt gespeichert haben, und klicken Sie auf OK. Klicken Sie erneut auf OK. Sie sehen Ihre neue Datenquelle unter dem Namen, den Sie angegeben haben. OK klicken. Sie haben jetzt die Datenquelle, die Sie für die nächsten Schritte benötigen.

  1. Öffnen Sie den Crystal Report möchten Sie für den SQL-Befehl, um zu sehen, und klicken Sie auf Schaltfläche Datenbank-Assistent oder Datenbank> Datenbank-Assistent Menü.
  2. Klicken Sie unter Ausgewählte Tabellen mit der rechten Maustaste auf den Befehl, und wählen Sie Befehl anzeigen.
  3. Das Datenquellenauswahlfeld wird angezeigt. Wählen Sie die Datenquelle aus, die Sie erstellt haben (oder die Sie bereits verwenden), und klicken Sie auf die Schaltfläche Fertig stellen. Das View Command-Feld sollte mit dem SQL in dem linken Bereich geöffnet werden. Kopieren Sie das SQL in Ihren bevorzugten Texteditor.