![]() |
QuickReport mit Connection verknüpfen?
Ich bin gerade dabei einen Programmteil umzubauen und dabei die Programmlogik übersichtlicher zu strukturieren.
Ich habe ein TQRPreview:
Code:
Und einen TReportDesignerDialog:
FPreview := TQRPreview.Create(nil);
FPreview.Parent := Self; FPreview.Align := alClient; FPreview.ZoomState := qrZoom100; FPreview.Zoom := 100; FPreview.TabStop := True; FPreview.TabOrder := 0; FPreview.OnMouseWheelUp := SetMouseWheelUp; FPreview.OnMouseWheelDown := SetMouseWheelDown;
Code:
Diese Werte habe ich aus dem vorherigen Wust aus Code übernommen. Dort gab es auch eine Connection (globale Variable in der Unit):
qrdQuickrep.bQrdPromptParams := (FReportTyp = rtVorschau);
FDesignerDialog := TReportDesignerDialog.Create(nil); FDesignerDialog.QRPreview := FPreview; FDesignerDialog.BeforeOpenDataset := ReportDesignerDialog1BeforeOpenDataset; FDesignerDialog.BeforeGetQueryParams := ReportDesignerDialog1BeforeGetQueryParams; FDesignerDialog.BandBeforePrint := ReportDesignerDialog1BandBeforePrint; FDesignerDialog.DefaultFileFilter := ReportDesignerDialog1.DefaultFileFilter; FDesignerDialog.EditorSettings := ReportDesignerDialog1.EditorSettings; FDesignerDialog.PrevFormStyle := ReportDesignerDialog1.PrevFormStyle; { #3.3.0.6 TT 2009-11-16 } FDesignerDialog.PreviewHeight := ReportDesignerDialog1.PreviewHeight; FDesignerDialog.PreviewWidth := ReportDesignerDialog1.PreviewWidth; FDesignerDialog.PreviewInitialState := ReportDesignerDialog1.PreviewInitialState; FDesignerDialog.PrintIfEmpty := ReportDesignerDialog1.PrintIfEmpty; FDesignerDialog.PrinterSettings.UseStandardprinter := True; FDesignerDialog.PrinterSettings.UseCustomPaperCode := False; FDesignerDialog.UseCurrentDatasets := FALSE; // muss False sein! FDesignerDialog.UseDatamodules := FALSE; // muss False sein! FDesignerDialog.UserSettings := ReportDesignerDialog1.UserSettings; FDesignerDialog.UsePrinterSettings := True; FDesignerDialog.PrepareAutomatically := False; FDesignerDialog.UseModalPreview := False; FDesignerDialog.PrinterSettings.MemoryLimit := 250000; FDesignerDialog.PrinterSettings.UseCustomBinCode := True; FDesignerDialog.PrinterSettings.CustomBinCode := getDruckerSchacht; FDesignerDialog.PrinterSettings.Duplex := getDuplex;
Code:
Da das Formular der ursprünglichen Connection zukünftig keine Programmlogik oder ähnliches mehr enthalten soll und nur noch mit einem dahinter liegenden Objekt interagiren soll, habe ich eine Connection in einer gesonderten unit erzeugt und die Alte gelöscht. Ich habe beim Erzeugen exakt die selben Werte gesetzt wie es in der ursprünglichen Connection getan wurde.
aADOConnection := TADOConnection.Create(self);
aADOConnection.Connected := False; aADOConnection.Name := 'MSSQL'; aADOConnection.LoginPrompt := False; aADOConnection.ConnectionString := sConnectionString; aADOConnection.IsolationLevel := ilReadUncommitted; aADOConnection.ConnectOptions := coAsyncConnect; aADOConnection.CursorLocation := clUseClient; aADOConnection.Mode := cmRead; aADOConnection.KeepConnection := False; aADOConnection.Connected := True; Meine Quickreport Komponenten (oben beschrieben) werden jetzt auch während der instanzierung einer neuen Klasse erstellt und sind mit dem ursprünglichen Form nicht verknüpft oder ähnliches. Darin wird auch der eigentliche Druck ausgeführt:
Code:
solange die Connection auf dem ursprünglichen Form ist, funktioniert das. Wenn ich diese entferne kommt die Fehlermeldung:
qrdQuickrep.bQrdPromptParams := true;
if not FDesignerDialog.PrintReport(FReportInfos.reportPfad) then begin //Fehlermedung end Zitat:
Zitat:
Hat jemand eine Idee? |
AW: QuickReport mit Connection verknüpfen?
Hallo,
aADOConnection.Connected := True; Das müsste die betreffende Zeile sein. Ich denke, du öffnest die ADO-Connection zu früh oder zu spät. |
AW: QuickReport mit Connection verknüpfen?
Ich kann mir ja TAdoQuerys erstellen, diese Connection zuweisen und verwenden. Das funktioniert. Ich muss das nur irgendwie mit meinem Quickreport verbinden :/
|
AW: QuickReport mit Connection verknüpfen?
Hallo,
was macht ReportDesignerDialog1BeforeOpenDataset. Wird das vor dem Erzeugen der AdoQuery aufgerufen? Ich denke, der Connection-String ist noch nicht gesetzt. Hangel dich doch mit ein paar Breakpointen durch. |
AW: QuickReport mit Connection verknüpfen?
Darin wird ein Array mit Parametern geparst, die später im Report verarbeitert werden und diese werden in das übergebene Dataset geschrieben.
Ich habe diese Events mal komplett auskommentiert - Der Fehler tritt trotzdem auf. Ich habe auch direkt vor dem Funktionsaufruf (FDesignerDialog.PrintReport) wo der Fehler kommt eine adoQuery erzeugt, meine Connection zugewiesen, eine Abfrage gemacht und es funktioniert. Das bedeutet, dass ich eine funktionierende offene Connection habe und nur Quickreport nicht drauf zugreifen kann denke ich. |
AW: QuickReport mit Connection verknüpfen?
Hallo,
Zitat:
Bist Du so vorgegangen? ![]() Vielleicht liegt ja noch eine ADOQuery auf dem QR-Formular. |
AW: QuickReport mit Connection verknüpfen?
Ich habe es gefunden... des Rätsels Lösung ist, dass die Connection in jeder einzelnen QR2 Datei abgelegt ist in Form von "FormReports.MSSQL"
|
AW: QuickReport mit Connection verknüpfen?
Hallöle...:P
Zitat:
Ich meine, die Aufgabe des Report´s ist, die Daten die er bekommt anzuzeigen. :thumb: |
AW: QuickReport mit Connection verknüpfen?
Zitat:
|
AW: QuickReport mit Connection verknüpfen?
Hallo,
wiederspricht oder widerspricht :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz