Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Index-Diskriptor (https://www.delphipraxis.net/378-index-diskriptor.html)

MrSpock 10. Jul 2002 12:06

Nein, absolut korrekt. Wenn "Name" der Schlüssel ist und dieser auch ausgewählt ist (was immer der Fall ist, wenn es sich um den primary key handelt und dieser nicht explizit abgewählt wird), dann ist dein Code korrekt. Es muss also an einem nicht richtig initialisierten Objekt oder so etwas liegen. Wie ist "meld" deklariert? Tritt der Fehler schon bei Open auf?

Privateer3000 10. Jul 2002 12:49

yo, schon beim Start des Programmes.
meld wird als var meld: string; dekl.

beim start kommt eine inputbox:

meld:=inputbox('Eingabe','Bitte den Namen eingeben!','');

und jetzt kommts:
findkey soll nachgucken ob der eingegebene Name schon
in Datamodule9 bzw. in dessen table2 exisitert.

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
meld:=inputbox('Eingabe','Bitte den Namen eingeben!','');
if meld=('') then
begin
Showmessage('Kein Name angegeben!');
meld:=inputbox('Eingabe','Bitte den Namen eingeben!','');
end;
with DataModule9 do
begin
Table2.Open;
if Table2.FindKey([meld]) then
showmessage('Name existiert schon!');
end;
.
.
.

usw
so siehts aus...

MrSpock 10. Jul 2002 13:03

Hallo Privateer3000,

versuchs mal mit :

Code:
if meld='' then ...
Die runden Klammern sind dort falsch. Außerdem könnte es sein, dass während FormCreate das Datenmodul noch gar nicht korrekt initialisiert ist. Deshalb wäre es besser die Abfrage in der OnActivate-Methode zu implementieren (mit der firstTime Variable, wie ich es schon mal beschrieben habe.)

Privateer3000 10. Jul 2002 15:52

Das wars auch !
Ich habe
with DataModule9 do
begin
Table2.Open;
if Table2.FindKey([meld]) then
showmessage('Name existiert schon!');
end;

in onActivate ausgelagert, jetzt gehts.
Also ist der Zugriff bei FormCreate zu früh..siehste wusst ich auch noch nicht.

Besten Dank Spocki

MrSpock 10. Jul 2002 16:06

Gern geschehen.

Beachte aber bitte, dass Activate nicht nur einmal am Anfang, sondern auch dann ausgeführt wird, wenn z.B. ein minimiertes Fenster wieder vergrößert wird. Deshalb solltest du die Abfrage:
Code:
if FirstTime then
begin
   FirstTime := False;
   { hier der Code, der nur einmal ausgeführt werden soll }
end;
{ hier der Code, der immer ausgeführt werden soll }
Dabei in FormCreate

Code:
FirstTime := True;
vorbesetzen. FirstTime ist dabei im privat - Abschnitt der Form als Boolean deklariert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 2 von 2     12   

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