Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Paramter-Übergabe (SQL) (https://www.delphipraxis.net/193264-paramter-uebergabe-sql.html)

localh0st 10. Jul 2017 10:12

Delphi-Version: 10 Berlin

Paramter-Übergabe (SQL)
 
Folgendes Problem:

Ich habe in meiner TFDQuery mein SQL-Statement mit Parametern hinterlegt. Lasse ich das Statement über die TFDQuery laufen, zeigt es mir auch die korrekten Daten an.

Im Code rufe ich das ganze folgendermaßen auf:

Delphi-Quellcode:
AQuery.Active := false;
  AQuery.ParamByName('BENUTZER').AsString := Combobox.Text;
  AQuery.ParamByName('ZEIT1').AsString := Von;
  AQuery.ParamByName('ZEIT2').AsString := Bis;
  AQuery.Active := true;
Zeit1 und Zeit2 sind String-Variablen, die auch vorher den korrekten Wert enthalten. Der Benutzer wird auch korrekt übergeben.

Im Ergebnis "frisst" das Statement aber die Parameter nicht und das Endergebnis zeigt die wildesten Sachen an. Es funktioniert sowohl in der TFDQuery-Anzeige, als auch in der Workbench. Nur in der Endausgabe von Delphi nicht.

Darlo 10. Jul 2017 10:18

AW: Paramter-Übergabe (SQL)
 
Was sind denn die Zeiwerte für Datentypen in der Datenbank?

localh0st 10. Jul 2017 10:29

AW: Paramter-Übergabe (SQL)
 
Zitat:

Zitat von Darlo (Beitrag 1376345)
Was sind denn die Zeiwerte für Datentypen in der Datenbank?

Also die Datentypen stimmen überein. Er erkennt die Zeitwerte auch problemlos und gibt mir die Daten für den Zeitraum aus.
Er erkennt nur z.B. den Benutzer nicht, das Feld (ich erzeuge eine DB-Tabelle und exportiere die nach Excel) ist immer leer.

Auch soll er einfach Daten nehmen, die er laut TFDQuery auch bekommt (z.B. den Mitarbeiter Resturlaub und die Gesamtstunden der Arbeitszeit). Aber er gibt da einfach nur zusammenhanglosen Schwachsinn aus.

jobo 10. Jul 2017 10:30

AW: Paramter-Übergabe (SQL)
 
Zitat:

Zitat von Darlo (Beitrag 1376345)
Was sind denn die Zeiwerte für Datentypen in der Datenbank?

Man könnte das abkürzen und schlicht fordern:
Es müssen Datumstypen sein!

Entsprechnd gehören die Parameter Wert Zuweisung in Delphi als Datumstypen übergeben. Schon wäre alles gut.

jobo 10. Jul 2017 10:32

AW: Paramter-Übergabe (SQL)
 
Zitat:

Zitat von localh0st (Beitrag 1376349)
.. Aber er gibt da einfach nur zusammenhanglosen Schwachsinn aus.

Mmh das klingt nicht gut, ist aber auch zur Fehlerfindung nicht hilfreich.
Vielleicht mal ein Beispiel geben? Vielleicht bei einem Problem bleiben (Datumsabfrage)?
Würde bedeuten, User Parameter erstmal raus.

p80286 10. Jul 2017 10:36

AW: Paramter-Übergabe (SQL)
 
Zitat:

Zitat von localh0st (Beitrag 1376344)
Zeit1 und Zeit2 sind String-Variablen, die auch vorher den korrekten Wert enthalten. Der Benutzer wird auch korrekt übergeben.

Im Ergebnis "frisst" das Statement aber die Parameter nicht und das Endergebnis zeigt die wildesten Sachen an. Es funktioniert sowohl in der TFDQuery-Anzeige, als auch in der Workbench. Nur in der Endausgabe von Delphi nicht.

Nun ja es soll ja noch Datenbanken geben in denen ein TimeDate-Typ unbekannt ist da ist der TE wohl gezwungen sich mit den Fehlern und Missinterpretationen von Strings herum zu schlagen.

Was steht denn in der Query? (der vollständige Text wäre schon nicht schlecht)

Gruß
K-H

Edith:
wenn in Excel nicht das Erwartete ankommt, wundert mich das nicht. Kommt denn das Erwartete aus der DB heraus?
(Debugger)

hoika 10. Jul 2017 10:42

AW: Paramter-Übergabe (SQL)
 
Hallo,

Delphi-Quellcode:
  AQuery.Active := false;
  AQuery.ParamByName('BENUTZER').AsString := Combobox.Text;
  AQuery.ParamByName('ZEIT1').AsString := Von;
  AQuery.ParamByName('ZEIT2').AsString := Bis;
  AQuery.Active := true;
Das ist zuwenig Quellcode.
Wie sieht die Query aus ("Select X from Y"), welche DB wird verwendet und welche Datentypen haben die 3 Felder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 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