AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

Ein Thema von Metallicwar · begonnen am 23. Sep 2011 · letzter Beitrag vom 23. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#1

SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 12:29
Datenbank: ADS • Version: 10.10 • Zugriff über: Delphi 2009
Hallo zusamme,
habe mir einen SQL im Data-Architect zusammengebaut und getestet.
Er wird erfolgreich ausgeführt und zeigt mir meine gewünschten Datensätze an.
Füge ich diesen SQL nun auch in meiner ADSQuery in Delphi ein, funktioniert er nicht mehr.

Code:
SELECT
    Buchungsdatei.Datum,
   Personal.ID, Personal.Name,
   Personal.Vorname,
    F.MinToHour(B_Ergebnisse.Pause) as Pause,
   F.MinToHour(B_Ergebnisse.Mehrarbeit) as Mehrarbeit,
   F.MinToHour(B_Ergebnisse.Tagesnetto) as Tagesnetto,
    min(Buchungen.Me1), max(Buchungen.Me2),
   sum(CASE WHEN Buchungen.AuftragNr IS NULL THEN 0 ELSE BSumme END) BSumme
FROM
    (((((Personal Personal LEFT OUTER JOIN Abteilungen Abteilungen ON
        Personal.ID_Abteilungen = Abteilungen.ID)
     LEFT OUTER JOIN Buchungsdatei Buchungsdatei ON
        Personal.ID = Buchungsdatei.ID_Personal)
     LEFT OUTER JOIN Buchungen Buchungen ON
        Buchungsdatei.ID_Personal = Buchungen.ID_Personal AND
    Buchungsdatei.Datum = Buchungen.Datum)
     LEFT OUTER JOIN FEHLTAGEDEFINITION FEHLTAGEDEFINITION ON
        Buchungsdatei.Fehltag = FEHLTAGEDEFINITION.Kuerzel)
     LEFT OUTER JOIN B_Ergebnisse B_Ergebnisse ON
        Buchungsdatei.ID = B_Ergebnisse.ID_Buchungsdatei)
Where Buchungsdatei.Datum >= '01.08.2011' and Buchungsdatei.Datum <= '30.08.2011' and Personal.ID = 88
group by Buchungsdatei.Datum, Personal.ID, Personal.Name, Personal.Vorname, Pause, Mehrarbeit,
         Tagesnetto
Folgenden Fehler erhalte ich, nur kann ich nicht verstehen wieso? Im Data Architect läuft die Abfrage ja schließlich auch ohne Probleme.
ERROR IN SCRIPT: poQuery: Error 7200: AQE Error: State = S0000; NativeError = 2124; [iAnywhere Solutions][Advantage SQL Engine]Invalid operand for operator: >=
[Invalid DATE] -- Location of error in the SQL statement is: 988 (line: 22 column: 21)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 12:35
Ich hatte das schon in dem anderen Thread geschrieben: Die Datumsliterale anpassen.
Code:
Where Buchungsdatei.Datum >= '2011-08-01' and Buchungsdatei.Datum <= '2011-08-30' and Personal.ID = 88
Ich seh da auch noch den 30. August kritisch, dieser Monat hat 31 Tage oder ist das Absicht? Und optimierter ginge es dann
Code:
Where Buchungsdatei.Datum between '2011-08-01' and '2011-08-30'
 and Personal.ID = 88
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
jaevencooler

Registriert seit: 8. Sep 2005
Ort: Friedrichshafen
41 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 12:37
Moin , Moin,


das Problem scheint Deine Where Bedingung zu sein.....
versuche es mal mit einem between und stelle sicher das die Datumsformat passen.

Gruß
Michael

: Ups Union war schneller.....
Michael
Wissen ist Macht, nichts wissen macht auch nichts.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 12:38
Da das SQL-Statement der Query ja wahrsch. als String übergeben wird. Wie stehts um die Maskierung der Hochkommata?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 12:42
Alternativ, wenn Du weiter mit landesspezifischen Datumsstrings arbeiten willst: TAdsSettings.DateFormat entsprechend setzen, so wie Du es ja wahrscheinlich auch im ARC unter den Optionen getan hast (oder sich ARC aus TFormatSettings geholt).

