AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten editieren mit TQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Daten editieren mit TQuery

Ein Thema von LOMBI · begonnen am 25. Apr 2006 · letzter Beitrag vom 28. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
LOMBI
(Gast)

n/a Beiträge
 
#1

Daten editieren mit TQuery

  Alt 25. Apr 2006, 14:10
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery/DataSource
Hallo,

wie kann ich bitte Daten editieren?

Delphi-Quellcode:
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;
Fehlermeldung: Typkonvertierung von Variant ungültig!

Gruß
Lombi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Daten editieren mit TQuery

  Alt 25. Apr 2006, 14:26
Warum versetzt du den Query in den Edit-Modus?
Markus Kinzler
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#3

Re: Daten editieren mit TQuery

  Alt 25. Apr 2006, 14:47
Um eine gespeicherte Adresse auf der Eingabeform anzeigen zu
lassen und ggf. zu ändern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Daten editieren mit TQuery

  Alt 25. Apr 2006, 14:51
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)?
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Daten editieren mit TQuery

  Alt 25. Apr 2006, 21:36
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:
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;
Verursacht wurde er wahrscheinlich durch einen NULL-Wert in einem der Felder.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Daten editieren mit TQuery

  Alt 25. Apr 2006, 21:56
Zitat:
Bei Desktop-Datenbanken (wie Paradox, Access, dBase) ist aber auch der pessimistische Ansatz keine so große Sünde.
Allerdings neigt ein Programmieren gern dazu, dies auch beizubehalten, wenn er einmal auf "richtige" SQL-Datenbanken umsteigt und dann bekommt u.U. Performanceprobleme bis hin zu Deadlocks.
Aber ich gebe zu das mein Einwand in diesem Fall nicht sein Problem gelöst hat.
Markus Kinzler
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#7

Re: Daten editieren mit TQuery

  Alt 27. Apr 2006, 17:29
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Daten editieren mit TQuery

  Alt 27. Apr 2006, 17:37
Zitat von LOMBI:
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.
Zum Anzeigen brauchst du das .Edit nicht. es dient, wie der Methodennamen schon andeutet, dazu den aktuellen Datensatz in den Editmodus zu versetzen. Das würde ich aber nur machen wenn wirklich geändert werden soll.
Zitat:
Ungern würde ich wieder auf die TTable zurückgreifen.
Werden wir dir bestimmt auch nicht raten.

Zitat:
Ist mit [AktuelleSchlüsselAusAdrListe] der Primärschlüssel aus Paradox-Tabelle Adr gemeint?

Beste Grüße
Lombi
[/quote]Ja.
Markus Kinzler
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#9

Re: Daten editieren mit TQuery

  Alt 28. Apr 2006, 10:18
Das Anzeigenproblem -durch Nullwerte in einem bzw. mehreren Feldern-
habe ich leider noch nicht gelöst.

QueryAdr.SQL.Text := Format ('SELECT*FROM Adr WHERE ID=%d',['ID']); Fehlermeldung: "'%d' ungültig oder inkompatibel mit Argument"

Wer kann bitte helfen?

Gruß
Lombi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Daten editieren mit TQuery

  Alt 28. Apr 2006, 10:23
QueryAdr.SQL.Text := 'SELECT * FROM Adr WHERE ID='+IntToStr(ID);
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:36 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