AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Neues Feld läßt sich nicht beschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Neues Feld läßt sich nicht beschreiben

Ein Thema von BlueStarHH · begonnen am 5. Nov 2017 · letzter Beitrag vom 5. Nov 2017
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#1

Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 19:47
Datenbank: MsSQL • Version: 2008 • Zugriff über: ADO
Hallo,

mit dem folgendem Code frage ich eine Tabelle ab und erweitere das Ergebnis um das Feld b. Dieses möchte ich anschließend beschreiben. Dabei erscheinen die unten angegebenen Fehler:

Code:
Query := TAdoDataset.Create(Self);
Query.Name := 'xyz';
Query.Connection := MyCon;
Query.CursorType := ctStatic;
Query.CursorLocation := clUseClient;
Query.LockType := ltBatchoptimistic;
Query.Close;
Query.CommandText := 'select a, cast(null as integer) as b from aTable where a = ...';
Query.Open;
 
//Erster Versuch
Query.Append;
Query.FieldbyName('b').Value := 4711;
Query.Post; // <-- Exception: EDatabaseError: Feld 'b' kann nicht verändert werden

//Nächster Versuch
Query.Append;
Query.FieldbyName('b').ReadOnly := false;
Query.FieldbyName('b').Value := 4711;
Query.Post; // <-- Feld b wird nach dem Post auf null gesetzt
Wie kann ich ein Wert in b schreiben?

Geändert von BlueStarHH ( 5. Nov 2017 um 19:59 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 20:05
Ein berechnetes Feld oder ein wie auch immer über Funktionen "zusammengestelltes" Feld kann man nicht ändern.
Die Datenbank müsste beim Beschreiben ja quasi, das, was die Funktion macht, "rückwärts" machen, um dann den Wert in die Datenbank zu schreiben, der bei der Ausgabe über die Funktion zu dem übergebenen Ergebnis führt.

Und wenn dann null als Integer gecastet geliefert wird und dahinter noch nicht mal ein reales Datenbankfeld liegt, wo soll die Datenbank denn dann den zugewiesenen Wert hinschreiben?

Was Du da machst wäre ja ungefähr sowas:
update tabelle set null = 4711 where spalte = 'Wert'

Versuch das mal direkt auf der Datenbank, geht das?
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 20:08
Wie bekomme ich dann zusätzliche Daten in jeden Record? Es muss nicht in die DB geschrieben werden. Es reicht wenn das nur so lange existiert, wie die Datenmenge offen ist.
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 20:12
Was Du da machst wäre ja ungefähr sowas:
update tabelle set null = 4711 where spalte = 'Wert'
Wäre das nicht ehr so:
update tabelle set b = 4711 where spalte = 'Wert' Das Feld heißt b und ist mit null initialisiert. Statt null hätte ich auch eine Zahl nehmen können...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 20:18
Was Du da machst wäre ja ungefähr sowas:
update tabelle set null = 4711 where spalte = 'Wert'
Nö, das wäre sowas
update tabelle set b = 4711 where spalte = 'Wert' Das Feld heiß b und ist mit null initialisiert. Statt null hätte ich auch eine Zahl nehmen können...
Nein, b ist kein Feld in der Datenbank und damit kannst Du dem auch keinen Wert zuweisen. B ist lediglich ein Alias auf ein Funktionsergebnis, das kann man nicht in 'nem Update aktuallisieren.

Ansonsten ausprobieren und hier den Nachweis posten, dass das mit Deiner Datenbank funktioniert

Ansonsten zur vorherigen Frage:

ClientDataSet?

Aus der DB befüllen und dann damit machen, was erforderlich ist?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 20:26
Oder eine temporäre Tabelle für die Abfrage anlegen.
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Neues Feld läßt sich nicht beschreiben

  Alt 5. Nov 2017, 21:01
ClientDataSet?

Aus der DB befüllen und dann damit machen, was erforderlich ist?
So habe ich es nun gemacht und es klappt. Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:19 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