Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Updaten (https://www.delphipraxis.net/320-updaten.html)

Privateer3000 3. Jul 2002 07:28


Updaten
 
Hi Leuts,

ich habe mit 'Tools / Datenbankoberfläche' in Delphi ein Tabelle erstellt.
Wie man mit den DBNavigator umgeht ist klar, und einfach.
Aber wie gebe ich Daten bzw. update ich diese ohne diesen??
In meinem Programm wird durch Klcik auf einen Radio(1-4) ein Wert(1-4) einem Label zugewiesen.Dieser wird im Laufe der Zeit mehrmals aktualisiert.Also soll nach einem Radio-Klick der neue Wert im Label(geht schon) aber auch in der Tabelle aktualisiert werden.

Grüsse

sakura 3. Jul 2002 08:12

Warujm nutzt Du nicht die RadioButtons aus der DB Palette, diese machen das doch völlig selbständig :?:
:cat:

Privateer3000 3. Jul 2002 08:20

Kannst Du mir mal bitte ein praktisches Beispiel mit diesen geben???

MrSpock 3. Jul 2002 08:25

Hallo Privateer3000,

du mußt die entsprechenden Methoden dann beim Drücken des entsprechenden Schalters "manuell" Aufrufen.

Code:
{ zum Editieren }
Table1.Edit;

{ zum speichern }
Table1.Post;

{ zum Navigieren }
Table1.First;
Table1.Last;
Table1.Next;
Table1.Prior;

{ zum neu Einfügen }
Table1.Insert;

Privateer3000 3. Jul 2002 10:53

Hi Schpocki :wink:

was ist der Unterschied zwischen Edit und Post und Insert,
ich meine in meinem Fall?!

Weil der Wert ist ja immer schon vorhanden, am Anfang ist er '0'.
Weil ich am Programmanfang zB Label1Caption:= 0; aufrufe.

Ist das ein Edit oder Post dann?

Grüsse

MrSpock 3. Jul 2002 12:00

Hallo Privateer3000,

wenn du den Datensatz, den du updaten willst bereits ausgewählt hast und die Tabelle geöffnet ist, dann ist die Anweisungsfolge so:

Code:
try
  Table1.Edit;
  Table1.FieldByName('RadioBtnWert').AsInteger := RadioBtn;
  Table1.Post;
except
   on exception do
   begin
      { Fehlermeldung ausgeben }
      ...
      Table1.Cancel;
   end;
end;
Dabei muss Table1 durch den echten Tabellennamen, der Feldname 'RadioBtnWert' durch deinen Feldnamen ersetzt werden und RadioBtn auf der rechten Seite der Zuweisung durch den Wert 1-4 ersetzt werden, den du auch dem Label zuweist. Aber Achtung: ich habe hier AsInteger geschrieben, deshalb muss hier im Gegensatz zum Label ein Integer-Wert übergeben werden.

Privateer3000 3. Jul 2002 12:49

Danke Spocki,

werde das gleich ausprobieren zu Hause, bin ja noch im Büro :(

Privateer3000 3. Jul 2002 18:57

Hi Spocki,

wie ist das...
kann ich eine verbindung persistent zu einer Datenbank öffnen,
weil in diesem Programm mit 2 zwei Tabellen gearbeitet wird müsste die DB immer ansprechbar sein?Oder ist diese "eigentlich immer da"?
Beispielsweise über Datamodule2.Table2......immer greifbar?
Oder wird sie schon über Table2.Edit geöffnet?

Desweiteren muss die Anwendung wissen in welche Zeile geschrieben werden muss.
Das heisst, beim Start der Anwendung soll ein neuer Satz generiert werden der so heisst wie der Anwender als Namen in der inputbox am Anfang eingibt.
Dieser Satz wird mit diesen Punkten der Radios "gefüttert".Erst beim Schliessen der Anwendung ist der Datensatz fertig.

Ich hoffe das ich das irgendwie rüberbringen konnte :wink:
Mein Gott...in PHP wär ich längst fertig

Danke!

MrSpock 3. Jul 2002 19:47

Hallo Privateer3000,

du kannst einen ALIAS als "Ersatznamen" für ein Verzeichnis über die BDE definieren. Mit jedem TTable Objekt kannst du auf eine Tabelle jederzeit zugreifen. Damit du mit der Tabelle etwas machen kannst, musst du sie öffnen:

Code:
Datamodule2.Table2.Open;
Edit ohne vorherigen Open löst eine exception aus.

Angenommen der Anwender heißt MrSpock und der Wert steht in der Variablen "Anwender", außerdem hast du einen Schlüssel auf das Feld Name der Tabelle Table2 definiert, dann kannst du am Anfang folgendes schreiben:

Code:
with Datamodule2 do
begin
  Table2.Open;
  if Table2.FindKey([Anwender]) then
      { Anwender Datensatz existiert schon }
     Table2.Edit
  else begin
      Table2.Insert;
      Table2.FieldByName('Name').AsString := Anwender;
  end;
  { jetzt die Felder setzen }
  ...
  Table2.Post;
  Table2.Close;
end;
Das Ganze wie immer im try except Block und ein Table2.Cancel im Falle einer exception.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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