PDA

Vollständige Version anzeigen : Datum in einer Abfrage


<lubbi2>
06.01.2002, 18:28
Nabend,

ich steh vol auf der Leitung. Ich soll ne abfrage machen in der das Datum von so Hochzeitstagen angezeigt wird wie z.B. Goldene mit 50 Jahren. So nur mit der Funktion die ich gemacht habe komt das nicht hin. Könnte mir da einer helfen. Der soll alle Mitglieder anzeigen die vor 50 Jahren geheiratet haben.

DANKE

LUBBI

Goki
06.01.2002, 18:45
Hallo Lubbi ...

kannst du uns mal deine Abfrage kurz per SQL Code hier einfügen ... geh´ bitte in den Entwurfsmodus deiner Abfrage ... oben Links, wo du sonst draufklickst um das Ergebnis anzeigen zu lassen, klickst auf das leine DreiEck ... dann klappt das Ding auf und klick da bitte auf SQL ... dann siehst du den Code wie er verarbeitet wird ...

Kopier den doch bitte ... vielleicht kann ich dir dann von hier aus weiterhelfen.

Danke :D

slg
Goki <img src="graemlins/lachen2.gif" border="0" alt="[mehr lachen]" />

<lubbi2>
06.01.2002, 19:05
SELECT Mitglieder.Vname, Mitglieder.Nname, Mitglieder.Straße, Mitglieder.Hzeit
FROM Mitglieder
WHERE (([Mitglieder]![Hzeit] * 50 = [datum]));

da will der aber immer nen PARAMETER für DATUM haben oder hieß das DATE? ne mit DATE ist das gleiche

Hütti
07.01.2002, 08:48
hi,

so wie du das eingegeben hast, wäre [datum] ein feld. daher die parameterabfrage.
du musst imho das ganze in Hochzeit+50=date() setzen.

kann aber auch dann zu problemen führen, je nachdem wie dein datumfeld definiert ist. da +50 nicht zwingen +50 Tage bedeutet. liegt daran, das access teilweise (je nach formatierung) das datum als zahl in minuten benutzt. dann musst du entsprechend "mehr" addieren, oder am format was tun...

Kobold
07.01.2002, 09:02
Hallo, versuchs mal mit diesem SQL

SELECT Mitglieder.Vname, Mitglieder.Nname, Mitglieder.Straße, Mitglieder.Hzeit
FROM Mitglieder
WHERE year(DateAdd("yyyy",50,Mitglieder.Hzeit))=Year(Now);

Bis denne Kobold

Hondo
07.01.2002, 13:37
Hallo,
meines Erachtens muß das Datum in der SQL-Form vorliegen: #mm/tt/jjjj#
schreibe eine Funktion z.B. in einem Modul wo du das Datum umwandelst. Das könnte z.B. so aussehen:


Public Function DatumSQL(dat As String) As String

' --------------------------------------------------------------------------------
' Diese Funktion wandelt ein beliebiges Datum in ein SQL-Datum um.
' --------------------------------------------------------------------------------

' Deutsches Format mit 10 Stellen
If Len(dat) = 10 Then
DatumSQL = "#" & Mid(dat, 4, 2) & "/" & Left(dat, 2) & "/" & Right(dat, 4) & "#"
End If

' Deutsches Format mit 9 Stellen
If Len(dat) = 9 Then
If InStr(5, dat, ".") = 5 Then ' Format 01.1.2001
DatumSQL = "#0" & Mid(dat, 4, 1) & "/" & Left(dat, 2) & "/" & Right(dat, 4) & "#"
Else ' Format 1.10.2001
DatumSQL = "#" & Mid(dat, 3, 2) & "/0" & Left(dat, 1) & "/" & Right(dat, 4) & "#"
End If

End If

' Deutsches Format mit 8 Stellen
If InStr(1, Right(dat, 4), ".") <> 0 Then
DatumSQL = "#" & Mid(dat, 4, 2) & "/" & Left(dat, 2) & "/20" & Right(dat, 2) & "#"
End If

' Amerikanisches Format
If InStr(1, dat, "/") <> 0 Then
' 8 Stellen
If Len(dat) = 8 Then
DatumSQL = "#" & Left(dat, 2) & "/" & Mid(dat, 4, 2) & "/" & Right(dat, 2) & "#"
End If

' 7 Stellen
If Len(dat) = 7 Then
If InStr(1, dat, "/") = 3 Then ' Datum im Format 10/7/01
DatumSQL = "#" & Left(dat, 2) & "/0" & Mid(dat, 4, 1) & "/" & Right(dat, 2) & "#"
Else ' Datum im Format 7/10/01
DatumSQL = "#0" & Left(dat, 1) & "/" & Mid(dat, 3, 2) & "/" & Right(dat, 2) & "#"
End If
End If

' 6 Stellen
If Len(dat) = 6 Then ' Datum im Format 7/1/01
DatumSQL = "#0" & Left(dat, 1) & "/0" & Mid(dat, 3, 1) & "/" & Right(dat, 2) & "#"
End If
End If

End Function

Beispiel für Anwendung:

... WHERE ((Ankunft) Between " & DatumSQL(dat) & " And " & DatumSQL(dat) & ")...

wobei dat auch ein Datum sein kann.

HTH Andreas