AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Termine anzeigen

Ein Thema von Walter Landwehr · begonnen am 23. Nov 2015 · letzter Beitrag vom 23. Nov 2015
Antwort Antwort
Seite 3 von 3     123   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Termine anzeigen

  Alt 23. Nov 2015, 12:48
Gibt es bei IBO einen Abfrage-Monitor?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Termine anzeigen

  Alt 23. Nov 2015, 12:54
Was ich nicht so ganz verstehe ist, dass dein select ausschließlich eine Anzahl (Count) liefert, du aber schreibst, dass Termine mit dem falschen Datum angezeigt werden. Ist dein select dann doch eher ein select *?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
384 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Termine anzeigen

  Alt 23. Nov 2015, 13:56
Hallo Mkinzler,

ja gibt es, den habe ich auch gerade probiert.

Delphi-Quellcode:
select
    count(E.patientennummer) as Anzahl
from events E
where
   (E.patientennummer = 16)
   and
  (E.startzeit > '23.11.2015,11:00:00')
  and
  (E.FINISH <= '23.12.2015,15:00:00')
So geht es. Nehme ich allerdings das Komma zwischen Datum und Uhrzeit weg gibt es ein Conversion error to String.
In Delphi wird aber der Parameter now ohne Komma übergeben. Muss jetzt mal testen wie ich das hinbekomme.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Termine anzeigen

  Alt 23. Nov 2015, 14:16
Dann stimmt estwas nicht. Bei FireBird ist eine TimeStamp kein String sondern ein Integer. Zudem sollten die Parameter gesendet werden und nicht die Werte der Parameter.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: Termine anzeigen

  Alt 23. Nov 2015, 14:23
Wie sieht denn das Create-Statement für die events-Tabelle aus?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
384 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: Termine anzeigen

  Alt 23. Nov 2015, 14:34
Habe es gelöst. So geht es.
Delphi-Quellcode:
    Termineqry.Close;
    Termineqry.ParamByName('Patientennummer').AsInteger := Patient1Qry.FieldByName('Patientennummer').AsInteger;
    Termineqry.ParamByName('Startdatum').asString := DateTimeToStr(Now);
    Termineqry.ParamByName('ENDDATUM').asString := DateTimeToStr(now + dmMain.ibqryOptionen.FieldByName('TERMINTAGE').AsInteger);
    Termineqry.Open;
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: Termine anzeigen

  Alt 23. Nov 2015, 14:38
Mit unnötigem(n) Umweg(en): TimeStamp -> String -> TimeStamp, wenn Deine Angabe des Typs des Feldes (TimeStamp) stimmt.
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#28

AW: Termine anzeigen

  Alt 23. Nov 2015, 14:57
Delphi-Quellcode:
select
    count(E.patientennummer) as Anzahl
from events E
where
   (E.patientennummer = 16)
   and
  (E.startzeit > '23.11.2015,11:00:00')
  and
  (E.FINISH <= '23.12.2015,15:00:00')
Dies entspräche in Delphi einer Abfrage in der Form
Delphi-Quellcode:
Termineqry.Close;
    Termineqry.ParamByName('Patientennummer').AsInteger := Patient1Qry.FieldByName('Patientennummer').AsInteger;
    Termineqry.ParamByName('Date').AsString := '23.11.2015 11:00:00';
    Termineqry.ParamByName('ENDDATUM').AsString := '23.12.2015 15:00:00');
    Termineqry.Open;
Für meine Begriffe sind die beiden Abfragen (technisch) nicht miteinander vergleichbar.

Sollte der Datentyp in der DB tatsächlich TimeStamp sein, so muss IBExpert hier also auf irgendeine Weise eine Typkonvertierung machen, deren Ergebnis dem erwarteten entspricht.

Now ist in Delphi vom Typ TDateTime und TDateTime wiederum von Typ Double.
Der ganzzahlige Anteil entspricht der den Tagen seit dem 30.12.1899, der Nachkommaanteil der Zeit nach Mitternacht.

Heute ist der 42331 (23.11.2015).
0.47917 entspricht 11:30 Uhr.
0.333334 entspricht 08:00 Uhr.
0.625 entspricht 15:00 Uhr.
42361 entspricht dem 23.12.2015.

Für vergleichbare Ergebnisse (hoffentlich) ohne Typkonvertierung müsste die Abfrage im IBExpert also lauten:

Delphi-Quellcode:
select
    count(E.patientennummer) as Anzahl
from events E
where
   (E.patientennummer = 16)
   and
  (E.startzeit > 42331.47917)
  and
  (E.FINISH <= 42361.625)
und unter Delphi
Delphi-Quellcode:
Termineqry.Close;
    Termineqry.ParamByName('Patientennummer').AsInteger := 16;
    Termineqry.ParamByName('Date').AsDateTime := 42331.47917;
    Termineqry.ParamByName('ENDDATUM').AsDateTime := 42361.625);
    Termineqry.Open;
Bei diesen beiden Abfragen erwarte ich identische Ergebnisse. Ist dem so?
Andernfalls würde ich den Fehler weniger in der Korrektheit der Abfrage, als in Konvertierungsproblemen bei den Datentypen, erwarten.

Die Umschiffung des Problemes mit mehrfachen Typkonvertierungen halte ich für suboptimal, das mag jetzt im konkreten Fall funktionieren, aber ob das jetzt und für alle Zeiten funktioniert? Auf eine derartige "Krücke" würde ich mich nicht verlassen.
  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:55 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