Hallo Leute,
folgende Anforderung an einen SQL hätte ich:
Wir haben eine Tabelle, wo Feiertage drin gespeichert sind, entweder direkt als Datum (Typ DateTime-Feld) oder als Datum mit kleiner Jahreszahl aber dem Wert Yearly auf true. Das sind die jährlichen Feiertage.
Ich muss nun anhand eines Datums prüfen, ob dieses dort drin ist. Mein SQL hätte ich jetzt wie folgt gemacht:
nun habe ich zwei Probleme:
Die Meldung:
ausserdem stellt sich mir die Frage, ob das auch bei zweistelligen Monaten und Tagen klappt, denn im VB-Code muss ich ja auch DatePart verwenden:
Tatsächlich habe ich erstaunlich wenig zu diesem Fehler gefunden im Web.
Oder hat evtl. jemand eine elegantere Lösung, wie man das gewünschte rausfinden könnte?
Wie immer danke ich im Voraus für alle Antworten
Müller Matthias
folgende Anforderung an einen SQL hätte ich:
Wir haben eine Tabelle, wo Feiertage drin gespeichert sind, entweder direkt als Datum (Typ DateTime-Feld) oder als Datum mit kleiner Jahreszahl aber dem Wert Yearly auf true. Das sind die jährlichen Feiertage.
Ich muss nun anhand eines Datums prüfen, ob dieses dort drin ist. Mein SQL hätte ich jetzt wie folgt gemacht:
Code:
select holidayid from ocHolidays where (holiday = {d '2012-05-05'} and yearly = 0) or (datepart(holiday, m) = '5' and datepart(holiday, d) = '5' and yearly = 1)
nun habe ich zwei Probleme:
Die Meldung:
---------------------------
SQL-Fehler
---------------------------
Fehler: -2147217900
Quelle: Microsoft OLE DB Provider for SQL Server
Meldung: 'holiday' wird nicht als Option für datepart erkannt.
ADO Fehler:
-2147217900, Microsoft OLE DB Provider for SQL Server, 'holiday' wird nicht als Option für datepart erkannt.
Wollen Sie den SQL-Befehl ansehen?
---------------------------
Ja Nein
---------------------------
ausserdem stellt sich mir die Frage, ob das auch bei zweistelligen Monaten und Tagen klappt, denn im VB-Code muss ich ja auch DatePart verwenden:
Visual Basic:
With thisQQ.DBSQL
.DatabaseType = mConn.DatabaseType
.sql = "select holidayid from ocHolidays where (holiday = "
.AddDate mDate
.Add " and yearly = "
.AddLong 0
.Add ") or (datepart(holiday, m) = "
.AddString DatePart("m", mDate)
.Add " and datepart(holiday, d) = "
.AddString DatePart("d", mDate)
.Add " and yearly = "
.AddLong 1
.Add ")"
End With
Tatsächlich habe ich erstaunlich wenig zu diesem Fehler gefunden im Web.
Oder hat evtl. jemand eine elegantere Lösung, wie man das gewünschte rausfinden könnte?
Wie immer danke ich im Voraus für alle Antworten
Müller Matthias