Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#1

Unterschiedliche Ergebnisse Heidi vs TFDQuery

  Alt 11. Apr 2024, 22:47
Datenbank: MsSql • Version: Com • Zugriff über: FireDac
Hallo Zusammen,
ich habe ein Phänomen, dass ich mir nicht erklären kann... Ich baue meine SQL-Statements mit HeidSQL zusammen und übertrage sie dann in meine Software. Das hat bislang auch immer gut geklappt.
Jetzt habe ich aber ein Statement, welches mir in HeidiSQL das richtige Ergebnis liefert, aber in meinem Programm ein anderes...

Hier das SQL-Statement:
Delphi-Quellcode:
procedure TMxSQL.Get_StockMovements(KDArtikelNr, BDArtikelNr: string; var LStream: TMemoryStream);
var Logic: TLogic;
      MsQuery: TFDQuery;
      MsQryArtikelNr: TFDQuery;
begin
   Logic := TLogic.create;
   Logic.Set_Query(MsQuery, DB_Modul.MSConnect);
   Logic.Set_Query(MsQryArtikelNr, DB_Modul.MSConnect);
   Try
      if KDArtikelNr <> 'then begin
         MsQryArtikelNr.SQL.Add('select max(afg__ref) as afg__ref from afgart__ where zynrefkl = :KdArtikelNr');
         MsQryArtikelNr.ParamByName('KdArtikelNr').AsString:= KDArtikelNr;
         MsQryArtikelNr.Open;
         BDArtikelNr:= MsQryArtikelNr.FieldByName('afg__ref').AsString
      end;

      MsQuery.SQL.Add('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.ParamByName('BDArtikelID').AsString:= BDArtikelNr;
      MsQuery.Open;

      if Assigned(LStream) then begin
         LStream:= QryToStream(MsQuery);
      end;
   Finally
      MsQuery.Free;
      MsQryArtikelNr.Free;
      Logic.Free;
   End;
end;
Die beiden Ergebnisse und das HeidiSQL-Statement hänge ich als Bilder an. Bei Result_HeidiSQL bekomme ich richtiger Weise unterschiedliche Bewegungsdaten mit den unterschiedlichen Lagerorten. Bei Result_TFDQuery sind die Bewegungsdaten und Lagerorte identisch, nämlich wie die älteste Bewegung.

Die Tatsache, dass das Ergebnis unterschiedlich ist, verunsichert mich...

Kann mir jemand da etwas zu sagen?

Vielen Dank
Patrick
Miniaturansicht angehängter Grafiken
result_heidisql.jpg   result_tfdquery.jpg   sqlstatement_hidisql.jpg  
Patrick
  Mit Zitat antworten Zitat