Hallo,
Hallo!
ich erstelle für eine Firma eine Personaldatenbank. Die
Stammdaten sind schon alle vorhanden in der Tabelle, nun
sollen aber noch Gehaltsdaten monatlich in einer Tabelle
gespeichert werden.
Ich denke es handelt sich um die Sicherung von alten Gehaltszahlungen, die ohne Zwischenspeicherung in einer Tabelle nicht mehr vorhanden wären. Ansonsten den Ratschlag von Schalker1967 zu Herzen nehmen.
Wie kann ich monatlich eine neue Tabelleerstellen lassen, in der Perosnalnummer, Name und Vorname des
Mitarbeiters aus der Personaltabelle verwendet werden und neue
Spalten (Gehalt, Zulagen etc.) hinzugefügt werden?
Die Lösung ist eine Tabellenerstellungsabfrage.
Dass man nicht jeden Monat in der Entwurfsansicht den Namen der Zieltabelle ändern muss, macht es sich besser die Abfrage per VBA zu erzeugen und hier den Namen der Gehaltstabelle im Code zu erzeugen.
Für den Fall, dass die Gehälter noch nirgends in der Datenbank erfasst wurden, müssen in der Abfrage die erforderlichen Leerfelder (z.B. Gehalt und Zulage) hinzugefügt und mit einem Leerwert belegt werden.
Das „Round(Null,2)“ im u.g. Code stellt z.B. sicher dass die Tabellenfelder mit einem Zahlenformat mit 2 Nachkommastellen belegt werden. Textfelder könnte man erzeugen, indem man den Feldwert mit einer leeren Zeichenfolge belegt ( „“ ).
Eine Lösung könnte so aussehen:
Sub MonatlicheGehaltsliste()
Dim TabName As String
Dim SQLStr As String
TabName = „Gehälter_“ & Month(Now()) & „_“ & Year(Now())
'nächster Befehl kann weggelassen werden, wenn keine manuelle Änderung erforderlich
TabName = InputBox(„Name der Gehaltsliste eingeben:“, „Gehaltsliste“, TabName)
SQLStr = "SELECT Personalnummer, Name, Vorname, Round(Null,2) AS Gehalt, "
SQLStr = SQLStr & „Round(Null,2) AS Zulage INTO " & TabName & " FROM Personaldaten“
On Error GoTo Fehler
DoCmd.RunSQL SQLStr
On Error GoTo 0
MsgBox „monatliche Gehaltsliste wurde erzeugt!“
Exit Sub
Fehler:
MsgBox „Fehler beim Erstellen der Gehaltsliste!“
End Sub
Kommt es ganz genau auf die Feldformatierung bzw. Feldtypen der neuen Felder an, so kann man alternativ zunächst mit dem SQL-Befehl „CREATETABLE“ (Strukur sh. Access-Hilfe oder googlen) eine Tabelle nach seinen Wünschen erzeugen und dann mit einer Aktualisierungsabfrage („INSERT INTO“) diese mit den schon vorhandenen Werten füllen.
Falls die Gehälter schon in einer Tabelle der Datenbank vorhanden sind, muss die Abfrage entsprechend angepasst werden. Wichtig ist aber immer der Ausdruck „SELECT … INTO…“, um aus den Abfragewerten eine neue Tabelle zu erzeugen.
Gruß, tester.