AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Manipulation eines Records in einer FDQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Manipulation eines Records in einer FDQuery

Ein Thema von Ykcim · begonnen am 15. Jun 2023 · letzter Beitrag vom 19. Jun 2023
 
Ykcim

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

Manipulation eines Records in einer FDQuery

  Alt 15. Jun 2023, 08:24
Datenbank: MsSQL • Version: 14 • Zugriff über: FireDac
Guten Morgen Zusammen,

seit einigen Tagen verzweifle ich an dem Versuch, einen Wert in einem Feld in einer FDQuery zu ändern. Der Hintergrund besteht darin, dass ich die Information von einem anderen Datenbank-Server abrufen muss und deshalb nicht alles in der gleichen Query durch führen kann...

Delphi-Quellcode:
MsQuery.SQL.Add('SELECT TOP 1 '+
                                'CASE WHEN ( '+
                                  'concat(rj.JOB_ID, ' + QuotedStr(' ') + ', JOB_NAME) is NULL) then '+
                                  'LAG(Concat(rj.JOB_ID, ' + QuotedStr(' ') + ', rj.JOB_NAME)) OVER (ORDER BY re.TIME_LOCAL DESC) ELSE '+
                                  'concat(rj.JOB_ID, ' + QuotedStr(' ') + ',rj.JOB_NAME) end AS JOB_NAME, '+
                                'CONVERT( varchar( 10 ), re.Time_Local, 104 ) AS Datum, '+
                                'convert(char(5), re.Time_Local, 108) AS Startzeit, '+
                                'rd.device_id, '+
                                'rd.device_name, '+
                                'ro.OPERATION_NAME, '+
                                'concat(ry.FIRST_NAME,' +QuotedStr(' ') + ', ry.FAMILY_NAME) AS Operator, '+
                                
...

                         'ORDER BY re.TIME_LOCAL desc ');
         MsQuery.ParamByName('Device_ID').AsString := Machine_ID;
         MsQuery.Open;
         DB_Modul.Write_LM_Protokoll('Refresh Daten Maschine ' + Machine_ID);


         CDMQuery.SQL.Clear;
         CDMQuery.sql.Add('select * from CDM_SM_DEVICE_OP_STATUS '+
                          'where deviceID = :Device '+
                          'and roleID = ' + QuotedStr('ID_Operator'));
         CDMQuery.ParamByName('Device').AsString := MsQuery.FieldByName('device_id').AsString;
         CDMQuery.Open;

         CDMQuery.First;
         MsQuery.First;
         MsQuery.Edit;
         MsQuery.FieldByName('Operator').AsString := CDMQuery.FieldByName('userID').AsString;
         MsQuery.Post;
Ich bekomme erst die Meldung: "Feld Operator kann nicht geändert werden." Das wird wahrscheinlich daran liegen, dass es sich um ein virtuellen Feld, das aus zwei Feldern zusammengesetzt wird.
Wenn ich es dann mit einem anderen Feld teste, bekomme ich die Meldung: "Invalid Field Columnname 'JOB_NAME'.

Das verstehe ich nicht, denn mit diesem Feld mache ich nichts. Es ist aber das erste Feld der MsQuery, sodass ich davon ausgehe, dass er das bei den anderen Feldern auch sagen würde.

Ich habe aber abgeprüft, und vor dem Post ist das Feld vorhanden und hat einen korrekten Wert.

Sieht jemand, was ich falsch mache?

Vielen Dank Patrick
Patrick
  Mit Zitat antworten Zitat
 


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 13:27 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