Hi plautzer, hier meine Lösungsvorschläge:
1.) schreibe die Prozedur setButtons um, indem Du dort 4 Boolean Parameter definierst und bei jedem Aufruf den Zustand für die Buttons übergibst, das erspart die die Case Struktur und Du kannst vor allem die Prozedur in Deinen Navigations Prozeduren (prior, next etc.) verwenden.
2.) Du filterst in den Navigations Prozeduren. Warum? Kannst Du meiner Meinung nach weglassen.
3.) Die erste Zeile von storeClick(Sender: TObject); muss heißen
if Table1.State in [dsInsert, dsEdit] then Table1.Post;
4.) In deleteClick setzt Du die Tabelle auf Edit, was unüblich ist, denn die Tabelle wird automatisch auf Edit gesetzt, wenn über DBGrid oder DBField editiert wird.
5.) newClick(Sender: TObject) sollte so lauten:
Delphi-Quellcode:
table1.Append;
table1['Mietbegin']:=formatdatetime('dd.mm.yyyy', now);
Gepostet werden sollte auch nichts, da der Anwender ja weiter Daten eingeben soll, die Tabelle bleibt also im Status dsInsert (s. Punkt 3.).
6.) Die erste Zeile von cancelClick(Sender: TObject); muss heißen
if Table1.State in [dsInsert, dsEdit] then Table1.Cancel;
7.) Was DBNavigator1Click machen soll ahne ich zwar, kann ich aber aus Deinem Code nicht nachvollziehen.
8.) Button3Click schließlich ist wohl Dein Testbutton. Programmiertechnisch zwar ok, allerdings, das Feld ist ein TAutoIncField, in das sich
Paradox wahrscheinlich nicht reinpfuschen lässt, da das
DBMS den Eintrag selbst vornimmt, das heißt, Du brauchst Dich darum nicht zu kümmern (oder Du setzt einen Server wie Firebird oder Interbase ein, dort gibt es so komische Felder erst mal nicht). Versuche es also mal damit, dass Du ein anderes Feld beschreibst, z.B. Name.
9.) A propos Name, hier wäre es sinnvoll wenn es eine eigene Tabelle "Mieter" gäbe, damit man für einem Mieter mehrere Datensätze pflegen kann. So könnte festgehalten werden, in welchen Zeiträumen ein Mieter welche Konditionen hatte (Mietzins u.a. kann sich ändern).
10.) Zu guter Letzt: Eine Telefonnummer als IntegerField wird über kurz oder lang Probleme machen. Erstens passen nicht alle Nummern dort rein (z.B.34567), zweitens, versuch mal eine 0 oder ein + voranzustellen ;-). Ein TStringField ist hier also günstiger.
Hoffe, das hilft Dir weiter, viel Erfolg