![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery/DataSource
Daten editieren mit TQuery
Hallo,
wie kann ich bitte Daten editieren?
Delphi-Quellcode:
Fehlermeldung: Typkonvertierung von Variant ungültig!
TAdrListe.BtnEditClick(Sender: TObject); //Daten ändern
... with FAdr.QueryAdr do begin SQL.Text := 'SELECT * FROM Adr'; Open; Edit; FAdr.EditName.Text := FAdr.QueryAdr['Name']; FAdr.EditVorname.Text := FAdr.QueryAdr['Vorname']; ... end; Gruß Lombi |
Re: Daten editieren mit TQuery
Warum versetzt du den Query in den Edit-Modus?
|
Re: Daten editieren mit TQuery
Um eine gespeicherte Adresse auf der Eingabeform anzeigen zu
lassen und ggf. zu ändern. |
Re: Daten editieren mit TQuery
Zum Auslesen muß sicg die Datenmeneg nicht im Edit-mosus befinden und sollte sie auch nicht. Was für Typen haben die Datanbankfelder? hast du es schon mit DBEdits versucht? Alternative Ausleseverfahren( FieldByName)?
|
Re: Daten editieren mit TQuery
Hallo Lombi,
was wahrscheinlich nicht jedem sofort klar ist - du möchtest eine Benutzerschnittstelle ohne die datensensitiven DB-Controls gestalten. Außerdem bemühst du dich um den Einsatz von Queries anstelle von Tables. Ein Problem beim konkurrierenden Zugriff auf einen Datensatz ist stets die Konsistenzerhaltung. Zwei Sperrverfahren sind da weithin bekannt. Pessimistisches Sperren entspricht dem Vorgehen "Ressourcenbeschaffung - Operation - Ressourcenfreigabe", wie du es an vielen Stellen in deinem Programm anwendest. Bei Datenbanken (Okay - Paradox ist nicht wirklich ein RDBMS) ist dieses Verfahren allerdings verpönt, da es erfahrungsgemäß hohe Transaktionszahlen durch eine unnötig lange Lebensdauer der Sperren verhindert. Favorisiert wird mehr das Optimistische Sperrverfahren, bei dem man annimmt "es wird schon nicht schief gehen" und über einen timestamp stellt das RDBMS intern fest, ob doch etwas schief gegangen ist. Wenn Markus dich auffordert, die Edit-Methode beim Auslesen zu meiden, dann sicher deswegen, weil auch er ein Anhänger des optimistischen Verfahrens ist. Bei Desktop-Datenbanken (wie Paradox, Access, dBase) ist aber auch der pessimistische Ansatz keine so große Sünde. Dein SQL-Statement ist sicher nur ein Schnellschuss, in deiner Anwendung wirst du mit der Query oft genau einen einzigen Datensatz besorgen (WHERE ID = 4711). Deinen Bearbeitungsdialog solltest du so gestalten, dass er für INSERT und UPDATE verwendet werden kann. Wenn du ihm eine public Methode function Execute(ds: TDataSet): Boolean; spendierst wirst du dein Ziel wohl am schnellsten erreichen. Deinen Konvertierungsfehler kannst du vielleicht so vermeiden:
Delphi-Quellcode:
Verursacht wurde er wahrscheinlich durch einen NULL-Wert in einem der Felder.
TAdrListe.BtnEditClick(Sender: TObject); //Daten ändern
... with FAdr do begin QueryAdr.SQL.Text := Format('SELECT * FROM Adr WHERE ID = %d', [AktuellerSchluesselAusAdrListe]); QueryAdr.Open; EditName.Text := QueryAdr.FieldByName('Name').AsString; EditVorname.Text := QueryAdr.FieldByName('Vorname').AsString; // ... QueryAdr.Close; end; Freundliche Grüße vom marabu |
Re: Daten editieren mit TQuery
Zitat:
Aber ich gebe zu das mein Einwand in diesem Fall nicht sein Problem gelöst hat. |
Re: Daten editieren mit TQuery
Danke zunächst für die Meldungen! Ich bin davon ausgegangen, dass die
Query ähnlich der TTable verwendet wird, also mit Query.Edit ein bestehender Datensatz in der Detailansicht geändert werden kann. In einem früheren Versuch konnte ich mit Table.Edit ohne weiteres die Daten anzeigen lassen. Wie bitte könnte ich denn das genauer mit der "function Execute" bewerkstelligen? Bei Grundlagen-und Profiwissen von Doberenz habe ich nicht das Richtige gefunden. Ungern würde ich wieder auf die TTable zurückgreifen. Ist mit [AktuelleSchlüsselAusAdrListe] der Primärschlüssel aus Paradox-Tabelle Adr gemeint? Beste Grüße Lombi |
Re: Daten editieren mit TQuery
Zitat:
Zitat:
Zitat:
|
Re: Daten editieren mit TQuery
Das Anzeigenproblem -durch Nullwerte in einem bzw. mehreren Feldern-
habe ich leider noch nicht gelöst.
Delphi-Quellcode:
Fehlermeldung: "'%d' ungültig oder inkompatibel mit Argument"
QueryAdr.SQL.Text := Format ('SELECT*FROM Adr WHERE ID=%d',['ID']);
Wer kann bitte helfen? Gruß Lombi |
Re: Daten editieren mit TQuery
Delphi-Quellcode:
QueryAdr.SQL.Text := 'SELECT * FROM Adr WHERE ID='+IntToStr(ID);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 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