Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi on formcreate leere dbedit felder?!? (https://www.delphipraxis.net/17975-formcreate-leere-dbedit-felder.html)

libFelix.so 12. Mär 2004 10:28


on formcreate leere dbedit felder?!?
 
hallo.
ich habe ein prog grschrieben, in dem man daten eingibt, und diese dur klicken eines buttons gespeichert werden. ABER: immer wenn ich das form über F9 testen will, steht in den dbedit-feldern der zu letzt eingegebene datensatz. ich möchte jedoch, dass die dbedit felder leer sind, wenn ich das form öffne. is das irgendwie zu machen???

thx schon mal im vorraus

felix

Cuchulainn 12. Mär 2004 10:33

Re: on formcreate leere dbedit felder?!?
 
Hallo,

bist du sicher, dass du die Felder nirgendwo füllst? Eigentlich sollten sie leer sein, wenn du das Programm startest. Immerhin werden Fenster und Felder neu erstellt.

Michael Leyhe 12. Mär 2004 10:38

Re: on formcreate leere dbedit felder?!?
 
HI

Es sei denn sie sind von anfang nicht leer :-D

libFelix.so 12. Mär 2004 10:38

Re: on formcreate leere dbedit felder?!?
 
das ist der code zum speichern

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Ausgabe - Gesamt Schläge incl. Zu-/Abzüge und Gesamt Drops
  //if Table1.State <> dsEdit then
  //  table1.Edit;
  Table1.Append;

end;

der cod der beim öffnen des forms ausgeführt wir:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
//Tabelle öffnen
table1.Open;


//Namen aus Datei einlesen
with Name do
  begin
    Items.LoadFromFile(extractfilepath(application.exename)+ 'spieler.txt');
  end;

//Orte aus Datei einlesen
with Ort do
  begin
    Items.LoadFromFile(extractfilepath(application.exename)+ 'plaetze.txt');
  end;
end;

libFelix.so 12. Mär 2004 10:40

Re: on formcreate leere dbedit felder?!?
 
und der cod, wo die var's definiert werden:
Code:
if (Name.ItemIndex <> -1) and (Ort.ItemIndex <> -1) then
    begin
      if table1.State <> dsEdit then
      table1.Edit;
    //Einlesen der Variablen
    wupb1 := Table1.FieldByName('Bahn1').AsInteger;
    wupb2 := Table1.FieldByName('Bahn2').AsInteger;
    wupb3 := Table1.FieldByName('Bahn3').AsInteger;
    wupb4 := Table1.FieldByName('Bahn4').AsInteger;
    wupb1d := Table1.FieldByName('Bahn1Drops').AsInteger;
    wupb2d := Table1.FieldByName('Bahn2Drops').AsInteger;
    wupb3d := Table1.FieldByName('Bahn3Drops').AsInteger;
    wupb4d := Table1.FieldByName('Bahn4Drops').AsInteger;

libFelix.so 12. Mär 2004 10:42

Re: on formcreate leere dbedit felder?!?
 
...und: es handelt sich um dbedit felder. die sind in der tabelle feste felder zugeordnet... un um mich noch genauer auszudrücken... es wird nicht immer der zu letzt eingegebende datensatez angezeigt, sondern immer der erste in der tabelle...sry ;)

mschaefer 12. Mär 2004 10:51

Re: on formcreate leere dbedit felder?!?
 
Moin, moin,
hört sich so an, als ob Du neue Felder an die Datenbank anhängen willst
und deshalb brauchst du die leeren Eingabemasken. Das lässt sich machen.

Problem im OnCreate-Ereignis ist noch keine Datenbankverbindung da
hier kann man also noch nichts machen. Das geht erst im OnShow-Ereignis.

Das wird aber nur ausgelöst, wenn visible von false auf true geschaltet
wird und das Formular ffertig aufgebaut ist.

Also:

1. Im OnCreate visible auf false dann wieder auf true;

2. Im OnShow gibtst Du den Befehl "Query.append"
damit sind die Felder dann leer....



Grüße // Martin

Garby 12. Mär 2004 10:57

Re: on formcreate leere dbedit felder?!?
 
Hallo,

DBEdit Felder sind an das Recordset gebunden.
Es werden immer die Werte des aktuellen Datensatzes angezeigt, und dies ist in deinem Fall der erste in der Tabelle.

Imho hast du 2 Möglichkeiten:
1.) du verwendest normale Edits und speicherst die Werte über Insert, bzw. Update befehle oder
2.) du verwendest statt der TTable eine TQuery Komponente.
das würde dann ungefähr so ausschauen:
SQL-Code:
Select *
  From TABELLEN_NAME
 Where UNIQUE_KEY = :Nummer
Wenn du einen leeren DS anzeigen willst:
Delphi-Quellcode:
with Query1 do begin
  Close;
  ParamByName('Nummer').AsInteger := -1; // vorausgesetzt es gibt keinen Wert mit -1 in der Tabelle
  Open;
end;
Ich hoffe es hat dir geholfen.

Garby


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