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: |
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:
Dem OnNewRecord Event der TTable erklärt man jetzt, welche Daten vorzubesetzen sind:
if FirstTime then
begin FirstTime := False; MyTable.Open; MyTable.Append end else ...
Delphi-Quellcode:
Damit ist die Tabelle automatisch im Edit Mode und die Felder sind vorbesetzt.
MyTableFeld1.AsString := 'Blabla';
MyTableFeld2.AsInteger := 17; Denke eventuell daran bei OnClose die Tabelle zu schließen und ggf. FirstTime wieder auf True zu setzen. |
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:
Danke für deine weiterführende Hilfe
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. Megabyte |
Hallo Megabyte,
Delphi-Quellcode:
type
TForm1 = class(TForm) ... private { Private-Deklarationen } FirstTime : Boolean; public { Public-Deklarationen } end; end;
Delphi-Quellcode:
So sollte es funktionieren. :mrgreen:
procedure TForm1.FormActivate(Sender: TObject);
begin If FirstTime then begin FirstTime : = False; rapport.Open rapport.append end end; |
Hallo MRSpock
habe immer noch eine Fehlermeldung in folgendem code irgendetwas stimmt noch nicht :
Delphi-Quellcode:
Als fehler gibt er aus:Declaration expected but IF found
procedure TForm1.FormActivate(Sender: TObject);
If FirstTime then begin FirstTime :=False; rapport.Open rapport.append end; Missing Operator or semicolone could not compile unit1.pas was mache ich falsch cu Megabyte |
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] |
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. |
Hallo ihr Programmierer
Dies funktioniert nur bei fixen Werten ( z.Bsp "Blabla") Zitat:
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 |
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; |
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 |
Hallo Megabyte,
AsDate, AsInteger usw. sind nur Properties, die für dich die Typumwandlung automatisch machen. Natürlich funktionieren nicht alle Umwandlung, so kann ein TStringfeld nicht so einfach als AsInteger verwendet werden. Wenn deine zweite Tabelle nur einen Datensatz mit dem Feld "Bezirk" hat, kannst du das Feld über den Feldeditor hinzufügen, damit kannst du dann über den Tabellennamen mit Feldnamen und der Zugriffsfunktion AsString darauf zugreifen:
Delphi-Quellcode:
Table2.Open;
Table1Feld1.AsString := Table2Bezirk.AsString; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00: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