AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi freien Belegungszeitraum ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

freien Belegungszeitraum ermitteln

Ein Thema von Rolf Rostig · begonnen am 4. Dez 2003 · letzter Beitrag vom 10. Dez 2003
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#21

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 17:11
Was Du so alles wissen willst. Probiere es doch mal mit einer Kombination aus beidem:
SQL-Code:
select distinct raum
from Belegung
where Raum not in
  (select Raum from Belegung
   where '10.01.2004'  between anfang and ende
   or '22.01.2004'  between anfang and ende
   or ende between '10.01.2004and '22.01.2004'
   or anfang between '10.01.2004and '22.01.2004');
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#22

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 17:26
Also, da find ich meine Idee aber irgendwie... naja, kürzer
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#23

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 17:44
So funktionierts bei mir:

SQL-Code:
select raum
from Belegung
where raum not in (
         select raum
         from Belegung
         where ((:von between anfang and ende)
                or (:bis between anfang and ende)
                or (:von <= anfang and :bis >= anfang)
                or (:von <= anfang and :bis >= ende)))
Gruß,
Marcel
Marcel Gascoyne
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#24

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 18:15
Zitat von Treffnix:
Also, da find ich meine Idee aber irgendwie... naja, kürzer
Liefert nur nicht das erwünschte Ergebnis!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#25

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 19:02
Das Problem an meiner vorherigen Lösung war, dass Einträge, die vor :StartTm begannen/ nach :EndTm endeten, nicht erfasst wurden.
Versuch's mal so:
SQL-Code:
SELECT DISTINCT t.Raum
FROM T_Daten t
WHERE t.Raum NOT IN
       (SELECT x.Raum
        FROM T_Daten x
        WHERE (x.Anfang BETWEEN :StartTm AND :EndTm OR
                x.Ende BETWEEN :StartTM AND :EndTm) OR
                x.Anfang <= :StartTm AND x.Ende >= :StartTm)
Kam hier aber bestimmt schon in irgendeinem Posting vor.

@Treffnix
Mach's dir nicht zu einfach - es wird nicht funktionieren.
Was ist wenn das Enddatum kleiner als :EndTm aber größer als :StartTm ist?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#26

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 19:58
Zitat von GeorgeWNewbie:
@Treffnix
Mach's dir nicht zu einfach - es wird nicht funktionieren.
Was ist wenn das Enddatum kleiner als :EndTm aber größer als :StartTm ist?
Du meinst zum Beispiel Ende ist der 15.01.2004?

Dann ist Ende grösser als 14.01.2004 und passt somit ins Where-Statement, oder steh ich jetzt aufm Schlauch?

Mal ein paar Beispiele, die eigentlich alle Fälle abdecken sollten:
Annahme: StartTm = 12.01.2004, EndTm = 16.01.2004
Where Start <=:EndTm And Ende >=:StartTm
Code:
Start   Ende
10.01. - 19.01.
Where 12.01.2004 <= 19.01.2004 And 16.01.2004 >= 10.01.2004  True
13.01. - 15.01.
Where 12.01.2004 <= 15.01.2004 And 16.01.2004 >= 12.01.2004  True
10.01. - 15.01.
Where 12.01.2004 <= 15.01.2004 And 16.01.2004 >= 10.01.2004  True
15.01. - 21.01.
Where 12.01.2004 <= 21.01.2004 And 16.01.2004 >= 15.01.2004  True
09.01. - 10.01.
Where 12.01.2004 <= 10.01.2004 And 16.01.2004 >= 09.01.2004  False ( links )
18.01. - 20.01.
Where 12.01.2004 <= 20.01.2004 And 16.01.2004 >= 18.01.2004  False ( rechts )
*edit* da fehlten noch doppelpunkte *edit*
*edit2* 2 Werte vertauscht *edit2*
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#27

Re: freien Belegungszeitraum ermitteln

  Alt 8. Dez 2003, 20:30
Sorry TreffNix, hab' mich verguckt...

Anscheinend hast du vollkommen recht.

Mann ( ), manchmal müsste ich akutes Post-Verbot kriegen.

(Manchmal denkt man, die Lösung sei kompliziert - also macht man sie auch kompliziert...)
Wenn TreffNix' Lösung bei dir nicht funktioniert dann liegt das ganz einfach an impliziter Umwandlung von String zu Datum.
Füge nicht " '14.01.2003' " in deine Abfrage ein, sondern verwende Variablen, die du als Datum definierst.

Denn implizite Umwandlung bedeutet einen ziemlichen CPU-Overhead auf dem Server.
  Mit Zitat antworten Zitat
Rolf Rostig

Registriert seit: 5. Mär 2003
Ort: Stade
117 Beiträge
 
Delphi 7 Professional
 
#28

Re: freien Belegungszeitraum ermitteln

  Alt 10. Dez 2003, 10:56
Hallo GeorgeWNewbie,

ich habe jetzt erst die Tests fahren können und es sieht sehr sehr gut aus.

Vielen Dank, auch für die Beiträge von den Anderen.

Gruss
Rolf
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz