Frage

Zunächst kann ich nicht ausstehen Kristall! Okay, das ist aus meiner Brust ...

Jetzt haben wir eine alte VB6 App wir für einen Kunden halten, die die Kristall Automation-Bibliothek verwendet, um programmatisch die Datensatzauswahlformeln in einem Bündel von Crystal Reports 8.5 Berichte.

Es gibt zwei Berichte, die fast identisch sind. Ich hatte sich vor kurzem ändern ein anderes Feld aus einer anderen Tabelle hinzuzufügen. Wenn ich die Tabelle hinzugefügt in den Berichten aber, während sie es in der visuellen Designer hinzugefügt, es hat fügen Sie es nicht in der FROM-Klausel der SQL-Anweisung. Also, ich manuell die SQL-Anweisung bearbeitet hinzuzufügen in dem zusätzlichen beizutreten. KO, funktioniert super. Wenn ich die Berichte in Crystal Vorschau-Modus laufen, arbeiten sie genau wie erwartet.

Nun gingen die Benutzer die Änderungen innerhalb der VB App zu testen. Einer der Berichte funktioniert gut und Dandy. Der andere Bericht jedoch versagt die Auswahlformel zu setzen, wie erwartet.

Der Code legt die Auswahlformeln der Funktion PESetSelectionFormula verwenden. I Nachweis erbracht, dass die Zeichenfolge in der Funktion übergeben wird, als die neue Auswahl Formel über eine stufen durch Prüfung der Variablen korrekt ist. Der Aufruf von PESetSelectionFormula scheint in Ordnung zu arbeiten, und einen Wert von 1 zurückkehrt, die so nahe wie ich überall Erfolg zeigt finden. (Der andere Bericht, der fein von Code funktioniert auch 1 zurückkehrt.)

Allerdings wird der Bericht mit einem Fehler Fehler: Error Code: 534 - Error detected by database DLL. Der Code für Debugging-Zwecke zur Zeit des SQL-Zeichenfolge-Dumps aus dem Bericht verwendet werden. Die SQL des Berichts herauskommt ist:

SELECT ... FROM ... 
WHERE

ORDER BY ...

Wie Sie sehen können, die WHERE-Klausel leer ist, die ich mir vorstellen würde, ist, warum die Datenbank DLL auf dieser Anweisung wird upchucking. Ich verstehe nicht, warum die Automations-Bibliothek nicht die WHERE-Klausel Einstellung ist, auch wenn der Anruf an PESetSelectionFormula eine gültige Zeichenfolge übergeben wird und Erfolg zurückkehrt. Ich dachte, vielleicht war es, weil ich manuell die SQL in dem Bericht bearbeitet hatte den Tisch hinzufügt es nicht wurde hinzugefügt, aber ich habe die gleiche Sache in dem anderen fast identisch Bericht, und dass man arbeitet gut.

Wer irgendwelche Ideen, warum PESetSelectionFormula könnte Erfolg berichten, aber nicht wirklich etwas tun?

P. S. Ich habe schon versucht dabei eine Datenbank> Datenbank überprüfen aus den Menüs, und dass so der Bericht war alles auf dem Laufenden und hat nicht geholfen überhaupt.

War es hilfreich?

Lösung 3

Okay, das ist typisch dafür, warum ich Crystal Reports nur verachten.

Mein Chef kam aus dem Urlaub zurück, und es sah, ... tat nichts, und jetzt funktioniert es. Er zeigte mir genau das, was er getan hat, und er hat nicht oder alles tun, um den Bericht ändern, nur die gleichen Debugging-Schritte, die ich genommen hatte, aber jetzt ist es auf magische Weise funktioniert.

Ich mag nicht wirklich Software, dass nur automatisch stoppt und startet wie folgt arbeiten. Vielen Dank für die Ideen.

Andere Tipps

Ich habe noch nie verwendet, PESetSelectionFormula , aber ich habe Probleme importieren ansonsten akzeptabel Daten auftreten:

  1. Hat Ihre letzte SQL irgendwelche ungewöhnlichen Funktionen Abfrage, das heißt nz ()? Kristall nicht immer VB-Funktionen erkennen, imho.

  2. Haben Sie in Ihren importierten Daten keine Nullwerte haben, die Konflikte schaffen?

  3. Nach dem Sammeln von Daten, können Sie legte es in eine temporäre Tabelle und sagen Kristall die Daten aus dieser temporären Tabelle zu holen? Wenn Sie Probleme mit # 1 oder # 2, das eine gute Abhilfe sein kann.

In einigen Versionen von CR, die PESetSelectionFormula anhängt den neuen Wert der vorhandenen Datensatz-Auswahlformel, in anderen Versionen, PESetSelectionFormula ersetzt die vorhandenen Datensatz-Auswahlformel mit dem neuen Wert.

Ich erinnere mich nicht, wenn dieser Schalter eingetreten ist, aber es sollte einfach für Sie, welches Verhalten bestimmen auftreten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top