AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi automatisches post bei scroll verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

automatisches post bei scroll verhindern

Ein Thema von sancho1980 · begonnen am 8. Aug 2006 · letzter Beitrag vom 10. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#1

automatisches post bei scroll verhindern

  Alt 8. Aug 2006, 15:58
Datenbank: firebird • Version: 1.5 • Zugriff über: fibplus
hi

habe folgendes problem: wenn ich in meinem prog einen datensatz ändere (also wenn in edit-modus gegangen wird) und ich - ohne explizit mit dem navigator zu posten - im dataset scrolle, dann wird automatisch die änderung die ich gemacht habe gepostet. das will ich aber nicht...die änderung soll dann gecancelt werden.

hatte mir batürlich gedacht im handler des beforescroll-ereignisses einfach folgendes einzubauen:

Delphi-Quellcode:
procedure TDataModule1.DataSetDicEntriesBeforeScroll(DataSet: TDataSet);
begin
  try
    Dataset.Cancel();
  except
  end;
end;
aber der post findet schon statt bevor dieses ereignis abgefeuert wird, und da isses ja schon zu spät
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: automatisches post bei scroll verhindern

  Alt 8. Aug 2006, 16:39
Hallo Martin,

du kannst das Speichern im Ereignis OnBeforePost() durch eine silent exception (Abort) verhindern. Allerdings solltest du dann ein Flag einführen, welches dir noch ein gewolltes Speichern erlaubt:

Delphi-Quellcode:
procedure TDataModule1.DataSetDicEntriesBeforePost(DataSet: TDataSet);
begin
  with DataSet do
    if Tag = 0 then
      Cancel();
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#3

Re: automatisches post bei scroll verhindern

  Alt 8. Aug 2006, 20:06
Zitat von marabu:
Hallo Martin,

du kannst das Speichern im Ereignis OnBeforePost() durch eine silent exception (Abort) verhindern. Allerdings solltest du dann ein Flag einführen, welches dir noch ein gewolltes Speichern erlaubt:

Delphi-Quellcode:
procedure TDataModule1.DataSetDicEntriesBeforePost(DataSet: TDataSet);
begin
  with DataSet do
    if Tag = 0 then
      Cancel();
end;
Grüße vom marabu
OnBeforePost..das Ereignis gibt es leider nicht Gibt OnPostError, aber das wohl was anderes
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: automatisches post bei scroll verhindern

  Alt 8. Aug 2006, 20:16
Du mußt Dir die Dokumentation von FIBplus unbedingt genauer ansehen ! Es gibt zum Bsp. gerade mit dem Scrollen ein Zeitintervall, das man einstellen kann. Da geht es allerdings um das "Nachladen" von Detail-Datensätzen. Könnte trotzdem in dem Fall sogar hilfreich sein. So viele Tutos, wie die mittlerweile haben sind echt sehr selten zu finden !
Gruß
Hansa
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#5

Re: automatisches post bei scroll verhindern

  Alt 8. Aug 2006, 20:23
kunststück, nach den dokus hatt ich schon mehrmals gesucht...in meinem fib-verzeichnis gibs lediglich die verzeichnisse examples, source und tools. und in der readme steht auch nix weltbewegendes.
bin ich zu blöd? sag jetz bitte nicht google, da hab ichs natürlich auch schon versucht?
echt? da gibs viele tutos zu? wo?
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: automatisches post bei scroll verhindern

  Alt 8. Aug 2006, 22:15
Hechel, was ? Neben Google gibt es viel interessantere Homepages, z.B. die von Devrace, dem Hersteller von FIBplus. Und dort sind zig Downloads von Artikeln zu finden. Bei mir liegen bestimmt 200 ausgedruckte Seiten rum. Ca. das 10fache ist noch gezippt oder nur kurz überflogen. Den Rest habe ich noch nicht mal gesichtet.

Falls das hier doch stimmen sollte :

Zitat von sancho1980:
bin ich zu blöd?
www.devrace.com

Gruß
Hansa
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#7

