Anzeigen der Ausgabe von 'print' - Anweisungen verwenden ADOConnection in Delphi
Einige meiner MS-SQL-gespeicherte Prozeduren erzeugen Nachrichten mit dem 'drucken' Befehl. In meinem Delphi 2007-Anwendung, die Verbindung zu MS-SQL-Verwendung von TADOConnection, wie kann ich die Ausgabe der "print" - Befehle?
Wichtigen Anforderungen:
1) ich kann nicht führen Sie die Abfrage mehr als einmal; es könnte die Aktualisierung Dinge.
2) ich muss sehen, dass die 'drucken' - Ergebnisse, auch wenn Datensätze zurückgegeben werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das war eine interessante...
Die OnInfoMessage Ereignis aus der ADOConnection funktioniert, aber der Teufel steckt im Detail!
Wichtigsten Punkte:
verwenden CursorLocation = clUseServer anstelle der Standard-clUseClient.
nutzen Sie den Offenen und nicht ExecProc mit Ihrem ADOStoredProc.
verwenden NextRecordset von der aktuellen zu bekommen, die folgenden, aber sicher sein, zu prüfen, ob Sie eine öffnen.
die Verwendung von SET NOCOUNT = ON in der gespeicherten Prozedur.
SQL Seite: der gespeicherten Prozedur
Delphi Seite:
Erstellen einer neuen VCL Forms-Anwendung.
Legen Sie ein Memo und einen Button in Ihr Formular.
Kopieren Sie den folgenden text, ändern Sie den Katalog und die Datenquelle und Fügen Sie es auf Ihr Formular
In der OnInfoMessage der ADOConnection setzen
Für den ButtonClick fügen Sie diesen code
In .net-connection-Klassen gibt es eine Veranstaltung namens InfoMessage. In einer Behandlungsroutine für dieses Ereignis können Sie abrufen, die InfoMessage (print-Anweisung) aus der event-args.
Glaube ich, dass Delphi eine ähnliche Veranstaltung namens "OnInfoMessage", die dir helfen würden.
Ich glaube nicht, dass das möglich ist.
Sie können eine temp-Tabelle dump print-Anweisungen und senden Sie es alongwith Ergebnisse.
Einige Verbesserungen an Francois' code (wie getestet mit DXE2) gerecht zu werden, die für mehrere print-Anweisungen, und die Ergebnisse, die aus einer Variablen Anzahl von wählt. Die änderungen sind subtil.