![]() |
Datenbank: MsSQL • Version: 2008 • Zugriff über: ADO
Neues Feld läßt sich nicht beschreiben
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:
Wie kann ich ein Wert in b schreiben?
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 |
AW: Neues Feld läßt sich nicht beschreiben
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:
SQL-Code:
update tabelle set null = 4711 where spalte = 'Wert'
Versuch das mal direkt auf der Datenbank, geht das? |
AW: Neues Feld läßt sich nicht beschreiben
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.
|
AW: Neues Feld läßt sich nicht beschreiben
Zitat:
SQL-Code:
Das Feld heißt b und ist mit null initialisiert. Statt null hätte ich auch eine Zahl nehmen können...
update tabelle set b = 4711 where spalte = 'Wert'
|
AW: Neues Feld läßt sich nicht beschreiben
Zitat:
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? |
AW: Neues Feld läßt sich nicht beschreiben
Oder eine temporäre Tabelle für die Abfrage anlegen.
|
AW: Neues Feld läßt sich nicht beschreiben
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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 by Thomas Breitkreuz