Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

falsches Datumformat bei Übertrag nach ACCESS

Forumthread: falsches Datumformat bei Übertrag nach ACCESS

falsches Datumformat bei Übertrag nach ACCESS
06.12.2024 14:43:30
Marc
Hallo irgendwie komme ich nicht weiter,

Ich habe eine Einsatzplanung mit VBA gemacht, dabei können Einsätze verändert, angepasst etc. werden..

Nun habe ich in einem SUB eine Routine drin, in der geprüft wird, ob der aktuelle angegebene Einsatz mit einem schon hinterlegten sich überschneidet.
Dabei wird dann je nach Überschneidung ein Update eines vorhandenen Einsatzes vorgenommen (das Datum für den Start wird angepasst) und dann bei Bedarf ein neuer Einsatz hinterlegt.

Nun habe ich das Problem, das bei der Update Angabe das falsche Datumsformat übertragen wird :



TmpStartDatum = Format(DBrecord("StartDatum"), "DD.MM.YYYY")
TmpStartDatum = DateAdd("d", 1, TmpStartDatum)

With New ADODB.Command
Set .ActiveConnection = DBcon
.CommandText = "UPDATE tbl_X_Pool_Einsatz SET StartDatum = ? WHERE ID = ?"
.CommandType = adCmdText
.Execute , Array(TmpStartDatum, IDTag)
End With


Hierbei wir statt dem deutschen Format (DD.MM.YYYY) das amerikanische Übertragen ..

Ich hatte dann die Überlegung das ich einfach dann Format(TmpStartDatum,"DD.MM.YYYY") rein Schreibe in die Update Anweisung..

Hier passiert aber was ganz komisches... Statt in der Datenbank/Access das StartDatum wird die daneben liegende EndDatum - Spalte verändert (aber auch ebenfalls im falschen Format)

Und das Obwohl die Spalte in der Update Anweisung gar nicht enthalten ist..

In der gleichen Routine ist auch eine Insert Anweisung drin, die einwandfrei funktioniert..


Wo ist mein Fehler...?

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
06.12.2024 15:56:41
Yal
Hallo Marc,

war lange nicht mehr in Access unterwegs.

Einfach in the blue:
TmpStartDatum = Format(DBrecord("StartDatum"), "DD.MM.YYYY")

TmpStartDatum = DateAdd("d", 1, TmpStartDatum)

With New ADODB.Command
Set .ActiveConnection = DBcon
.CommandText = "UPDATE tbl_X_Pool_Einsatz SET StartDatum = ? WHERE ID = ?"
.CommandType = adCmdText
.Execute , Array(Application.Text(TmpStartDatum, "MM/DD/YYYY"), IDTag)
End With
Application.Text ist der Bezug zu der Excel-Formel. Scheint nicht so zickig wie Format zu sein.

VG
Yal
Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
06.12.2024 17:48:41
Marc
Hallo Yal,

danke für den Tipp.
Leider führt es zum gleichen Ergebnis..
Ich weiß nicht wo er das falsche Format überträgt..

und warum er wenn man im Array Format oder Application nutzt, er die nächste Spalte anspricht und das Format nicht umsetzt..

AW: falsches Datumformat bei Übertrag nach ACCESS
06.12.2024 22:05:30
Yal
Noch ein Gedicht:

D = DateAdd("d", 1, CDate(DBrecord("StartDatum")))


With New ADODB.Command
Set .ActiveConnection = DBcon
.CommandText = "UPDATE tbl_X_Pool_Einsatz SET StartDatum = " & Format(D, "MM\/DD\/YYYY") & " WHERE ID = " & IDTag
.CommandType = adCmdText
.Execute
End With

Vielleicht muss das Datum zwischen Hochkomma eingegeben werden: '12/14/2024'

Man könnte auch das ISO-Format probieren: 2024-12-14 und auch mit HK: '2024-12-14'
siehe:
https://learnsql.de/blog/sql-datums-und-zeitfunktionen-in-5-gaengigen-sql-dialekten/

VG
Yal
Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
07.12.2024 13:04:31
Marc
Hallo Yal

