AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Unterschiedliche Ergebnisse Heidi vs TFDQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiedliche Ergebnisse Heidi vs TFDQuery

Ein Thema von Ykcim · begonnen am 11. Apr 2024 · letzter Beitrag vom 12. Apr 2024
Antwort Antwort
Seite 1 von 2  1 2      
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 05:05
Guten Morgen,

da die Queries auf den ersten Blick identisch sind, das Ergebnis aber unterschiedlich, nennt meine Glaskugel 2 mögliche Fehlerquellen:
1. unterschiedliche Datenbanken
2. unterschiedliche Abfragen.

bzgl. 2 meine ich: Im Grid wird halt nicht die Query angezeigt, die du hier zeigst.


Etwas das mich triggert, mit der Frage aber vermutlich nix zu tun hat: Warum ist der Parameter LStream mit einem var deklariert? Das ist hier nicht notwendig, da du den Stream nicht innerhalb der Methode erzeugst.

Grüße
Lemmy
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 06:26
Teste das SQL mit einem anderen Frontend als HeidiSQL.
HeidiSQL habe ich nur kurz genutzt, weil es mir manchmal falsche Ergebnisse geliefert hat.
Peter
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
384 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 07:36
Guten Morgen,

da die Queries auf den ersten Blick identisch sind, das Ergebnis aber unterschiedlich, nennt meine Glaskugel 2 mögliche Fehlerquellen:
1. unterschiedliche Datenbanken
2. unterschiedliche Abfragen.

bzgl. 2 meine ich: Im Grid wird halt nicht die Query angezeigt, die du hier zeigst.


Etwas das mich triggert, mit der Frage aber vermutlich nix zu tun hat: Warum ist der Parameter LStream mit einem var deklariert? Das ist hier nicht notwendig, da du den Stream nicht innerhalb der Methode erzeugst.

Grüße
Lemmy
Die Grid wird wahrscheinlich gesonderte Spaltenbezeichnungen haben und deshalb sind die Namen wohl unterschiedlich.
Aber ich schließe mich in Deiner Vermutung der Möglichkeit 1 an.
Wahrscheinlich sind die Quellen unterschiedlich. Bei Heidi bist Du vielleicht im Testsystem unterwegs und bei den anderen Werten in Live-System?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.443 Beiträge
 
Delphi 12 Athens
 
#4

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 07:53
Der gleiche Artikel...verschiedene Lagerorte? (Bild 1)
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
384 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 08:00
Der gleiche Artikel...verschiedene Lagerorte? (Bild 1)
Warum nicht?
Bei uns gibt es auch Überbestandslagerorte, das muss also kein Fehler sein.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#6

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 09:12
Jo, oder "Masse" und ein Ort reicht nicht.
Wir haben es auch bei einigen Kunden, welche auch teilweise eigene Lagerorte für bestimmte Maschienen haben, oder auch mehrere Produktionshallen usw.
Ein Kunde hat auch ein extra Lager für einen seiner Kunden, der bei sich kein Lager hat.
...


nur das Bewegung und Lagerort falsch?

Nja Datum könnte sein, wenn MAX und GROUP in falscher Reihenfolge (MAX auf Alles oder nur die Gruppe).
Und der Lagerort, wenn vorm Gruppieren eine andere Reihenfolge, bzw. welcher der Datensätze beim GROUP dann genommen wird.

Aber das Query sollte doch in der DB (Datenbankserver) ausgeführt werden und demnach kann es doch eigentlich keinen Unterschied machen, welcher Client das Ergebnis abruft?
Ist ja nicht sowas wie SQLite, wo der Client die eigentlich Arbeit macht und die DB nur die Daten hält.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Apr 2024 um 09:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#7

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 09:19
Warum eigentlich ADD (hoffentlich wird irgendwamm mal ein CLEAR nicht vergessen) und nicht einfach TEXT?

