Zum Inhalt springen

VBA in Access - Datum ändern


Maulwurf_der_Schlaue

Empfohlene Beiträge

Hallo und Guten Tach,

ich hab jetzt ein Problem und das ist so:

in einer Access Datenbank ist eine Tabelle die mit Daten gefüllt ist. Davon sind einige mit dem Datumsformat die die Werte xx.xx.2099 enthalten (xx = egal was da ist). So die Aufgabe ist nun per Update die Datumswerte die xx.xx.2099 auf xx.xx.2049 zu setzten:

Folgendes hab ich schon gemacht:



Sub RunSQL(sql As String)

    Application.CurrentProject.Connection.Execute "BEGIN TRANSACTION"

    Application.CurrentProject.Connection.Execute sql

    Application.CurrentProject.Connection.Execute "COMMIT"

End Sub


Sub Date_Year_Corr_Module()


    Dim sql As String


    ' Lastenheft Start/Plan/Ist korrigieren

    sql = "UPDATE Grunddaten SET Grunddaten.[Lastenheft Start] = #12/31/2049# "

    sql = sql + "WHERE (((Grunddaten.[Lastenheft Start]) Like #12/31/2099#))"

    RunSQL (sql)

    sql = "UPDATE Grunddaten SET Grunddaten.[Lastenheft Plan] = #12/31/2049# "

    sql = sql + "WHERE (((Grunddaten.[Lastenheft Plan]) Like #12/31/2099#))"

    RunSQL (sql)

    sql = "UPDATE Grunddaten SET Grunddaten.[Lastenheft Ist] = #12/31/2049# "

    sql = sql + "WHERE (((Grunddaten.[Lastenheft Ist]) Like #12/31/2099#))"

    RunSQL (sql)


End Sub

Problem dabei ist das ich jetzt nur die Daten 31.12.2099 durch 31.12.2049 ersetzt bekomme. Wie schaffe ich es das ich alle Jahreszahlen 2099 durch 2049 zu ersetzten, ohne die Tage und Monate zu beeinflussen. Die Funktion to_date kennt er nicht... oder ich hab was falsch gemacht....

Danke.

|Edit:|

Ich hab XP Pro und verwende MS Access 2003

|:Edit|

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich werd jetzt mal folgendes Versuchen:

Ich bau mir erst einen Dynamischen SQL-Update zusammen...


Sub all_date(setvalue As String)


Dim day As Integer

Dim month As Integer

Dim sql As String


day = 1

month = 1


For month = 1 To 12

    For day = 1 To 31

      sql = "UPDATE Grunddaten set " & setvalue & " = #" & month & "/" & day & "/2049# " _

           & "WHERE " & setvalue & " LIKE #" & month & "/" & day & "/2099# "

      RunSQL (sql)

    Next day

Next month


End Sub

dann hoff ich das es funktioniert...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

habs jetzt doch selber geschafft.

Hier die Lösung für alle die die eine ähnliches Problem haben:



'Sendet den SQL Befehl an Access'
Sub RunSQL(sql As String)

Application.CurrentProject.Connection.Execute "BEGIN TRANSACTION"
Application.CurrentProject.Connection.Execute sql
Application.CurrentProject.Connection.Execute "COMMIT"

End Sub

'Geht jedes Datum vom 01.01.2099 bis 31.12.2099 durch'
'und setzt die Jahreszahl auf 2049. Datumsüberprüfung wird'
'auch durchgeführt, auf Schaltjahr musste ich nicht prüfen da'
'das Jahr 2099 und 2049 kein Schaltjahr sein'
Sub all_date(setvalue As String)

Dim day As Integer
Dim maxdays As Integer
Dim month As Integer
Dim sql As String

day = 1
month = 1

For month = 1 To 12

If (month = 2) Then
maxdays = 28
ElseIf ((month = 4) Or (month = 6) Or (month = 7) Or (month = 9) Or (month = 11)) Then
maxdays = 30
Else
maxdays = 31
End If

For day = 1 To maxdays
sql = "UPDATE Grunddaten set " & setvalue & " = #"

If (month < 10) Then
sql = sql + "0"
End If

sql = sql + "" & month & "/"

If (day < 10) Then
sql = sql + "0"
End If

sql = sql + "" & day & "/2049# WHERE " & setvalue & " LIKE #"

If (month < 10) Then
sql = sql + "0"
End If

sql = sql + "" & month & "/"

If (day < 10) Then
sql = sql + "0"
End If

sql = sql + "" & day & "/2099# "

RunSQL (sql)
Next day
Next month

End Sub

'Starte das ganze '
Sub Date_Year_Corr_Module()

Dim sql As String
Dim antwort As Integer

' Lastenheft Start/Plan/Ist korrigieren

all_date ("Grunddaten.[Lastenheft Start]")
all_date ("Grunddaten.[Lastenheft Plan]")
all_date ("Grunddaten.[Lastenheft Ist]")

antwort = MsgBox("Datum wurde korregiert!", vbOKOnly, "O.k.", 0, 0)

End Sub
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...