PDA

Vollständige Version anzeigen : Bericht und SQL-Abfrage


Carsten
04.01.2002, 20:31
Hallo Accessgemeinde...
ich möchte in A97 eine Tabelle über eine recht komplizierte Berechnung als Bericht ausgeben. (natürlich nur einige Datensätze davon)
Bisher habe ich einige Berechnungen in einer Abfrage bzw. mehreren geschachtelten Abfragen realisiert.
Da nun die Performance dramatisch schlechter wird möchte ich das Ganze mit VBA und SQL-Abfragen machen.
Diese wollte ich in einem Formular oder in einem Bericht direkt unterbringen.
Wie bekomme ich aber nun die ermittelten Werte in den Bericht? Ich hab ja so keine Datenherkunft ?

Bin für jeden Tipp dankbar...

Goki
04.01.2002, 21:36
Hallo Carsten,

du kannst einem Bericht auch Direkt eine SQL-Anweisung als Datenherkunft angeben.

Setzt das Ereignis "Beim Öffnen" beim Bericht und erstelle in VBA deine Abfragen als SQL-Strings und laß VBA dann die Daten berechnen und ausführen.

Im Bericht erstellst du dann Textfelder, bitte KEINE Bezeichnungsfelder, in welchen du als Datenherkunft den Namen der errechneten Spalte, deines SQL-Strings angbist.

Das funktioniert auch. <img src="graemlins/grins.gif" border="0" alt="[grins]" />

slg
Goki :D :D :D

Carsten
04.01.2002, 23:00
Dank Dir Goki,
kann ich so denn auch mehrere Datensätze untereinander ausgeben?
Die SQL-Abfrage würde nämlich mehrere Ergebnisse nacheinander erzeugen, die anschliessend als Endergebnis noch zusammenaddiert werden müssen.

Carsten
04.01.2002, 23:12
Sooo
habs grade mal versucht
Also wenn ich den den Wert einer Variablen X zuweise und in das Textfeld als Steuerelemeninhalt X eintrage, Fehler.
Gebe ich dem Textfeld den Namen der Spalte (Mitarbeiter) auch nix.
Recordset("Mitarbeiter")tuts auch nicht.
Von VBA aus gehts auch nicht (Me.Textfeld.Text = X)

Goki
04.01.2002, 23:16
AAaaaaaaaaaaaaaaaahhhhhhhhhhh :-)

Hi Carsten,

sorry ... da hab ich was verwechselt ... du mußt die Felder als Bezeichnungsfelder anlegen und dann mittels ...

[Name des Feldes].Caption = ...

Die Werte eintragen lassen ... Mit den Textfeldern geht das nicht ... hab das verdreht :-))

Das ist das eine und das andere ... du kannst ja mehrere Berichte ineinander verschachteln und mittels Globalen Variablen nachher ein Endergebnis addieren lassen ... wie wäre das?!

slg
Goki <img src="graemlins/grins.gif" border="0" alt="[grins]" />

Carsten
04.01.2002, 23:45
Jo, das war einfach.
Ich bekomme bei meiner Abfrage jetzt aber mehrere Werte. Er füllt aber immer nur den letzten wert aus.
Kann ich das dynamisch machen, wie es auch bei einer Richtigen Abfrage als Datenherkunft wäre?

Goki
05.01.2002, 00:14
Hi Carsten,

also bei verschachtelten Dingern hab ich immer pro Ergebnis eine globale Variable erstellt und den Wert doch einspeichern lassen.

Dann laß ich am Schluß die ganzen Global-Variablen einzeln addieren ... so haste eignetlich dann die unterschiedlichen Ergebnisse und Werte :D

slg
Goki

Carsten
05.01.2002, 00:27
Ja, wenn ich vorher wüsste, wieviele Variablen es werden.
Folgende Problemstellung:
Rechnungsstellung mit folgenden Punkten:
1-n Mitarbeiter, 1-5 Arbeitstage, Überstundenzuschlag ab einer gewissen Gesamtstundenzahl, abhängig von den Arbeitstagen.
Alle Werte sind völlig variabel.
Ich benötige nachher eine Zeile pro Mitarbeiter für gesamtstunden zum Normal-Stundensatz und eine Zeile pro Mitarbeiter zum Überstundensatz.
Da kann ich natürlich keinen Bericht mit zwei Zeilen verwenden, wenn noch ein Mitarbeiter dazu kommt. Deshalb muss sich die anzahl der Zeilen nach den Datensätzen bzw. errechneten Ergebnissen richten.
Hab in Visual Basic 6 was gefunden mit create object. Kommt mir nur etwas kompliziert vor. Geht das nicht einfacher ?!?!?

Goki
05.01.2002, 00:33
Hi Carsten :-))

DAS erinnert mich stark an eine Stundenlohnprogrammierung von Said Balou ... aus dem Buch Access 2000 Programmierung in 21 Tagen von Markt udn Technik ... ein Gutes Buch ...

Da hat er das anhand von Arrays gelöst, die sich von alleine dynamisch erweitert hatte, wenn es nötig war ... der ganze Code geht über zwei seiten ... (bis das hier abgetippt ist ...) *g

Ohje ... werd mal morgen nach dem Code schauen und nach dem Buch ... (wo hab ich das *g)

slg
Goki <img src="confused.gif" border="0">

Carsten
05.01.2002, 08:49
Danke für den Tipp. Goki

Hab das Buch, muss nur mal wieder reinschauen.

Gruss Carsten

Goki
05.01.2002, 11:21
Hallo Carsten,

<img src="graemlins/top.gif" border="0" alt="[Finger hoch]" /> <img src="graemlins/top.gif" border="0" alt="[Finger hoch]" /> <img src="graemlins/top.gif" border="0" alt="[Finger hoch]" /> Supiiiiiiiiiiii :D

Ich hätt´ das auch hier abgetippt ... wär aber eine megalange Tipp-Arbeit gewesen.

Du findest es im hinteren Kapitel Tag 21 <img src="graemlins/grins.gif" border="0" alt="[grins]" />

slg
Goki <img src="graemlins/biggrinlove.gif" border="0" alt="[biggrinlove]" />