Entwickler-Ecke

Datenbanken - ein Click zuviel bei table1.eof (gelöst)


Klaus22 - Sa 31.01.04 17:53
Titel: ein Click zuviel bei table1.eof (gelöst)
hai zusammen,

ich habe mal wieder ein problem: ich habe in meinem programm einen button, welcher jeweils bei click einen datensatz in meinem dbgrid weiterspringt. ist der letzte erreicht möchte ich diesen deaktivieren. das funktioniert auch, aber erst wenn ich beim letzten markierten noch einmal auf den button klicke. da ist der letzte satz im dbgrid aber schon markiert. folgenden code habe ich verwendet.

Delphi-Quelltext
1:
2:
3:
table1.next;
if table1.eof = true then
btnNext.enabled := false;

weiß jemand wie das zu realisieren ist ?

kann man die standardfarbe blau, bei markierten datensätzen auch ändern ?

gruß + danke

Moderiert von user profile iconKlabautermann: Topic Verschoben. Code durch Delphi-Tags ersetzt.


Delete - Sa 31.01.04 19:03

Du hast 100 DS. Nun, woher soll die DB wissen, dass nach dem DS 100 keiner mehr kommt? Das kann sie erst feststellen, wenn sie versucht den 101'sten anzuspringen. ;)


fränk0815 - Sa 31.01.04 19:22

Eventuell könnte das so klappen:


Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
button1.enabled := not DataSet.Eof;
end;


Moderiert von user profile iconKlabautermann: Code durch Delphi-Tags ersetzt.


jjturbo - Di 03.02.04 11:39

Bei Paradox gehts so:

Button1.Enabled:=Table1.RecNo < Table1.RecordCount;

Bei DBase darfst Du die Datensatznummern so nicht verwenden. Da würrde ich es so lösen:

Table1.Next;//Das wäre der gewünschte Datensatz...

//Jetzt noch prüfen, ob das der letzte Datensatz ist
Table1.Next;
if Table1.Eof
then Button1.Enabled:=false
else Table1.Prior;


Gruß, jjturbo


Klaus22 - Di 03.02.04 12:42

:P Danke für die vielen Tipps. Folgender Code und es funzt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button9Click(Sender: TObject);
begin
 if Table1.RecNo = Table1.RecordCount-1 then
   begin
     table1.Next;
     Button9.Enabled := false
   end
 else
  begin
   table1.Next;
  end;
 end;


Vielen Dank nochmal für Eure Tipps !

mfg Klaus :D


jjturbo - Di 03.02.04 13:16

Aber Achtung!!!
RecNo bei DBase-Tabellen funktioniert nicht! Wenn in einer leeren, neu erstellten DBase-Tabelle z.B. fünf Datensätze eingepflegt werden, so haben diese die Datensatznummern 1-5. Wird jetzt der Datensatz mit der Nummer 3 gelöscht und ein neuer Datensatz eingefügt, so haben die Datensätze jetzt die Nummern:1,2,4,5,6 !!!

Append und Insert bei einer DBase-Tabelle hängen immer Daten an die Tabelle an. Wirklich Daten einfügen geht hier nicht. Zumindest habe ich noch keine Möglichkeit dafür gefunden. Ein Grund mehr auf Paradox umzusteigen ;-)

Gruß, jjturbo