AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sperren: Exeption wenn auf letztem Datensatz
Thema durchsuchen
Ansicht
Themen-Optionen

Sperren: Exeption wenn auf letztem Datensatz

Ein Thema von Gambit · begonnen am 2. Jun 2003 · letzter Beitrag vom 3. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Sperren: Exeption wenn auf letztem Datensatz

  Alt 2. Jun 2003, 00:29
Hallo,

meine Datenbank öffnet schreibgeschützt, also nichts ist editierbar. Nun habe ich eine Routine eingebaut, die den Schreibschutz aufhebt, damit sich ZB DBEdits editieren lassen:

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var pos: TBookmark; // Lesezeichen
begin
  pos:= Query1.GetBookmark; // Position merken
  Query1.Active:= false;
  if CheckBox1.Checked= true then Query1.RequestLive := false //sperren
  else Query1.RequestLive := true; // Sperre aufheben
  Query1.Active:= true;
  Query1.GotoBookmark(pos); // Position wiederherstellen
end;
Das funzt soweit auch ganz gut, es sei denn, ich stehe gerade auf dem letzten Datensatz. Wenn ich dann sperren oder entsperren will bekomme ich ein Exeption mit der Fehlermeldung:

Gitternetz außerhalb des zulässigen Bereichs.

Wie kommt denn das und wie kann man dem abhelfen?

Gruß

Gambit
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#2
  Alt 2. Jun 2003, 00:33
Hi,

ich glaube nicht das Bookmarks überhaupt ein schließen der Tabelle überleben.
Wenn deine Tabelle einen Primärindex auf einem Feld hat, dann merke dir doch einfach den Primärkey und nach dem öffnen machst du einfach ein Query.Locate ...
Wenn locate keine übereinstimmmung findet, geht es einfach zum nächsten Datensatz.

Gruß Neo
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3
  Alt 2. Jun 2003, 00:41
ist das etwa eine CD?
Gruß
Hansa
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#4
  Alt 2. Jun 2003, 00:46
Also anfangs hatte ich das Ganze mit ner TTable gemacht, da klappte das mit den Bookmarks. Obs mit der Query noch klappt probier ich morgen. Aber die Exeption kam auch bei der TTable schon. Möcht bloß wissen wieso?

Gambit

P.S was meinst du denn mit CD?
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 2. Jun 2003, 00:48
Achso, ohne Bookmarks kam die Exeption auch...

Gambit
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#6
  Alt 2. Jun 2003, 00:53
Hi,

wie lautet die Exception ?
Wenn du eine Query über mehrere Tabellen machst, kann man diese nicht editieren und dann führt RequestLive zu einer Exeption.

Und noch was, Bookmarks müssen mit Free wieder freigegeben werden, sonst hast du ein Speicherleck !

Poste doch mal die Komplette Funktion ohne Bookmark ...

Gruß Neo
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#7
  Alt 2. Jun 2003, 08:20
Moin!

Was meinst du denn mit schick mal die ganze Funktion? Das ist doch die ganze Methode. Also ich glaube auch, RequestLive hat da unmittelbar gar nichts mit zu tun, es passiert ja auch, wenn ich Table1.ReadOnly:=False bei einer Table statt einer Query benutze.

Die Exeption ist eine der Klasse EInvalidGridOperation die Fehlermeldung hatte ich ja schon gepostet.

Und, es ist nur eine Tabelle.

Könntest du mir denn etwas genauer erklären, wie ich mir ich mir den Primärindex merken kann, dann probier ich das mal?

Gruß

Gambit
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#8
  Alt 2. Jun 2003, 19:56
Jetzt raff ich gar nix mehr...mach die DBGrid von der Breite her kleiner, klappt alles ohne Probs. Mach ich sie breiter kommt die Exeption.

Das soll mal wer schnallen...

Gambit
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#9
  Alt 2. Jun 2003, 21:05
Hallo,

mach das Grid unsichtbar (visible=false),
dann schließ die Tabelle und öffne sie erneut,
dann Grid wieder einschalten. Scheinbar stimmt die Anzahl der Spalten nicht mehr nach dem erneuten öffnen.

Alternativ vorher noch Grid.Dataset :=nil
und anschließend neu zuweisen.

sag mal Bescheid ob das hilft...

Gruß Neo
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#10
  Alt 2. Jun 2003, 22:11
Wie meinst du das jetzt genau? In die oben genannte Routine einbauen?

Ich bin im Moment völlig confused...

Gambit

P.S

Vielleicht könntest du das in die Routine oben mal reinschreiben?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.
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