AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi D6 - A2k Report starten
Thema durchsuchen
Ansicht
Themen-Optionen

D6 - A2k Report starten

Ein Thema von detom · begonnen am 18. Mär 2008 · letzter Beitrag vom 21. Mär 2008
Antwort Antwort
detom

Registriert seit: 13. Mär 2008
16 Beiträge
 
#1

D6 - A2k Report starten

  Alt 18. Mär 2008, 07:02
Datenbank: Access • Version: 2k • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#2

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 09:21
Regel Nummer 1: Vermeide bei Fehlern auf jeden Fall, eine Fehlermeldung anzugeben, wir lieben die Herausforderung.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 09:26
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.
  Mit Zitat antworten Zitat
detom

Registriert seit: 13. Mär 2008
16 Beiträge
 
#4

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 10:40
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
  Mit Zitat antworten Zitat
detom

Registriert seit: 13. Mär 2008
16 Beiträge
 
#5

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 10:47
Hallo,

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
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 10:49
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?
  Mit Zitat antworten Zitat
detom

Registriert seit: 13. Mär 2008
16 Beiträge
 
#7

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 11:09
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

Tom
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: D6 - A2k Report starten

  Alt 18. Mär 2008, 13:02
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
Heiko
  Mit Zitat antworten Zitat
detom

Registriert seit: 13. Mär 2008
16 Beiträge
 
#9

Re: D6 - A2k Report starten

  Alt 21. Mär 2008, 11:26
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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