![]() |
Datenbank: Access • Version: 2k • Zugriff über: ADO
D6 - A2k Report starten
Hallo,
habe folgenden Code gefunden. Ich weiß nur nicht wo ich noch Veweise setzen muß, damit Delphi was mit Access anzufangen weiß. In Uses habe ich "Access2000" und "OleServer" drin stehen.
Delphi-Quellcode:
var
Access: Variant; begin {open the Access application} try Access := GetActiveOleObject('Access.Application'); except Access := CreateOleObject('Access.Application'); end; Access.Visible := True; { open the database The second parameter specifies whether you want to open the database in Exclusive mode} Access.OpenCurrentDatabase('C:\My Documents\Books.mdb', True); { open the report The value for the second parameter should be one of acViewDesign, acViewNormal, or acViewPreview. acViewNormal, which is the default, prints the report immediately. If you are not using the type library, you can define these values like this: const acViewNormal = $00000000; acViewDesign = $00000001; acViewPreview = $00000002; The third parameter is for the name of a query in the current database. The fourth parameter is for a SQL WHERE clause - the string must be valid SQL, minus the WHERE.} Access.DoCmd.OpenReport('Titles by Author', acViewPreview, EmptyParam, EmptyParam); {close the database} Access.CloseCurrentDatabase; {close the Access application} {const acQuitPrompt = $00000000; acQuitSaveAll = $00000001; acQuitSaveNone = $00000002;} Access.Quit(acQuitSaveAll); end; Danke an den Autor der Codezeilen - aber ich weiß nicht wer es geschrieben hat. Kann mir jemand helfen es zum Laufen zu bringen? tom |
Re: D6 - A2k Report starten
Regel Nummer 1: Vermeide bei Fehlern auf jeden Fall, eine Fehlermeldung anzugeben, wir lieben die Herausforderung.
|
Re: D6 - A2k Report starten
|
Re: D6 - A2k Report starten
Zitat:
Die Frage ob Access installiert ist habe ich schon mit ja beantwortet. Aber auf meine Fragen habe ich noch keine Antworten bekommen. Ist ja auch nicht schlimm, aber nur auf andere Foren zu verweisen wo ebenfalls noch keiner geantwortet hat, hilft mir auch nicht weiter. Ich konnte ja nicht wissen, dass in den drei Foren, in denen ich es versucht hatte, überall die gleichen Spezialisten helfen oder auch nicht helfen. Ihr seid ziemlich elitär in euren Ansichten der Forenregeln. In anderen Bereichen VBA/VB wird auch auf bestimmte Regeln geachtet und Anfänger darauf hingewiesen. Dann ist aber gut damit und man gibt dem Ratsuchenden einen wirklichen Rat oder Hinweis. Wenn ich kann helfe ich auch jemandem weiter und verkneife mir ihn zu belehren. Das scheint bei DelphiTreff und in einigen anderen Delphi Foren aber bei manchen das Ziel zu sein (ICH BETONE BEI MANCHEN). Tut mir leid, aber ich bin einigermaßen angefressen von solch Superschlaumeierei. Gestern hatte ich zwei hilfsbereitere und tollerantere Zeitgenossen zum Austauschen von Erkenntnissen hier in diesem Forum gefunden. Also ich gebe die hoffnung nicht auf und bedanke mich im Voraus bei allen gutmeinenden Zeitgenossen. Tom |
Re: D6 - A2k Report starten
Hallo,
Zitat:
Bei Access := GetActiveOleObject('Access.Application'); bekomme ich die Meldung:OleSysError Vorgang nicht verfügbar Tom |
Re: D6 - A2k Report starten
O.k.
Dann mal weiter. Irgendwo in einem anderen Forum hast Du geschrieben das Du einen Fehler bekommst. Wenn ich Deine Aussage richtig verstanden habe:
Delphi-Quellcode:
Falls ja step einfach weiter und das Objekt wird erstellt.
try
Access := GetActiveOleObject('Access.Application');// kommt hier der Fehler? except Access := CreateOleObject('Access.Application'); end; Oder wo genau liegt Dein Problem? |
Re: D6 - A2k Report starten
Zitat:
Ich habe jetzt eine andere Variante gefunden und habe jetzt dieses:
Delphi-Quellcode:
Das funktioniert auch wunderbar, der Report wird gedruckt und fein.
procedure TForm1.Button1Click(Sender: TObject);
var begin Access1.OpenCurrentDatabase('C:\wt2_Rep.mdb', false); Access1.Visible:=true; Access1.DoCmd.OpenReport('rep_Empl_Year', acViewNormal, EmptyParam, EmptyParam); Access1.CloseCurrentDatabase; Access1.Quit(acQuitSaveAll); end; Allerdings habe ich ein Problem - der Report basiert auf einer Kreuztabellenabfrage. Diese ist in der Access DB gespeichert. Das heißt, dem Report kann ich keine Filterktierien übergeben sondern ich muß der der KreuzQry zugrundeliegenden Qry einen Parameter übergeben. In Access mache ich das über Dim qdf as DAO.QueryDef Dim sql_str_tbl as String sql_str_tbl="SELECT ... FROM ..." qdf = CurrentDb.QueryDefs("qyr_EmplByDate") qdf.SQL = sql_str_tbl Set qdf = Nothing Keine Ahnung wie diese Qry von Delphi aus neu formulieren kann :gruebel: Tom |
Re: D6 - A2k Report starten
Hallo,
OpenReport Access in google eingetippt. ![]() Die 1. Antwort. Du musst also deinen Parameter über das Formular selber setzen, z.B. im FormShow. Und das nächste mal einfach dazu schreiben "ich habe auch schon in folgenden Foren gepostet" Heiko |
Re: D6 - A2k Report starten
Zitat:
Der Report beinhaltet 12 Unterreports (für jedenMonat einen) Jeder Unterreport hat als Filter die Frage nach dem entsprechendem Monat (WHERE DatMonth = "Jan" als Bsp.) und als Datenbasis diese KreuzQry. Die KreuzQry hat als Basis eine Qry welche nach Mitarbeitern filtert. Die MitarbeiterQry wird formuliert entsprechend einer Gruppenauswahl. (WHERE Group = 'A4' als Bsp.) Welchem Report soll ich nun welchen Filter übergeben? Tom |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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