wiederum danke für die Denkanstöße, werde sie gleich alle mal Probieren. Allerdings haben die ersten Versuche leider noch nichts gebracht.


Inzwischen glaub ich fast das es ein ACCESS Problem ist, nicht Excel VBA --> da bis zu dem Punkt der Datenübernahme in die Datenbank IMMER das richtige Datum vorhanden ist..

Allerdings habe ich jetzt auch noch heraus gefunden, das dieses Phänomen nur auftritt, wenn das alte Datum der letzte Tag des Monats ist (z.B. 30.11.2024 oder 31.10.2024) und das neue Datum in neuen Monat liegt ( z.B. 1.12.24 oder 2.12.24)

Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
07.12.2024 14:16:58
Yal
Moin,

Es wurde dann bedeuten, dass DateAdd nicht zuverlässig arbeitet? Schwer zu glauben (wäre sicher iwo im Netz zu lesen), aber nicht auszuschließen. Noch unklar ist für mich, warum DateAdd mit einem Date-String (Ergebnis von Format) arbeiten muss.

Man kann auch mit DateSerial probieren:
DateSerial ( Year(D), Month(D), Day(D) + 1)

VG
Yal
Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
08.12.2024 15:31:51
Marc Franz
Hallo Yal

ich glaube auch nicht das es ein Problem mit dateAdd ist...
Irgendwie scheint einfach auf dem Transportweg ab ende Excel bis Eintrag in DB das Datum verdreht zu werden..

mit Date Serial probiere ich gleich auch mal..

Ich hatte erst überlegt ob der Fehler daran liegt, das ich eine offene SELECT Anfrage habe, und wenn ich den Datensatz gefunden habe, das Update durchführe..
Ich hab dann aber die UPDATE nach ende der SELECT erst initiert und habe den gleichen Fehler...

Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
07.12.2024 18:06:03
Ulf
Hi,
ado ist nerviger als DAO in Bezug auf Datum & Datenbanktreiber
So hat es mit Win11/Acc/XL 32Bit auch über den Monat funktioniert:


Option Explicit

Dim adCON As ADODB.Connection
Dim cmd As New ADODB.Command

Public Sub doIT()
Dim strSQL As String
Dim id As Integer
Dim dtDate As Date, dtNewDate As Date
dtDate = ThisWorkbook.Worksheets(1).Range("A1").Value ' 30.11.2024
dtNewDate = DateAdd("d", 1, dtDate)
id = 1
Set adCON = New ADODB.Connection
With adCON
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\users\DUMMY\documents\Database1.mdb;Persist Security Info=False;"
.Open
End With
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = adCON
.CommandType = ADODB.CommandTypeEnum.adCmdText
strSQL = "UPDATE Tabelle1"
strSQL = strSQL & vbCrLf & "SET TestDatum=" & Chr(34) & CStr(dtNewDate) & Chr(34)
strSQL = strSQL & vbCrLf & "WHERE ID=" & id
'strsql=strsql & vbcrlf &""
.CommandText = strSQL '" SET TestDatum = " & dtNewDate & ""
.Execute
'01.12.2024 angekommen
End With
End Sub

das Trennen der SQL-Teile bringt Übersicht und lässt dem Parser weniger Optionen, kann man muss aber..
hth
Ulf
Anzeige
AW: falsches Datumformat bei Übertrag nach ACCESS
08.12.2024 15:28:16
Marc Franz
Hallo Ulf,

da ich bisher mit ado keine Probleme hatte im Projekt (auch nicht mit Update/Insert von Datumsangaben) habe ich nie über DAO nach gedacht.
Ich hatte damals eine Möglichkeit gesucht eine ACCESS (ACCdb) Datenbank mit Passwort zu nutzen, und da war damals ado das einzige was (bei mir) funktionierte.

Was mich halt wundert, das in dem Projekt viele Datums Update Anweisungen erfolgen, und nur in diesem einem SUB kommt es zu problemen.

Ich werde aber DAO probieren und eine Rückmeldung geben.
Danke für den Input

vg Marc
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18