Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi D6 - A2k Report starten (https://www.delphipraxis.net/110442-d6-a2k-report-starten.html)

detom 18. Mär 2008 07:02

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

OldGrumpy 18. Mär 2008 09:21

Re: D6 - A2k Report starten
 
Regel Nummer 1: Vermeide bei Fehlern auf jeden Fall, eine Fehlermeldung anzugeben, wir lieben die Herausforderung.

taveuni 18. Mär 2008 09:26

Re: D6 - A2k Report starten
 
Warum erwähnst Du nicht dass Du schon hier und hier diesselbe Frage gestellt hast?

Es ist sehr ermüdend Fragen zu stellen / Antworten zu geben die Andere schon gemacht haben.
BTW: Du hast die Frage immer noch nicht beantwortet ob Du Access installiert hast.

detom 18. Mär 2008 10:40

Re: D6 - A2k Report starten
 
Zitat:

Zitat von taveuni
Warum erwähnst Du nicht dass Du schon hier und hier diesselbe Frage gestellt hast?

Es ist sehr ermüdend Fragen zu stellen / Antworten zu geben die Andere schon gemacht haben.
BTW: Du hast die Frage immer noch nicht beantwortet ob Du Access installiert hast.

Entschuldigung für die Unannehmlichkeiten.
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

detom 18. Mär 2008 10:47

Re: D6 - A2k Report starten
 
Hallo,

Zitat:

Zitat von OldGrumpy
Regel Nummer 1: Vermeide bei Fehlern auf jeden Fall, eine Fehlermeldung anzugeben, wir lieben die Herausforderung.

danke für deine Nachfrage - du hast natürlich recht :-)

Bei

Access := GetActiveOleObject('Access.Application');

bekomme ich die Meldung:OleSysError Vorgang nicht verfügbar

Tom

taveuni 18. Mär 2008 10:49

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:
try
  Access := GetActiveOleObject('Access.Application');// kommt hier der Fehler?
except
  Access := CreateOleObject('Access.Application');
end;
Falls ja step einfach weiter und das Objekt wird erstellt.
Oder wo genau liegt Dein Problem?

detom 18. Mär 2008 11:09

Re: D6 - A2k Report starten
 
Zitat:

Zitat von taveuni
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:
try
  Access := GetActiveOleObject('Access.Application');// kommt hier der Fehler?
except
  Access := CreateOleObject('Access.Application');
end;
Falls ja step einfach weiter und das Objekt wird erstellt.
Oder wo genau liegt Dein Problem?

Den Fehler habe ich nicht wegbekommen - ich stell mich mit Delphi wirklich ungeschickt an.
Ich habe jetzt eine andere Variante gefunden und habe jetzt dieses:
Delphi-Quellcode:
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;
Das funktioniert auch wunderbar, der Report wird gedruckt und fein.
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

hoika 18. Mär 2008 13:02

Re: D6 - A2k Report starten
 
Hallo,

OpenReport Access in google eingetippt.

http://www.wer-weiss-was.de/theme9/article1550562.html

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

detom 21. Mär 2008 11:26

Re: D6 - A2k Report starten
 
Zitat:

Zitat von hoika
Hallo,

OpenReport Access in google eingetippt.

http://www.wer-weiss-was.de/theme9/article1550562.html

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

Das Bsp. mit OpenReport habe ich ja mir schon realisiert. Die Frage war, wie mache ich das wenn dieser Report als Datenbasis eine Kreuztabellenabfrage hat.
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 19:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz