AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )
Thema durchsuchen
Ansicht
Themen-Optionen

TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

Ein Thema von Emwykey · begonnen am 26. Feb 2019 · letzter Beitrag vom 27. Feb 2019
Antwort Antwort
Seite 1 von 3  1 23      
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#1

TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 12:51
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
Hallo Zusammen,

ich hole per SQL mit einem TFDQuery über Select * From XXX den Inhalt einer Tabelle. Ich möchte die bestehenden Daten in einem neuen Query leicht verändert wieder via Insert als neuen Datensatz speichern. Es soll eine Routine für mehrere verschiedene Tabellen geben, daher möchte ich das ganze variabel programmieren. Ich erstelle aus den mit dem Select gefundenen Daten und der Felderdefinition im TFDQuery also mein Insert Query. Mein Problem ist, dass wenn in einer Tabelle Computed Fields vorhanden sind diese beim Insert natürlich einen Fehler verursachen. Wie kann ich über die Felder aus meinem Select Query oder die Felderdefinition ermitteln, ob es sich um ein Berechnetes Feld handelt oder nicht?
Die Optionen ReadOnly und FieldKind funktionieren bei mir leider nicht ( ReadOnly ist immer false, FieldKind immer fkData ).
Ich erstelle das Query per Create, ordne die Connection zu, schreibe den SQL in den SQL Text und öffne die Daten mit Open. Muss ich vielleicht noch einen weiteren Schritt machen, damit mir der FieldKind korrekt angezeigt wird? Oder suche ich ganz an der falschen Stelle?

Edit: Die Variable Calculated ist ebenfalls false

Lieben Dank im Voraus!

Geändert von Emwykey (26. Feb 2019 um 13:05 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#2

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 13:17
Zitat von Delphi 7-Hilfe:
InternalCalcField (Eigenschaft von TFieldDef)

property InternalCalcField: Boolean;
Also z. B.:
Delphi-Quellcode:
for i := 0 to TFDQuery.FieldCount - 1 do begin
  if TFDQuery.Fields[i].InternalCalcField then begin
    // berechnete Logik
  end else begin
    // unberechenbare Logik
  end;
end;
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#3

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 13:32
Hallo, danke für die Antwort, die Eigenschaft ist leider auch false

hier mal ein Code Ausschnitt, vielleicht fällt ja noch was auf:
Code:

  QuCloneData := TFDQuery.Create( nil );
  QuCloneData.Connection := fConnection;
  QuCloneData.Sql.Text := 'Select * from !Tabelle ';
  QuCloneData.MacroByName( 'Tabelle' ).AsRaw := fTableName;
  QuCloneData.Open;

  for i := 0 to QuCloneData.Fields.Count-1 do begin
    if ((  not QuCloneData.FieldDefs[i].InternalCalcField )
    and ( AnsiUpperCase(QuCloneData.Fields[i].FieldName) <> AnsiUpperCase( fKeyFieldName ) )) then begin
      if Trim( FieldString ) <> '' then begin
        FieldString := FieldString + ',';
        ParamString := ParamString + ',';
      end;
      FieldString := FieldString + QuCloneData.Fields[i].FieldName;
      ParamString := ParamString + ':' + QuCloneData.Fields[i].FieldName;
    end;
  end;
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 13:58
Und was verbirgt sich hinter !Tabelle?

Mal ein Createstatement, damit man 'nen Vorstellung davon bekommt, was gemeint sein könnte?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 14:04
Quark, kann weg.

Sorry

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 14:09
Berechnete Felder in TDataSet und berechnete Felder in der Datenbank sind zwei verschiedene Paar Schuhe:
- Berechnete Felder in TDataSet sind lokal berechnet, d.h. mittels einer OnCalcField Methode, etwa für eine spezielle Darstellung in einem Grid o.ä.
- Berechnete Felder in der Datenbank ("Computed By") sind hingegen auf dem Server berechnet.
Jede Datenbank hat spezielle Tabellen oder Views für Informationen über die Datenbankstruktur selbst. Dort musst Du nach den Tabellenfeldern suchen und nachschauen, ob diese berechnet sind.
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#7

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 14:13
Berechnete Felder in TDataSet und berechnete Felder in der Datenbank sind zwei verschiedene Paar Schuhe:
- Berechnete Felder in TDataSet sind lokal berechnet, d.h. mittels einer OnCalcField Methode, etwa für eine spezielle Darstellung in einem Grid o.ä.
- Berechnete Felder in der Datenbank ("Computed By") sind hingegen auf dem Server berechnet.
Jede Datenbank hat spezielle Tabellen oder Views für Informationen über die Datenbankstruktur selbst. Dort musst Du nach den Tabellenfeldern suchen und nachschauen, ob diese berechnet sind.

Ja, das ist mir bekannt, hab es zwischenzeitlich auch so gelöst, ich fänd es aber dennoch klasse wenn es eine Option direkt über das Dataset gäbe ohne die Systemtabellen händisch abfragen zu müssen. Wenn also jemand noch was einfällt immer her damit

Geändert von Emwykey (26. Feb 2019 um 14:19 Uhr)
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#8

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 14:16
Und was verbirgt sich hinter !Tabelle?

Mal ein Createstatement, damit man 'nen Vorstellung davon bekommt, was gemeint sein könnte?

Dahinter verbirgt sich der Name einer Tabelle, die an die Funktion übergeben wird, da die Funktion dann für viele verschiedene Tabellen aufgerufen wird. Das wird dann mit der Funktion MacroByName( 'Tabelle' ).AsRaw := fTableName komplettiert
  Mit Zitat antworten Zitat
Emwykey

Registriert seit: 27. Aug 2013
51 Beiträge
 
#9

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 14:18
Quark, kann weg.

Sorry

Sherlock
muss ich das jetzt verstehen?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

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

AW: TFDQuery Select - Ermitteln ob ein Feld Berechnet ist ( Computed Field )

  Alt 26. Feb 2019, 14:23
Lässt Du von FireDAC die Metadaten einlesen?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:53 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