Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sperren: Exeption wenn auf letztem Datensatz (https://www.delphipraxis.net/5326-sperren-exeption-wenn-auf-letztem-datensatz.html)

Neo2084 2. Jun 2003 21:52

Hallo,

och mann..... :lol:

Code:
procedure TForm1.CheckBox1Click(Sender: TObject);
var //pos: TBookmark; // Lesezeichen
    id : Integer;
begin
  //pos:= Query1.GetBookmark; // Position merken
  id :=Query1Feld1.AsInteger; // wenn du z.B. ein Feld mit einem Qunique-ID Index hast
  Query1.Active:= false;
  Grid.Visible :=False;
  Application.ProcessMessages;
  Grid1.Datasource :=nil;
  Application.ProcessMessages;
  try
     if CheckBox1.Checked= true then Query1.RequestLive := false //sperren
    else Query1.RequestLive := true; // Sperre aufheben
    Query1.Active:= true;
  finally
     //Query1.GotoBookmark(pos); // Position wiederherstellen
     Grid1.Datasource :=Query1DS; // oder wi auch immer das Dataset heißt ;-)
     Grid1.Visible :=True;
     try
        query1.locate ('FELD1',Variant(id),[]); // Position wiederherstellen
     except
        // hier Fehlermeldung
     end;
  end;
end;
so, das ganze ist aber ungetestet, F1 ist aber dein Freind ;-)

Gruß Neo, der jetzt essen geht :wink: , mist dafür gibt es keinen Smiley !

Gambit 3. Jun 2003 08:27

Ich hab mal ne ganz neue Form basierend auf der Tabelle gemacht und der Fehler ist weg. Wer weiß warum...
@Neo: Vielen Dank für deine Mühe. Könntest du mir noch sagen, wie und wo genau ich die Free Methode anwenden muss?

Gruß

Gambit

Neo2084 3. Jun 2003 08:49

Hallo,

hier mal ein Codeschnipsel von mir ...

Code:
procedure TMakeEKReForm.PosTabAfterDelete(DataSet: TDataSet);
var bm : tBookmark;
    p : Integer;
begin
     PosTab.DisableControls;
     BM :=PosTab.GetBookmark;
     try
        p :=0;
        postab.first;
        while not postab.eof do
        begin
          inc(p);
          postab.edit;
          try
             postabposition.asinteger :=p;
             postab.post;
          except
             // Hier Fehlermeldung
          end;
          postab.next;
        end;

        PosTab.GotoBookmark (BM);
     finally
        PosTab.FreeBookmark (BM);
     end;
     PosTab.EnableControls;
end;
Noch ein le. Tip, du solltest dich unbedingt mit Schutzblöcken
- try finally end
- try except end
mal auseinandersetzen, so was ist sehr wichtig, wenn man guten Code schreiben will.

Gruß Neo

Gambit 3. Jun 2003 10:28

also Try except ist mir aus Java, was wir in der Schule, lernen gut bekannt. Was Try Finally angeht, das kenn ich noch nicht, werde aber deinen Rat befolgen und mich damit beschäftigen.

Und wahrscheinlich muss man alle Komponenten vom Typ Pointer wieder freigeben? Also wie in C++? Oder schmeiß ich da nu wieder was durcheinander?

Gruß

Gambit


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:58 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