Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Zeilen und Spalten Tauschen





Frage

Hallo, ich habe eine Abfrage mit 20 Datensätzen, dies sind 20 Verschidene Mitarbeiter mit deren Anwesenheits- oder Abwesenheitsdaten. Jeder Datensatz besteht aus 6 Spalten in denne die jeweiligen Werte eingetragen werden. Nun hätte ich für diese Abfrage gerne einen Bericht erstellt indem Das erste Feld des Datensatzes (Mitarbeitername) als Spaltenüberschrift (insgesamt also 20 Spalten) verwendet wird. Und die werte aus der Abdfrage sollen als Datensätze unter diesen Namen jeweils angeordnet werden. Kann mir dabei jemand helfen ? Ich bin schon am verzweifeln

Antwort 1 von struppi

Hallo
Kann es sein das 1-6 die Wochentage sind und die Daten die Arbeitszeit?
Du möchtest jetzt die Gesamtzeit jedes Mitarbeiters ausrechnen?
Man kann im Menü Formularerstellung eine Privot-Tabelle aus den Access Daten in Excel erzeugen.
Hilft das schon?

Gruß struppi

Antwort 2 von Erin

Hy,

ich würde auch das mit der Excel-Tabelle empfehlen.
So hast du noch etwas mehr Freiraum was das formatieren usw. betrifft.

Grüße Erin

Antwort 3 von struppi

Hallo,
Mal ganz abgesehen davon, daß die Strukturierung nicht stimmt wenn man solche "Kopfstände" machen muß, läßt sich das auch in Access rumdrehen.
Was Besseres wie folgender Code fällt mir dazu aber nicht ein.

Function Privot()
Dim db As DAO.DATABASE
Dim rs As DAO.Recordset
Dim SQL, SQL2, SQL3 As String, feld(19, 5) As Variant, z, y As Integer
SQL = "SELECT MName, a1, a2, a3, a4, a5, a6 FROM TabMitAnw;"

Set db = CurrentDb
Set rs = db.OpenRecordset(SQL)
rs.MoveFirst
z = 0
SQL2 = "INSERT INTO TabNeuMitAnw("
Do Until rs.EOF
SQL2 = SQL2 & rs!MName & ", "
feld(z, 0) = rs!a1
feld(z, 1) = rs!a2
feld(z, 2) = rs!a3
feld(z, 3) = rs!a4
feld(z, 4) = rs!a5
feld(z, 5) = rs!a6
rs.MoveNext
z = z + 1
Loop
SQL2 = Left(SQL2, Len(SQL2) - 2) & ") VALUES ("
SQL3 = SQL2
For y = 0 To 5
    For z = 0 To 19
    SQL2 = SQL2 & Nz(feld(z, y), 0) & ","
    Next
   SQL2 = Left(SQL2, Len(SQL2) - 1) & ");"
   db.Execute (SQL2)
   SQL2 = SQL3
Next
End Function

gruß struppi

Antwort 4 von 14071

mal dumm gefragt, erledigt sowas nicht die Kreuztabellenabfrage??

Gruß
Jürgen

Antwort 5 von struppi

Hallo Jürgen,
Die Abfrage habe ich bisher nie gebraucht. Bekomme das damit aber auch nicht hin. Hast Du mal probiert ob es damit geht?
Eigentlich müßten die Felder 1-6 in eine seperate Tabelle und mtw. die 20 Mitarbeiter auch. Jetzt kann ich eine weitere Tabelle erzeugen in die ich beide Daten ziehe und einen Wert dazu schreibe.
So läßt sich eine Abfrage von Seite der 6 mtw Tage machen oder von Seiten der Mitarbeiter.
Das Problem gibt es eigentlich nicht wenn richtg strukturiert wird. Oder?
Gruß struppi


Antwort 6 von 14071

Hallo Struppi,
denke auch, daß das Datenmodell nicht paßt. Wenn die Mitarbeiter und deren Zeiten in je einer relationalen Tabelle liegen, dürfte es mit einer einfachen Abfrage getan sein.

Mit der Kreuztabelle habe ich gelegentlich schon gearbeitet. Funktioniert nach dem gleichen Prinzip der Pivottabellen in Excel.

Gruß
Jürgen

Antwort 7 von Marie

Jo eben, ne Kreuztabelle in Access is doch dasselbe, wieso sollte Jan das jetzt in Excel machen?

Gruß Marie

Antwort 8 von struppi

Huhu snoopymaus,
Mit "Jo" gehts aber bei mir aber auch nicht.
Kannst Du es etwas genauer beschreiben?
Und was sagst Du denn nun zu der Filedialogsache ?
Oder 'redste' nich mit mir? ;-))
gruß struppi