Einzelnen Beitrag anzeigen

plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#3

Re: Tabellen springen zum letzten Datensatz, warum?

  Alt 23. Jun 2004, 17:03
Nagut, dann geben ich euch mal einen kleinen Einblick in meien quelltext:

Delphi-Quellcode:
procedure TMietverwaltung.FormCreate(Sender: TObject);
var
pfad,tabellen, name, ext: string;
a:integer;
begin
  pfad := ExtractFilePath(Application.ExeName);
  name := ExtractFileName(Application.ExeName);
  ext := ExtractFileExt(Application.ExeName);
  tabellen:=pfad + 'tabellen';
  with Table1 do DatabaseName := tabellen;
  with Table2 do DatabaseName := tabellen;
IF NOT FileExists(tabellen + '\daten.DB') THEN
        BEGIn
        if not ForceDirectories(tabellen) then
        ShowMessage('Beim Anlegen von '+Tabellen+' ist ein Fehler aufgetreten! Bitte überprüfen Sie ob Schreibzugriff auf den Datenträger der Mietprogramm.exe haben..');

        with Table1 do
                begin
                active := false;
                DatabaseName := tabellen;
                tabletype := TTParadox;
                tablename := 'daten';
                Name := 'Table1';

        with FieldDefs do
                begin
                 clear;
                     Add('Whg', ftinteger, 0, false);
                     Add('Name', ftString, 50, false);
                     Add('Vorname', ftstring, 50, false);
                     Add('Mietbegin', ftDate, 0, false);
                     Add('Bemerkung', ftString, 100, false);
                     Add('telefon', ftinteger, 0, false);
                     Add('Bruttomiete', ftcurrency, 0, false);
                     Add('Nettomiete', ftcurrency, 0, false);
                     Add('Nebenkosten', ftcurrency, 0, false);
                     Add('Kaltwasser', ftcurrency, 0, false);
                     Add('Warmwasser', ftcurrency, 0, false);
                     Add('Müll', ftcurrency, 0, false);
                     Add('Fernwärme', ftcurrency, 0, false);
                     Add('Antenne', ftcurrency, 0, false);
                     Add('HMService', ftcurrency, 0, false);
                end;

        WITH indexdefs DO BEGIN
        clear;
        Add('Whg', 'Whg', [ixprimary, ixunique]);
      END;

        CreateTable;
        table1.Open;
        vordefinieren;
        end;
        IF NOt FileExists(tabellen + '\kosten.DB') THEN
        BEGIN
        with Table2 do
                begin
                active := false;
                DatabaseName := tabellen;
                tabletype := TTParadox;
                tablename := 'kosten';
                Name := 'Table2';

        with FieldDefs do
              begin
                 clear;
                     Add('id', ftinteger, 0, false);
                     Add('Datum', ftDate, 0, false);;
                     Add('Bruttomiete', ftcurrency, 0, false);
                     Add('Bezahlt', ftcurrency, 0, false);
                     Add('Offen', ftcurrency, 0, false);
                end;
  CreateTable;

         end;
        end;

                setbuttons(1);
                table1.Open;
                table2.Open;
                vordefinieren;
        end
        else begin
                setbuttons(1);
                table1.Open;
                table2.Open;
                end;

brutto_summe;

a:=table1.RecordCount;
dbtext2.caption:=inttostr(a);
                table2.Filtered:=false;
                table2.Filter := ('id =' + inttostr(table1whg.Value));
                table2.Filtered:=true;


  if ((e_whg.Text='') and (e_name.Text='')) then
        begin
        dbgrid1.Enabled:=false;
        table1.Edit;
        table1.Delete;
        end
  else dbgrid1.Enabled:=true;
  summe;
end;
Master/detail verbindung habe ich nicht, nur 2 tabellen, die (per filter) zusammen einen mieter ergeben.
Active setzte ich diese garnicht,
das eonzige was ich mache ist table.open;
Ich wüsste auch garnicht warum ich diese active setzen sollte, ich sehe da keien unterschied.
Die Keine der Tabelle ist indiziert.

Ich wäre euch dankbar wenn ihr mir noch heute helfen könntet, da ich das programm morgen abgeben muss.

Plautzer
  Mit Zitat antworten Zitat