Re: automatisches post bei scroll verhindern

  Alt 9. Aug 2006, 22:17
hmmm
okay, die hilfe hab ich gefunden, tutos immer noch net
naja, trotzdem hab ich immer noch keine lösung für mein problem gefunden
kennt sich da echt keiner aus?
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: automatisches post bei scroll verhindern

  Alt 10. Aug 2006, 15:54
Hallo Martin,

ich bleibe bei meinem Vorschlag von neulich - siehe Beitrag #2. Deine Komponente DatasetDicEntries (TFIBDataSet?) erbt laut Produktdokumentation (fibplus6_45) das Ereignis OnBeforePost() von TDataSet. Warum findest du dieses Ereignis nicht im Object Inspector?

Grüße vom marabu
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#9

Re: automatisches post bei scroll verhindern

  Alt 10. Aug 2006, 16:50
reden wir von der gleichen sache?

Zitat:
In TFIBDataSet

AfterCancel
AfterClose
AfterDelete
AfterEdit
AfterInsert
AfterOpen
AfterPost
AfterRefresh
AfterScroll
BeforeCancel
BeforeClose

BeforeDelete
BeforeEdit
BeforeEndUpdateTransaction
BeforeInsert
BeforeOpen
BeforePost
BeforeRefresh
BeforeScroll

Derived from TFIBCustomDataSet
AfterEndTransaction

AfterEndUpdateTransaction
AfterFetchRecord
AfterStartTransaction
AfterStartUpdateTransaction
BeforeEndTransaction

BeforeFetchRecord
BeforeStartTransaction
BeforeStartUpdateTransaction
DatabaseDisconnected
DatabaseDisconnecting

DatabaseFree
OnCompareFieldValues
OnDisableControls
OnEnableControls
OnEndScroll
OnFieldChange

OnFillClientBlob
OnGetRecordError
OnUpdateError
OnUpdateRecord
TransactionEnded
TransactionEnding

TransactionFree

Derived from TDataSet
OnCalcFields
OnDeleteError
OnEditError
OnFilterRecord
OnNewRecord
OnPostError
Aber die Idee mit dem Flag war gut. Was ich momentan gemacht habe, ist im BeforeAction des Navigators folgenden Code einzuführen:

Delphi-Quellcode:
procedure TWBWin.DBNavigator4BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
  if Button = nbPost then
    TDataModule1(self.Owner).DicentriesMayPost := true;
end;
Das Posten sieht dann folgendermaßen aus:

Delphi-Quellcode:
procedure TDataModule1.DataSetDicEntriesBeforePost(DataSet: TDataSet);
begin
      if (not self.DicentriesMayPost) then
      begin
        self.DataSetDicEntries.Cancel();
        abort();
      end
      else
        self.DicentriesMayPost := false;
end;
Der einzige Nachteil, den das hat, ist natürlich, dass wenn ich durch das Dataset scrolle während es im Edit-Mode ist, dann wird einfach nurgecancelt und dann abgebrochen (also der Pointer bleibt auf dem Eintrag); ich muss dann noch ein zweites Mal scrollen, damit's dann wirklich zum nächsten oder vorherigen Eintrag geht...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: automatisches post bei scroll verhindern

  Alt 10. Aug 2006, 17:33
Zitat von sancho1980:
reden wir von der gleichen sache?
Aber sicher doch. Die von dir zitierte Auflistung gehorcht eigenen Gesetzen - OnBeforePost() wird definitiv von TDataSet eingeführt.

Hättest du nur gleich den DBNavigator erwähnt. Wenn der record pointer ausschließlich über diesen Navigator bewegt wird, dann kannst du sogar ohne Flag arbeiten:

Delphi-Quellcode:
procedure TDemoForm.DBNavigatorBeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
  with (Sender as TDBNavigator).DataSource.DataSet do
    if (Button in [nbFirst, nbLast, nbPrior, nbNext])
    and (State <> dsBrowse) then
      Cancel;
end;
Getippt und nicht getestet.

Grüße vom marabu
  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 11:17 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