online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon weisnichtweiter vom 25.04.2019, 17:49 Options

Tabellen jeden Monat neu speichern

Hilfe, wer kann mir weiter helfen???

Ich möchte Daten aus einem Formular alle 28 Tage so speichern das diese Werte für ein Jahr erhalten bleiben, ich aber in diesem Formular neue Werte eingeben kann. Immer wenn ein neuer Monat archiviert wird, soll der entsprechende des Vorjahres gelöscht werden.


Antwort schreiben

Antwort 1 von Teddy7 vom 26.04.2019, 09:09 Options

Reden wir hier über Access ? Wozu hat man eine Datenbank, wenn man dauernd Daten rauslöscht ?
Man baut in die Erfassung ein Datum mit ein und macht dann als Datenquelle für Formular und Bericht eine (oder mehrere) Abfragen, die man entsprechend einschränken kann.
Gruß
Teddy

Antwort 2 von Springmaus vom 26.04.2019, 10:41 Options

Also mal zuallererst, in einem Formular sind keine Daten. Die Daten sind in einer Tabelle und werden durch das Formular nur angezeigt.

Wenn Du denn noch verraten würdest mit welchem Programm Du arbeitest, dann könnte Dir geholfen werden.

Sollte es Access sein, dann machst Du monatlich eine Tabellenerstellungsabfrage, orientiert am Datum, und überschreibst den entsprechenden des Vorjahres.

Also zum Beispiel könnte ich mir vorstellen, dass Du beim Start des Programmes prüfst, ob der aktuelle Monat schon abgespeichert ist, wenn nicht tut es das automatisch. Du prüfst Monat (sei Tabelle tbl5 die für Monat Mai). In der Tabelle hast Du ein Feld Jahr, ist das dort abgespeicherte Jahr das aktuelle Jahr, dann tue gar nichts, ist das dort abgespeicherte Jahr nicht das aktuelle, dann alte Daten löschen mit Löschabfrage, neue Daten abspeichern mit Anfügeabfrage.

If DCount("[Jahr]", "tbl" & intMonth, "[Jahr] = " & Year(Now)) = 0

Falls die Tabellen im ersten Jahr überhaupt noch nicht existieren solltest Du vielleicht so beginnen:
Public Function tblvorhanden() As Boolean
Dim Dbs As DAO.Database
Dim rst As DAO.Recordset
Dim SQL As String
Dim intMonth As Integer

tblvorhanden = False
intMonth = Month(Now)
On Error Resume Next

Set Dbs = CurrentDb()
SQL = "SELECT tbl" & intMonth & ".Jahr FROM tbl" & intMonth
Set rst = Dbs.OpenRecordset(SQL)

If err.Number <> 0 Then
' Sobald er hier reinläuft, existiert die Tabelle nicht
err.Clear
'Tabellenerstellungsabfrage
Else
tblvorhanden = True
End If

If Not (rst Is Nothing) Then
Set rst = Nothing
End If
If Not (Dbs Is Nothing) Then
Dbs.Close
Set Dbs = Nothing
End If

End Function

Public Function test()
Dim intMonth As Integer

intMonth = Month(Now)

If tblvorhanden Then
If DCount("[Jahr]", "tbl" & intMonth, "[Jahr] = " & Year(Now)) = 0 Then
'alte Datensätze löschen, neue anfügen
Else
msgbox "die neuen Datensätze existieren bereits"
End If

Else
msgbox "Tabelle für diesen Monat erst anlegen, da noch nicht vorhanden"
End If

End Function


Gruß Marie

Antwort 3 von Springmaus vom 26.04.2019, 10:55 Options

äh, aber natürlich hat Teddy recht, sinnvoller wäre natürlich keine Daten zu löschen, sondern die Daten mit Datum an eine Tabelle anzuhängen und das Formular mit der entsprechenden Abfrage zu füllen.

@Teddy: Es gibt aber auch Daten, die man nicht gespeichert lassen darf, oder aber, die durch andere Vorgänge woanders verarbeitet wurden am Ende des Monats und deshalb hinfällig sind

Gruß Marie

Ähnliche Themen

Makro für alle Tabellenblätter verfügbar machen
dieter1958  12.01.2008 - 107 Hits - 7 Antworten

Datum atomatisch
eier  24.03.2008 - 97 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026