Kann ich aber nicht empfehlen - Du kriegst damit Deine Programme schwer über die Grenze
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#6

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 12:54
BINGO, das wars!!
Zitat:
Where Buchungsdatei.Datum >= '2011-08-01' and Buchungsdatei.Datum <= '2011-08-30' and Personal.ID = 88
so funktionierts.
Hab dann die TAdsSettings Komponente auf die Form gezogen und mit dem gewünschten Datumsformat weitergearbeitet.
Besten Dank ...
MfG David
und Ein schönes Wochenende !
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 13:07
Und wieder mal ein Beispiel wo man durch Verwendung von parametrisierten Abfragen dieses Problem gar nicht gehabt hätte ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 13:09
Code:
Datum := '01.01.01;Drop table Buchungensdatei;'
Ja, das macht immer wieder Freude...
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 13:52
Code:
Datum := '01.01.01;Drop table Buchungensdatei;'
Ja, das macht immer wieder Freude...
Du hast es doch gelesen, erst das "richtige" Format ausprobiert und dann die Nationalisierungskrücke hinterher schieben.

Das to_date in oracle nervt mich zwar immer wieder, aber da werde ich immer wieder darauf gestoßen wieviele Möglichkeiten ich hätte wenn ich nur wollte.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#10

AW: SQL Abfrage funktioniert im Data Architect, in Query von Delphi nicht

  Alt 23. Sep 2011, 15:38
Muss nochmal etwas nachfragen, komme einfach nicht auf die Lösung.

Code:
SELECT
    Buchungsdatei.Datum,
   Personal.ID, Personal.Name,
   Personal.Vorname,
        F.MinToHour(B_Ergebnisse.Pause) as Pause,
   F.MinToHour(B_Ergebnisse.Mehrarbeit) as Mehrarbeit,
   F.MinToHour(B_Ergebnisse.Tagesnetto) as Tagesnetto,
        min(Buchungen.Me1), max(Buchungen.Me2),
   sum(CASE WHEN Buchungen.AuftragNr IS NULL THEN 0 ELSE BSumme END) BSumme,
   Auftraggeber.Name // --> Name des Auftraggebers
FROM
    (((((((Personal Personal
LEFT OUTER JOIN Abteilungen Abteilungen ON
        Personal.ID_Abteilungen = Abteilungen.ID)
LEFT OUTER JOIN Buchungsdatei Buchungsdatei ON
        Personal.ID = Buchungsdatei.ID_Personal)
LEFT OUTER JOIN Buchungen Buchungen ON Buchungsdatei.ID_Personal = Buchungen.ID_Personal
AND Buchungsdatei.Datum = Buchungen.Datum)
Left outer join auftrag a on Buchungen.Id_Auftrag = a.id) // --> meine zwei joins, mit denen ich mir den Namen des Auftraggebers ermittel
Left Outer join Auftraggeber Auftraggeber on a.ID_Auftraggeber = Auftraggeber.Id) // -->2ter join
LEFT OUTER JOIN FEHLTAGEDEFINITION FEHLTAGEDEFINITION ON Buchungsdatei.Fehltag = FEHLTAGEDEFINITION.Kuerzel)
Left OUTER JOIN B_Ergebnisse B_Ergebnisse ON Buchungsdatei.ID = B_Ergebnisse.ID_Buchungsdatei)
Where Buchungsdatei.Datum >= '01.08.2011' and Buchungsdatei.Datum <= '30.08.2011' and Personal.ID = 88
and Auftraggeber.Name = 'Test GmbH'
group by Buchungsdatei.Datum, Personal.ID, Personal.Name, Personal.Vorname, Pause, Mehrarbeit,
         Tagesnetto,Auftraggeber.Name // -->gruppieren nach Auftraggeber
Mit diesem SQL zeigt er mir aber wieder nur die Tage im Monat an, für die ein Auftraggeber hinterlegt worden ist. Der SQL soll mir aber alle Tage anzeigen. An Tagen wo kein Auftraggeber hinterlegt ist, soll das Feld eben freigelassen werden.

Bevor ich diese 2 joins eingefügt habe, zeigte er mir noch für alle Tage werte an, nicht nur für Tage an denen auch gearbeitet worden ist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:31 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