PDA

Vollständige Version anzeigen : Mehrere Jahre im Bericht auswerten


Wolfman
06.10.2002, 14:38
Hallo zusammen!!

Ich würde gerne Datensätze in mehreren Spalten sortiert in einem Bericht gegenüberstellen. Als Kriterium soll die Jahreszahl dienen, die von einem Formular (Kombinationsfeld) stammt.

Ich habe auch schon eine Abfrage erstellt die mir diese Daten zur Verfügung stellt, jedoch können dies durchaus bis zu 10 Datensätze sein.

Wie kann ich aber mehrere Datensätze am Bericht darstellen??? Wäre schön wenn ihr mir helfen könntet!!!

Thx
Wolfman

Franz Rueh
06.10.2002, 15:51
Dafür brauchst du einen mehrspaltigen Bericht, der zuerst Spalte nach unten und dann zur nächsten geht. Das stellte du in der Seiteneinrichtung ein.
Oder du erstellst überhaupt eine Kreuztabellenabfrage, deren Ergebnisse du dann in einem Bericht darstellst.


Franz

Wolfman
06.10.2002, 18:25
Hallo Franz!!!

Danke für Deine Antwort!!! Aber wie kann ich die Werte in den Spalten einschränken?? zB: Spalte 1 = Jahr 2000, Spalte 2 = Jahr 2002 usw...denn wenn ich mehr als 4 Datensätze habe, würde der Bericht ja einfach die nächsten vier Spalten der nächsten Seite befüllen, oder???

Gibt es vielleicht irgendwo ein konkretes Beispiel zum downloaden???

Danke vielmals für eure Mühe!!!

Thx
Wolfman

Franz Rueh
06.10.2002, 21:20
Ja, das mit der Füllung der Spalten ist mit Seiten- bzw. Spaltenwechsel schon hinzubekommen, doch wenn die Zahl der Spalten stark differiert, wird es ein wenig komplizieter. Doch ansonsten nach dem Jahr gruppieren usw.
Eleganter ist sicher die Lösung mittels Kreuztabellen. Ein Beispiel dafür findet sich auf <a href="http://www.kraasch.de" target="_blank">www.kraasch.de</a> im Datenbank-Downloadbereich unter "Variable Kreuztabelle im Unterformumlar". Es handelt sich zwar um eine Formulardarstellung und keinen Bericht, aber das Ganze anzuschauen könnte lehrreich sein.


Franz

Wolfman
07.10.2002, 08:47
Hallo Franz!!

Ich glaube das dieses Problem mit einer Abfrage in den Griff zu bekommen sein sollte. Ich muss nämlich auch Berechnungen mit den gegenübergestellten Datensätzen durchführen!!

Also wenn irgendjemand noch eine Idee hätte????

Thx
Wolfman

jumpshot1974
07.10.2002, 17:15
hallo, für die einzelnen jahre abfragen erstellen, diese über daten/externe daten/neue abfrage erstellen und in excel nebeneineander anzeigen lassen.
grüße andi

Robert Briggen
07.10.2002, 17:30
Hi Wolfmann

Schau doch mal hier nach: kreuztabelle allgemeine frage (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=75185)

Gruss
Robert

Wolfman
07.10.2002, 17:32
Hallo Andi!!!

Hmmm.......eine andere Lösung gibt es nicht?? Ich wäre für jede Hilfestellung sehr dankbar, da mir als Standart - Access - Kenner noch keine Lösung eingefallen ist.

Nach ausprobieren unzähliger Abfragen und SQL-Anweisungen bin ich am Ende meiner Weisheit!!!

Vielleicht gibt es ja noch jemanden der sich meiner erbarmt??? ;)

Thx
Wolfman

Nouba
07.10.2002, 23:04
Hallo,

nenne uns doch mal bitte die Kern/Problemfelder der Abfrage/Tabelle und beschreibe wie die Darstellung im Bericht erscheinen soll. Wenn sich darin Spalten wiederholen sollen, ist IMO eine Kreuztabelle angesagt. Ein kleines Problemchen könnte bei sich ändernden Abfragen ergeben, weil die Spalten dann andere Namen erhalten. Du kannst Dir aber für diesen Fall, eine dynamische Abfrage erstellen, in der Du die Felder fortlaufend durchnummerierst. Ich verwende dafür Kode dieser Art:<font face="Courier New, Courier, monospace">Sub CreatePlan()
'es wird Bezug auf globales String-Array gstrXLabel genommen
'On Error GoTo Err_CreatePlan ' wenn's rund läuft, umkommentieren
On Error GoTo 0

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim fld As DAO.Field
Dim indexx As Integer
Dim Feldliste As String
Dim strSQL As String
Dim i As Integer

Set db = CurrentDb
Set qdf = db.QueryDefs("qxtbPlan")
qdf.Parameters(0) = Me!Gruppe ' muß *weich* kodiert werden
'qdf.Parameters(1) = Me!txtJahr
'qdf.Parameters(2) = Me!txtKW
Set rs = qdf.OpenRecordset()
indexx = 0
For Each fld In rs.Fields
' MsgBox fld.Name
If fld.Type &gt;= 1 And fld.Type &lt;= 8 Or fld.Type = 10 Then
'Debug.Print fld.Name
Feldliste = Feldliste &amp; _
"[" &amp; fld.Name &amp; "] as Field" &amp; indexx &amp; ","
gstrXLabel(indexx) = fld.Name
End If
' MsgBox Label(indexx)
indexx = indexx + 1
Next fld
For i = indexx To UBound(gstrXLabel)
Feldliste = Feldliste &amp; "Null as Field" &amp; i &amp; ","
Next i
Feldliste = Left(Feldliste, Len(Feldliste) - 1)
MsgBox Feldliste
strSQL = "Select " &amp; _
Feldliste &amp; _
" From qxtbPlan WHERE (((qxtbPlan.FkPersonalId) Is Not Null));"

CurrentDb.QueryDefs.Delete "qselXFinalPlan"
Set qdf = CurrentDb.CreateQueryDef("qselXFinalPlan", strSQL)

Exit_CreatePlan:
Set qdf = Nothing
If Not rs Is Nothing Then rs.Close
Set rs = Nothing
Set db = Nothing
Exit Sub

Err_CreatePlan:
If Err.Number = 3265 Then '*** Fehlerwert für fehlende Abfrage
Resume Next '*** Fehlerzeile überspringen
Else
MsgBox "Fehler " &amp; Err.Number &amp; _
" (" &amp; Err.Description &amp; _
") in Prozedur CreateSchichtQuery des VBA Dokuments Form_frmSchicht"
Resume Exit_CreatePlan
End If
End Sub</font>