Workaround für fehlende modulo-Funktion in SQL

21/03/2010 - 17:54 von Wolfgang Backes | Report spam
Hallo miteinander,

ich bin dabei, ein Terminkalenderprogramm in VB6 zu basteln. Die
Termindaten werden in einer MS-Access-Datenbank gespeichert, welche
die Felder "Datum" und "Text" enthàlt.

In der Datenbank sollen auch Termine abgelegt werden, die alle 14 Tage
wiederkehren. Die Holzhammermethode wàre, beim Eintragen des
erstmaligen Termins nicht nur den Datensatz "<Datum des erstmaligen
Termins>,<Text>" anzulegen, sondern gleich Zigtausende weiterer
Datensàtze für die nàchsten 100 Jahre. Nicht sehr elegant:-(

Deshalb habe ich ein weiteres Feld "Alle14Tage" (Datentyp Boole)
vorgesehen. Für wiederkehrende Termine wird der erstmalige Termin in
das Feld "Datum" eingetragen, zusàtzlich wird "Alle14Tage" auf TRUE
gesetzt.

So weit, so gut.

Das Problem ist: Wie kann ich diejenigen Datensàtze selektieren, deren
Termin an einem gegebenen Datum wiederkehrt? Dazu bràuchte ich einen
SQL-Selektionsausdruck der Art:

... Where DateDiff('d',<GegebenesDatum>,[Datum]) modulo 14=0

oder so àhnlich (etwaige Syntax-Fehler bitte ignorieren).

Leider gibt es in SQL keine modulo-Funktion.

Hat jemand eine Idee, wie man das Problem lösen könnte?

Für jeden Tipp dankbar,
Wolfgang
 

Lesen sie die antworten

#1 Dieter Strassner
21/03/2010 - 18:19 | Warnen spam
Hallo Wolfgang,

Leider gibt es in SQL keine modulo-Funktion.

Hat jemand eine Idee, wie man das Problem lösen könnte?



Ich würde mir so àhnlich behelfen:

WHERE ROUND(Datum / Rhythmus,0)=Datum / Rhythmus

Welche Datentypen ACCESS beim berechnen des Ausdrucks verwendet, solltest Du
vorher noch prüfen, mit Integer/Long ging so was nicht
Evtl. den Wert für 'Rhythmus' und 'Datum' zum zwecke der Berechnung in
passenden Datentyp konvertieren. Also kurzum: Bitte selbst genau testen!


Viele Grüße

Dieter


Rückfragen bitte nur in die Newsgroup!

EDV-Kommunikation Strassner e.K.
68623 Lampertheim
Internet: www.strassner.biz

Ähnliche fragen