Hallo,
könnte mir bitte jemand helfen mit dem INSERT INTO Statement.
Sub ListOfDates()
Dim dteStartDate As Date
Dim dteEndDate As Date
Dim dteCurrDate As Date
dteStartDate = #7/1/2019#
dteEndDate = #7/10/2019#
For dteCurrDate = dteStartDate To dteEndDate
Debug.Print Format(dteCurrDate, "DDD") & " " & dteCurrDate
[b]INSERT INTO tblTest (Test_Bezeichnung) VALUES(Format(dteCurrDate, "DDD") & " " & dteCurrDate);[/b]
Next dteCurrDate
End Sub
Hier funktioniert mein Statement nicht.
Bedanke mich im Voraus.
Hallo,
was genau funktioniert denn nicht ?
Das Zusammensetzten des Datumsfeldes ist komplett überflüssig.
Einfach das Datum in die Tabelle schreiben, ohne Formatierungen. Denn egal wie Du formatierst, es steht ohnehin nur eine reine Zahle (Double) im Feld. Formatiert wird immer erst zur Anzeige.
Hallo Klaus,
Danke für die Antwort.
Das Statement ist rot also da hab ich einen Syntaxfehler in der Anweisung.
ZitatDas Zusammensetzten des Datumsfeldes ist komplett überflüssig.
Danke ja stimmt na ist im Moment nur ein Test das ich Daten in eine Tabelle übergeben kann die
aus einer For Next Schleife generiert wurden.
Hallo,
das würde ich in diesem Falle mit einem Recordset direkt in die Tabelle schreiben.
Sub ListOfDates()
Dim rs As Recordset, dteCurrDate As Date
Set rs = CurrentDb.OpenRecordset("tblTest")
For dteCurrDate = #7/1/2019# To #7/10/2019#
rs.AddNew
rs!Test_Bezeichnung = dteCurrDate
rs.Update
Next dteCurrDate
End Sub
Hallo Klaus,
Vielen Dank!
Ja einfach wenn man weiß wie :)
Zitat von: silentwolf am August 30, 2019, 11:11:08
Das Statement ist rot also da hab ich einen Syntaxfehler in der Anweisung.
Für mich sieht das im ursprünglichen Code so aus, als steht dort einfach eine "nackte" SQL-Anweisung direkt im VBA-Code. - Diese sollte erstl als String aufgebaut werden und anschließend mit (z.B.) CurrentDb.Execute ausgeführt werden.
Hallo,
Und ganz ohne Schleifengedrehe (würde Eberhard schreiben) geht es mit dieser
Anleitung von ihm
https://www.ms-office-forum.net/forum/showthread.php?t=298670&highlight=Kalendertabelle (https://www.ms-office-forum.net/forum/showthread.php?t=298670&highlight=Kalendertabelle)
gruss ekkehard
Hi,
vielleicht wird das ja die Kalendertabelle. ;D
Hallo Klaus,
Na und, - wie man die einrichtet ist dort doch auch beschrieben, oder irre ich
mich da?
gruss ekkehard
Hallo,
für das einmalige Anlegen einer Kalendertabelle sehe ich keinen Grund auf die Schleife zu verzichten. Der Code ist überschaubar und sehr leicht zu verstehen. 30 Jahre (ca. 11000 DS) brauchen weniger als 1 Sec.
Ich würde also das Schleifendrehen hier bevorzugen.
Ist aber meine persönliche Meinung.
Hallo an alle!
War nicht online und erst jetzt gesehen das noch weitere Antworten geschrieben wurden.
Es geht darum das in einem Monat verschiedene Objekte 1 bis 7 mal in der Woche erledigt werden.
Um nicht immer jeden Tag einzeln in eine Tabelle zu schreiben wenn Standartzeiten in einem Objekt gearbeitet werden möchte ich am Ende einfach ein Objekt auswählen und normaler Weise ein Monat eintragen also 1.07.2019-31.7.2019 den Turnus sagen wir Mon-Freitag und ich erhalte die geleisteten Tage eines Monats inkl. Feiertage wenn in diesen Zeitraum vorhanden.
So etwas in der Art habe ich in Excel erstellt aber würde es gerne in Access haben damit ich alles in einer DB habe.
Also wird die Schleife meist nur ein Montat durchlaufen müssen.
Würde jetzt einfach eine Tabelle mit Feiertage und eine Tabelle mit Tage pro Woche an einem Objekt gearbeiten werden muss erstellen.
Natürlich tblObjekte mit tblObjektTurnus verlinken.
Vielleicht hat hier ja jemand schon was ähnliches erstellt und kann mir Tipps geben wie es am besten gehen könnte.
Vielen Dank
Also für "Tage pro Woche" brauchst du definitiv keine Extra Tabelle erstellen.
Nimm einfach die Weekday funktion um zu prüfen welcher Wochentag das ist.
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/weekday-function (https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/weekday-function)
Verstehe ich dich richtig, dass du Verschiedene Objekte/Tätigkeiten in einer Tabelle erfassen möchtest?
Also eine Feiertagstabelle wirst du dafür wohl machen müssen... denn die sind ja je nach Region unterschiedlich.
Ich würde wie folgt vorgehen:
1. Schleife für Zeitbereich Beginn bis Zeitbereich Ende... Das Datum welches du immer prüfst in der Schleife, würde ich innerhalb der Schleife mit DateAdd selbst anpassen. (Bei mir hatte Access schon öfter Probleme beim Datum hochzählen in einer Schleife... denn wie soll es denn auch Zählen? Tag, Monat, Jahr? Sekunde? Was soll hoch gezählt werden?
Pseudocode
For CurrDate = StartDate To EndDate
'Je nach Option an welchen Wochentagen die Tätigkeit erledigt werden soll
If Weekday(CurrDate) > 1 Then
'Prüfen ob Feiertag
DLookup in der Feiertagstabelle mit CurrDate als Datum.
If DLookup Rückgabe leer Then
Eintrag für deine Tätigkeit an diesem Tag
End If
End If
CurrDate = DateAdd("d", 1, CurrDate)
next
Hallo,
die Kalendertabelle ist die einfachste Lösung.
Die Leistungen werden aber per Datum erfasst. Der Wochentag lässt sich daraus ermitteln.