Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Neuer Datensatz automatisch erstellen (https://www.delphipraxis.net/1519-neuer-datensatz-automatisch-erstellen.html)

Megabyte 5. Dez 2002 11:12


Neuer Datensatz automatisch erstellen
 
Hallo zusammen

wie bringe ich Delphi dazu beim öffnen eines Formulars(neuer Datensatz)
automatisch einen neuen Datensatz zu erstellen. Gewisse Felder wie Zeit
und Datum sollten vorausgefüllt sein.

wer weiss dazu eine Lösung. :angle2:

Danke für die Hilfe

cu Megabyte :coder:

MrSpock 5. Dez 2002 11:46

Hallo Megabyte,

ich würde das in die OnActivate Methode packen, damit es aber nur bei der ersten Aktivierung ausgeführt wird, benutze ich eine Variable FirstTime: Boolean, die in OnCreate auf True gesetzt wird, dann kann man bei OnActivate folgendes machen:

Delphi-Quellcode:
if FirstTime then
begin
  FirstTime := False;
  MyTable.Open;
  MyTable.Append
end
else ...
Dem OnNewRecord Event der TTable erklärt man jetzt, welche Daten vorzubesetzen sind:

Delphi-Quellcode:
  MyTableFeld1.AsString := 'Blabla';
  MyTableFeld2.AsInteger := 17;
Damit ist die Tabelle automatisch im Edit Mode und die Felder sind vorbesetzt.

Denke eventuell daran bei OnClose die Tabelle zu schließen und ggf. FirstTime wieder auf True zu setzen.

Megabyte 5. Dez 2002 13:00

Hallo MR.Spock

wie kann ich die Variable Firsttime in die OnActivate und OnCreate packen.Wie muss cih den Code für OnActivate abändern. Habe nur Fehlermeldungen von Unit1.pas .Was mache ich falsch ?
Delphi-Quellcode:
var
  Form1: TForm1;
  FirstTime: Boolean;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
If FirstTime then
begin
    FirstTime : = False;
     rapport.Open
     rapport.append
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FirstTime := True;
end;

end.
Danke für deine weiterführende Hilfe


Megabyte

MrSpock 5. Dez 2002 14:32

Hallo Megabyte,

Delphi-Quellcode:
type
  TForm1 = class(TForm)
   ...
  private
    { Private-Deklarationen }
     FirstTime  : Boolean;
  public
    { Public-Deklarationen }
  end;
end;
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin
  If FirstTime then
  begin
    FirstTime : = False;
    rapport.Open
    rapport.append
  end
end;
So sollte es funktionieren. :mrgreen:

Megabyte 5. Dez 2002 15:09

Hallo MRSpock

habe immer noch eine Fehlermeldung in folgendem code irgendetwas stimmt noch nicht :
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
If FirstTime then
begin
    FirstTime :=False;
     rapport.Open
     rapport.append
end;
Als fehler gibt er aus:Declaration expected but IF found
Missing Operator or semicolone
could not compile unit1.pas

was mache ich falsch
cu Megabyte

sakura 5. Dez 2002 15:15

Du hast das begin vergessen!
Code:
procedure TForm1.FormActivate(Sender: TObject);
[color=#ff0000]begin[/color]
If FirstTime then
begin
    FirstTime :=False;
     rapport.Open
     rapport.append
end;
// weiteres
// und natürlich
[color=#ff0000]end;[/color]

harrybo 5. Dez 2002 15:54

Hi Megabyte,

es sieht so aus, als sei Deine Variable FirstTime dazu da, nur beim ersten Aktivieren der Form den Code zu durchlaufen. Extra zu diesem Zweck gibt es Form-Ereignis "OnCreate". Es wird im Gegensatz zu OnActivate nur ein einziges Mal, nämlich, wie der Name schon sagt, beim Erzeugen der Form aufgerufen. Wenn Du also den Code in "OnCreate" legst, kannst Du Dir den FirstTime-Trick sparen.

Megabyte 5. Dez 2002 17:00

Hallo ihr Programmierer

Dies funktioniert nur bei fixen Werten ( z.Bsp "Blabla")
Zitat:

Dem OnNewRecord Event der TTable erklärt man jetzt, welche Daten vorzubesetzen sind:
Delphi-Quellcode:
 MyTableFeld1.AsString := 'Blabla';
  MyTableFeld2.AsInteger := 17;
Damit ist die Tabelle automatisch im Edit Mode und die Felder sind vorbesetzt.
1.Wie mache ich dies wenn aus einer andern Datenbanktabelle ein Wert vorgegeben wird dieser aber geändert werden kann bevor das ganze in die
geöffnete Tabelle gespeichert wird?

2 Wie kann ich das aktuelle Datum oder die aktuelle Zeit vorbesetzen?

Danke für die Hilfe bin Delphi-Neuling und am lernen

cu Megabyte

MrSpock 5. Dez 2002 18:20

Hallo Megabyte,

dazu musst du auch die zweite Tabelle öffnen, den gewünschten Datensatz der 2. Tabelle auswählen z.B. mit Locate oder FindKey und dann:
Delphi-Quellcode:
  MyTableFeld1.AsString := Table2Ort.AsString;
  MyTableFeld2.AsInteger := Table2HausNr.AsInteger;
  MyTableHeute.AsDateTime := date;
  MyTableJetzt.AsDateTime := now;

Megabyte 5. Dez 2002 18:53

Danke so gehts


muss ich die .AsDateTime ,.AsString , .AsInteger Variablen irgendwo noch registieren ?

Wie muss ich genau den Code für die aus der 2 Tabelle stammenden Werte erstellen(es ist nur 1 Datensatz ind der Tabelle "Stamm" vorhanden.Das Feld heisst "Ort" respektive "Bezirk")?

Cu Megabyte


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
Seite 1 von 2  1 2      

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