![]() |
Datenbank: OLEDB • Version: 4.0 • Zugriff über: Ado
Mit EkRtf Report aus Ado erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich möchte aus der AdoQuery-Komponente über die RkRtf-Komponente einen Report in eine RTF schreiben. Dabei erhalte ich die Fehlermeldung: Scan Alias not found: rechnungen Das Template zur Ausgabe habe ich wie im Demo auf der Homepage ( ![]()
Delphi-Quellcode:
und
\Scan(rechnungen)\
Delphi-Quellcode:
gestaltet.
\EndScan\
Auf den Ersten Blick deutet dies darauf hin, daß die Tabelle "rechnungen" in der Datenbank nicht gefunden wird. Das habe ich folgendermaßen überprüft, in dem ich die Scan() und EndScan - Anweisung im Template weg gelassen habe. Der Bericht wird entsprechend datenlos erstellt, ohne weitere Fehlermeldung. Dann habe ich bewusst einen falschen Tabellennamen im Template übergeben, zB "Tabelle1". Es kommt zur Meldung: Scan Alias not found: Tabelle1 Um eventuelle Probleme durch Versions-Unterschiede auszuschließen, habe ich mir auch schon das Orginal-Demo beim o.g. Link gedownloadet, compiliert und funktoniert. Leider ist mir aber unklar warum das Demo läuft und mein Template nicht. Wenn ich mein Template mit dem Demo laufen lasse, mit der entsprechen Anpassung des Tabellennames läuft es. Ich habe auch schon probiert die AdoQuery durch einen AdoTable (wie im Demo) zu ersetzten... ohne Erfolg. Ich habe ein Demo angehängt. Hat jemand einen Verdacht warum die tatsächlich vorhandene Tabelle "rechnungen" nicht ins Template geschrieben wird, bzw warum die Tabelle vom Template/Programm nicht gefunden wird? |
AW: Mit EkRtf Report aus Ado erstellen
Hallo,
mache die RTF-Datei mal mit Wordpad auf und speichere sie ab. Dann entfällt ein Haufen Winword-RTF-Kram. |
AW: Mit EkRtf Report aus Ado erstellen
Nein. Die Tabelle heißt "rechnungen" und so spreche ich sie auch an. Korrekt klein geschrieben.
Das wäre ja auch viel zu einfach ;) |
AW: Mit EkRtf Report aus Ado erstellen
Also ich hab mit dieser Komponente noch nie gearbeitet, aber ich würde darauf wetten, dass sich dieses
Delphi-Quellcode:
in
rechnungen
Delphi-Quellcode:
sich nicht auf eine bestehende Tabelle in der Datenbank bezieht, sondern auf den DataSet-Namen, den man an die Komponente übergibt.
\Scan(rechnungen)\
Im Beispiel auf der Website findet man eine
Delphi-Quellcode:
mit dem Namen Customers und diese Koponente wird auch übergeben:
TADOTable
Delphi-Quellcode:
Im RTF-Template wird sich dann auch genau darauf bezogen:
procedure TForm1.Button2Click(Sender: TObject);
begin (* check report template file *) if not FileExists(EkRTF1.InFile) then begin if RTFDialog.Execute then begin EkRTF1.InFile := RTFDialog.FileName; end else exit; end; (* create report *) EkRTF1.ClearVars; EkRTF1.CreateVar('database_name',dbname); EkRtf1.ExecuteOpen([Customers],SW_SHOW); // Hier end;
Code:
Und die Dokumentation sagt das Gleiche:
\Scan(Customers)\
\Customers.CustomerID\ \Customers.CompanyName\ \Customers.Country\ \EndScan\ Zitat:
![]() |
AW: Mit EkRtf Report aus Ado erstellen
Halo,
oder es fehlt einfach die Zeile EkRTF1.CreateVar('database_name',dbname); Zitat:
|
AW: Mit EkRtf Report aus Ado erstellen
Die Idee klingt super, aber leider kein Hauptgewinn. Ich habe das
Delphi-Quellcode:
durch
\Scan(rechnungen)\
Delphi-Quellcode:
erstezt. Fehlermeldung: Scan Alias not found: ADOQuery1
\Scan(ADOQuery1)\
Ich muss im Template den Tabellennamen übergeben damit RkRtf auch weiß welche Tabelle zu lesen ist wenn mehrere vorhanden sind. |
AW: Mit EkRtf Report aus Ado erstellen
Zitat:
Delphi-Quellcode:
und im Report diese (
EkRtf1.ExecuteOpen(
[ADOQuery1, ADOQuery2, ADOQuery3], // Da, ganz viele SW_SHOW);
Delphi-Quellcode:
) DataSet-Namen verwenden
[ADOQuery1, ADOQuery2, ADOQuery3]
|
AW: Mit EkRtf Report aus Ado erstellen
Bei mir läuft folgender Code:
Delphi-Quellcode:
Die Zeile
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
ExtractFilePath(Application.ExeName) + 'Datenbank1.mdb;' + 'Persist Security Info=False'; ADOQuery1.SQL.Text := 'SELECT * FROM rechnungen'; ADOQuery1.ExecSQL; EkRTF1.InFile := ExtractFilePath(Application.Exename) + 'Rechnung_Vorlage.rtf'; EkRTF1.OutFile := ExtractFilePath(Application.Exename) +'Rechnung_Ausgabe.rtf'; EkRTF1.ExecuteOpen([ADOQuery1], SW_SHOW);
Delphi-Quellcode:
fehlt bei mir nicht, weil ich in meinem Template keinen Marker mit dem Namen "database_name" habe. Im Demo wird hier lediglich die var dbname mit dem Inhalt Nwind.mdb an den den Marker übergeben.
EkRTF1.CreateVar('database_name',dbname);
Ich habe nur 1 Datasheet. Und der Report läuft nicht. Weder mit dem Tabellennamen "rechnungen" und auch nicht mit dem Datensheet-Name "AdoQuery1". |
AW: Mit EkRtf Report aus Ado erstellen
Versuch es doch mal so
Delphi-Quellcode:
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
ExtractFilePath(Application.ExeName) + 'Datenbank1.mdb;' + 'Persist Security Info=False'; ADOQuery1.SQL.Text := 'SELECT * FROM rechnungen'; ADOQuery1.Open(); // statt ExecSQL EkRTF1.InFile := ExtractFilePath(Application.Exename) + 'Rechnung_Vorlage.rtf'; EkRTF1.OutFile := ExtractFilePath(Application.Exename) +'Rechnung_Ausgabe.rtf'; EkRTF1.ExecuteOpen([ADOQuery1], SW_SHOW); |
AW: Mit EkRtf Report aus Ado erstellen
Ich habe jetzt
Delphi-Quellcode:
durch
AdoQuery1.SqlExec;
Delphi-Quellcode:
ersetzt, sowie das Template von rechnungen.anzahl usw auf AdoQuery1.anzahl angepasst...
ADOQuery1.Open();
Nu läufts. Vielen Dank für Deine Mühe :-D PS: Eigendlich auch bisschen logisch, wenn ich so drüber nach denke. Ich wähle die Datenbank ja schon mit SELECT an. 1000 Dank noch mal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 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 by Thomas Breitkreuz