PS: Delphi 12 und MultiLineStrings
Code:
      MsQuery.SQL.Text := '''
        SELECT
          h.afg__ref AS BD_ArtikelNr,
          a.zynrefkl AS Kd_ArtikelNr,
          a.afg_oms1 AS Bezeichnung,
          max(h.kla__ref) AS Kd_Nummer,
          max(h.kla__rpn) AS Kd_Name,
          max(h.datum___) AS Bewegung,
          h.vak__ref AS Lagerort
        FROM hisafg__ h
        LEFT JOIN afgart__ a ON a.afg__ref = h.afg__ref
        WHERE h.afg__ref = :BDArtikelID
        GROUP BY
          h.afg__ref,
          a.zynrefkl,
          a.afg_oms1,
          h.vak__ref
        ORDER BY MAX(h.datum___) DESC
      ''';

      MsQuery.SQL.Add('''
        SELECT
        ...
        ORDER BY MAX(h.datum___) DESC
      ''');
Implizite AS hasse ich irgendwie. Würde mir eher wünschen man könnte sowas deaktivieren.
Hier hatten wir mal ein Komma vergessen und uns gewundert, warum ein Feld den komplett falschen Inhalt hat ... klar, war ja der Inhalt des anderen Feldes.
FROM hisafg__ AS h
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Apr 2024 um 09:23 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#8

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 09:28
Hallo Zusammen,

das ist mir jetzt peinlich, aber der Fehler lag ganz woanders - und ich habe tagelang danach gesucht...
Mir hat der EInwand von Lemmy keine Ruhe gelassen und ich habe mir die Daten direkt an Ausführung der Query in einem Array anzeigen lassen - und siehe da, in dem waren sie korrekt.

Ich hatte Schwierigkeiten, dass die Daten nicht sauber über den Stream an den Client übertragen wurden und habe daher verschiedene Wege ausprobiert, die ich hier aber nicht gepostet hatte. Einer der Wege, führte die Query erneut aus (das hatte ich übersehen). Und da die Query vorher nicht geleert wurde (himitsu), kam Murgs dabei raus.

Logic.Set_Query(MsQuery, DB_Modul.MSConnect); Hier wird zwar sichergestellt, dass die Query leer ist, aber wenn man sie später erneut ausführt (völlig sinnfrei) hätte sie ebenfalls leergemacht werden müssen.

Vielen Dank, Eure Anregungen haben mir sehr geholfen!
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#9

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 09:41
Hier wird zwar sichergestellt, dass die Query leer ist, aber wenn man sie später erneut ausführt (völlig sinnfrei) hätte sie ebenfalls leergemacht werden müssen.
Warum eigentlich ADD (hoffentlich wird irgendwamm mal ein CLEAR nicht vergessen) und nicht einfach TEXT?
siehe #10
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
198 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 12. Apr 2024, 09:59
Edit: sorry, hat sich zeitlich überschnitten, hast ja die Lösung schon.

Wenn ich das richtig sehe liegen die Unterschiede in der Art welche Zeilen der Server bei GROUP BY liefert. Das könnte durchaus mit dem verwendeten Treiber zusammenhängen. In HeidiSQL verwende ich für MS SQL den Data.Win.ADODB.TAdoConnection mit folgendem ConnectionString:

Code:
Provider=MSOLEDBSQL;
Password="...";
Persist Security Info=True;
User ID=...;
Network Library=DBMSSOCN; <-- nur bei TCP/IP
Data Source=.\SQLExpress; <-- oder was auch immer als Host eingetragen wurde
Application Name=HeidiSQL;
DataTypeCompatibility=80; <-- siehe https://learn.microsoft.com/en-us/sql/connect/oledb/applications/using-ado-with-oledb-driver-for-sql-server?view=sql-server-2017
Du kannst das ja testweise auch mal mit der TAdoConnection probieren.
Ansgar Becker
https://www.heidisql.com
Wenn du loslässt, hast du zwei Hände frei.

Geändert von anse (12. Apr 2024 um 10:01 Uhr)
  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 14:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz