![]() |
Datenbank: Firebird • Version: 2.51 • Zugriff über: IBDAC
Werte in Query ändern und committen
Moin,
ich bin nach längerer Pause mal wieder mit meiner DB-Anwendung beschäftigt. Ich habe eine Query, die mir Messdaten aus verschiedenen Tables einsammelt. Dazu gehört auch ein Zeitstempel. Ich würde gerne die Anwendung so erweitern, dass die Messungen zu zeitlich unterschiedlichen Zeitpunkten partiell stattfinden können. Dazu müssten die bestehenden Daten eingelesen und ihr Zeitstempel verändert werden um Kopien und damit Redundanzen zu vermeiden. Die vorherige Messung würde damit Teil einer neueren Messung. Vermutlich fehlt mir nur eine Kleinigkeit: ich kann die Werte in der Query nicht überschreiben, da ich nicht im Editiermodus bin. Meine Frage: wie muss ich die Query konfigurieren damit ich geänderte Werte sicher in die DB zurück bekomme? Ich bin da ein wenig unsicher weil ich dort Daten seit 2006 zerschießen könnte. Danke, Messie |
AW: Werte in Query ändern und committen
dataset.edit und Du kannst den Satz editieren.
Aber vielleicht ist das auch gar nicht das Problem. Du schreibst von mehren Quellen. Eine solche Query ist idR nicht editierbar, bzw. es ist nur die Kerntabelle einer Query editierbar. |
AW: Werte in Query ändern und committen
Als erste erst mal die daten sichern!
Ist die Query zum lesen oder schreibt sie in die DB ? und man kann über Parameter mit der Query arbeiten zB query.sql.add(select * from Tabelle where Zeitstempel = :Zeit); dann query.parambyname('Zeit').AsVariant := Now; query.ExecSQL; |
AW: Werte in Query ändern und committen
Zitat:
Genau da schwimme ich wie gewöhnlich :oops: Was ist wie verknotet? Wenn ich Dich richtig verstehe sammele ich mir in der Query die Indizes der entsprechenden Datensätze der Messdatentabelle ein und mache dann ein UPDATE der jeweiligen Sätze? @Texas: ich gehe über ein Query.open dran. Das ist nur readonly. Kann ich mit einen ExecSQL auch direkt schreiben? Grüße, Messie |
AW: Werte in Query ändern und committen
ExecSQL führt die Query neu aus und zwar mit dem Wert den man über den Parameter setzt.
kannst du mal den query.sql text zeigen. Bei query.open würde ich sagen das gelesen wird. |
AW: Werte in Query ändern und committen
Zitat:
Besser query.sql.Text := 'select * from Tabelle where Zeitstempel = :Zeit'; [/QUOTE] Zitat:
Zitat:
Zitat:
Ob eine Ergebnismenge editierbar ist hängt von der Abfrage ab. Z.B. funktioniert das bei Joins ohne Nacharbeit nicht. |
AW: Werte in Query ändern und committen
Zitat:
Solange man nicht weiss was die Query eigentlich macht :roll:, solange kann man auch messie bei seiner Frage nicht richtig weiterhelfen |
AW: Werte in Query ändern und committen
Zitat:
|
AW: Werte in Query ändern und committen
Zitat:
Wie sieht das alte System aus? Wie soll das neue aussehen? Soll neu und alt kompatibel sein? (Stichwort "..Daten bis 2006 zerschießen..") Angenommen Du hast: 3 Tabellen ta, tb, tc mit Messdaten, die Daten werden über ein Kriterium gejoint und ausgegeben Messung_ID Teile dieser Daten sollen aktualisiert werden Dann benötigst Du 3 Update Statements, die das je Tabelle durchführen. Update ta set m1=.., m2=.. mn=.., zeitstempel=:zsneu where Messung_ID=:id; Nach Bedarf ebenso für tb, tc. Das wäre ein mögliches Vorgehen zur Korrektur "einer" Messung. Kann aber auch ganz anders gemacht werden, je nach Anforderung. |
AW: Werte in Query ändern und committen
Zitat:
Warum 3 Tabellen? Werte von drei Meßstellen? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 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-2025 by Thomas Breitkreuz