PDA

Vollständige Version anzeigen : Datum per SQL


wizardtornado
02.06.2012, 19:57
Hallo zusammen,

kurze Frage habe ein Feld Datum 01.05.2012 und in einem Formular zwei Felder
VON und BIS, nun möchte ich in VON : 01.05.2012 eingeben und in BIS: 15.05.2012 danach per Button und SQL String sollen die Daten in das Datum geschrieben werden wie könnte es gehen.

Also VON - BIS per Button in ein Datumsfeld einer Tabelle anfängen

01.05.2012
02.05.2012
03.05.2012
04.05.2012 usw. bis zum 15.05.2012 per SQL Code

wizardtornado
02.06.2012, 20:12
Dim oRs As DAO.Recordset
Dim datMonat As String

Set oRs = CurrentDb.OpenRecordset("tbl_kalender")

datMonat = "01.07.2012"

Do Until datMonat = "31.07.2012"
datMonat = Format(DateAdd("d", 1, DateValue(datMonat)), "dd.mm.yyyy")
oRs.AddNew
oRs!datum = datMonat
oRs.Update
Loop

oRs.Close

Danke und noch einen schönen Abend

Lanz Rudolf
03.06.2012, 10:28
Hallo
ist das Thema für Dich abgeschlossen Lies das:
http://www.ms-office-forum.net/forum/showthread.php?t=102899#erledigen

und den Code bite so darstellen wie hier beschrieben:
http://www.ms-office-forum.net/forum/showthread.php?t=102899#usec

Wenn Du mehr zu Datum Wissen möchtest Lies hier:
http://dl.dropbox.com/u/46590638/ACC/ACCESS%202000BU%20%20Begleitunterlagen.zip
ab Seite 269 bis 307 ;)

habe Dein Code Abschnitt etwas verändert:
wenn möglich arbeite mit Date- Felder und nicht mit String bei Datum's
Dim DatStart As Date
Dim DatEnd As Date
Dim DatMonat As Date
DatStart = "01.07.2012"
DatEnd = "31.07.2012"
DatMonat = DatStart
Do Until DatMonat > DatEnd
Debug.Print DatMonat
DatMonat = DateAdd("d", 1, DatMonat)
Loop
Auch das Einrücken des Codes z.B hier beim Do--Loop aber auch bei If -Else- End If erhöht die Lesbarkeit !
ich denke das bei Deinem Code der "01.07.2012" nie im Output (tabelle) kommt ? :confused: :entsetzt:

An stelle von
Debug.Print DatMonat
machst Du Dein
oRs.AddNew
oRs!datum = datMonat
oRs.Update


in der Tabelle Solltest Du Felder wie dieses
oRs!datum vermeiden
datum ist bei Access (Deutsche Version) ein Reservierteswort !
das kann Konflikte (Fehler) geben.

Lanz Rudolf
03.06.2012, 12:42
Hallo
da Du Ja nach SQL nachgefragt hast:
Public Function xxx()
Dim dbs As DAO.Database
Dim DatStart As String ' besser Date
Dim DatEnd As String ' besser Date
Dim DatMonat As Date
Dim StrSQL As String
Set dbs = CurrentDb()
DatStart = "1.07.2012"
DatEnd = "31.07.2012"
If IsDate(DatStart) Then ' Prüfen bei String notwendig
Else
MsgBox "Start ist Kein gültiges Datum"
Exit Function
End If
If IsDate(DatEnd) Then ' Prüfen bei String notwendig
Else
MsgBox "Ende ist Kein gültiges Datum"
Exit Function
End If
DatMonat = DatStart
Do Until DatMonat > DatEnd
StrSQL = "INSERT INTO TblTest ( Tdat )" & "SELECT" & Chr$(34) & DatMonat & Chr$(34) & " AS Tdat ;"
Debug.Print StrSQL
dbs.Execute StrSQL
Debug.Print DatMonat
DatMonat = DateAdd("d", 1, DatMonat)
Loop
If Not dbs Is Nothing Then
dbs.Close
Set dbs = Nothing
End If
End Function

gibt dann in der Tabelle wenn Id ein autowert ist und die Tabelle leer ist
und Tdat in der Tabele als Datum/Uhrzeit (Format: StandatrDatum oder Keine Angabe)Definiert ist:
id Tdat
1 01.07.2012
2 02.07.2012
3 03.07.2012
4 04.07.2012
5 05.07.2012
6 06.07.2012
7 07.07.2012
8 08.07.2012
9 09.07.2012
10 10.07.2012
11 11.07.2012
12 12.07.2012
13 13.07.2012
14 14.07.2012
15 15.07.2012
16 16.07.2012
17 17.07.2012
18 18.07.2012
19 19.07.2012
20 20.07.2012
21 21.07.2012
22 22.07.2012
23 23.07.2012
24 24.07.2012
25 25.07.2012
26 26.07.2012
27 27.07.2012
28 28.07.2012
29 29.07.2012
30 30.07.2012
31 31.07.2012