Seite 1 von 1
Funktion abbrechen
Verfasst: Do, 18.06.2009 16:49
von keksi1970
Hi,
also ich habe eine Funktion erstellt, die eine Verbindung zu einer Datenbank aufbaut. (dBase/ HSQLDB)
Um einen "gleichzeitigen" Zugriff aus diese Datenbank im Netzwerk zu verhindern, habe ich einfach einen Dialog (nur eine Statusbar mit bitte warten) erstellt, der erscheint, wenn die Datenbank "gelockt" ist und in einer Endlosschleife läuft (do while fileexist(datenbankname.odb.lck)) .
N un würde ich gerne eine Abbrechenschaltfläche in diesem Dialog erstellen. Das Problem ist, daß das Makro, welches auf diese Funktion zugreift, anscheinend weiterläuft, wenn ich die Funktion abbreche.
Ich möchte aber, daß beim klick auf die Schaltfläche alle Makros Beendet werden.
LG
Andreas
Re: Funktion abbrechen
Verfasst: Do, 18.06.2009 18:45
von turtle47
Hallo Andreas,
ich meine das mal so gelöst zu haben.
Erstelle eine Sub für das Abbrechen
Über Deiner Schleife schreibst Du
In Deine Schleife baust Du dann folgendes ein:
Code: Alles auswählen
If Abbruch = 1 then
msgbox "Abbruch durch Benutzer"
Exit Sub
End if
Die "Sub Abbrechen" legst Du dann auf eine Schaltfläche.
Ich hoffe das hilft.
Jürgen
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 17:10
von keksi1970
Hi Jürgen,
hab ich irgendwie schon probiert,
daß Problem ist, ich rufe eine Funktion durch eine Sub auf, diese durchläuft die Schleife und solange die Datenbank nicht geschlossen ist, funktioniert meine Schaltfläche nicht (übrigens auch das "X" nicht, zum Schliessen des Dialoges (?)
LG
Andreas
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 17:33
von eBayer
Hallo Andreas,
in Deiner Schleife rast Du mit Höchstgeschwindigkeit vom Anfang zum Ende zum Anfang...... (ich würde vermuten, daß die Przessorauslastung das auch ausweist)
Ohne es getestet zu haben, gehe ich davon aus, daß Du der Anwendung schlicht keine Zeit gibst, was anderes zu tun.
Bau doch einfach mal ein Wait 100 ein. Das unterbricht die Schleife kurz reicht aber trotzdem vollkommen aus, auf auf Den Abbruchbutton zu reagieren.
Schließlich ist es ohnehin unsinnig, im millisekundenbereich die fileexist-Abfrage durchzuführen.
Gruß und viel Erfolg
eBayer
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 18:03
von keksi1970
eBayer hat geschrieben:Hallo Andreas,
in Deiner Schleife rast Du mit Höchstgeschwindigkeit vom Anfang zum Ende zum Anfang...... (ich würde vermuten, daß die Przessorauslastung das auch ausweist)
Ohne es getestet zu haben, gehe ich davon aus, daß Du der Anwendung schlicht keine Zeit gibst, was anderes zu tun.
Bau doch einfach mal ein Wait 100 ein. Das unterbricht die Schleife kurz reicht aber trotzdem vollkommen aus, auf auf Den Abbruchbutton zu reagieren.
Schließlich ist es ohnehin unsinnig, im millisekundenbereich die fileexist-Abfrage durchzuführen.
Gruß und viel Erfolg
eBayer
hab ich , sogar 500 (muß ja Zeit haben, daß .lck zu löschen, das Betriebssystem)

Ausserdem sieht man sonst den hübschen Fortschrittsbalken nicht so toll
Code: Alles auswählen
function getConnection
DIm sUrl as string
Dim a as integer
Dim b as integer
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dialoglibraries.Loadlibrary("Standard")
WarteDlg = CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
WarteControl = WarteDlg.getControl("ProgressBar1")
sUrl = "L:\MeineDatenBank.odb.lck"
sUrl = ConvertToUrl(sUrl)
WarteControl.model.progressvaluemax = 40
'Do while Fileexists(sUrl)
' WarteDlg.visible = true
' If b = 0 then
' a = a +1
' else
' a = a -1
' End If
'WarteControl.value = a
'If a = 40 then b = 1
'If a = 0 then b = 0
'wait 500
'loop
WarteDlg.visible = false
oDatabaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDatasource = oDatabaseContext.getbyname("file:///L:/MeineDatenbank.odb")
oConnection = oDatasource.getConnection("","")
oVerbindung = oConnection
End Function
dasd ist übrigens ein Teil des Codes
LG
Andreas ( die Warteschleife ist ausgeREMT, weil ich sie auf einem Einzelplatz nicht brauche)
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 18:29
von eBayer
und trotzdem das Problem?
Das würde den Schuß nahelegen, daß Dein Fortschrittsbalken, der ja in einem eigenen Dialog läuft, Deine Interaktion verhindert.
Der Dialog ist ja modal und läßt keinen Zugriff außerhalb des eigenen Dialogs zu.
Lösung könnte sein, den Dialog des Fortschrittsbalkens mit einem Abbruchbutton auszustatten.
Viel Erfolg
eBayer
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 19:01
von keksi1970
eBayer hat geschrieben:und trotzdem das Problem?
Das würde den Schuß nahelegen, daß Dein Fortschrittsbalken, der ja in einem eigenen Dialog läuft, Deine Interaktion verhindert.
Der Dialog ist ja modal und läßt keinen Zugriff außerhalb des eigenen Dialogs zu.
Lösung könnte sein, den Dialog des Fortschrittsbalkens mit einem Abbruchbutton auszustatten.
Viel Erfolg
eBayer
hab ich gemacht, der bekommt auch den Focus, aber das wars dann auch.(allerdings als Standard-Schaltfläche, nicht als direkten abbrechen-Button)
eine Alternative wäre nun, den Dialog samt Makro und Dokument komplett zu schliessen, aber nicht die evtl anderen geöffneten Dateien.
Nur wie anfangen ?
Bei Nichterfolg muß ich mir halt was anderes einfallen lassen, um einen "simulierten" Mehrbenutzer-Zugriff auf dBase zu ermöglichen.
LG
Andreas
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 21:17
von eBayer
Hallo Andreas,
schau Dir mal das beiliegende Testprogramm an..... dachte ich, aber leider ist mein Kontingent offensichtlich erschöpft.
Wohin soll ich die Datei mailen?
Einfach ZIP-Datei entpacken, dann LibraryProgress.oxt per Doppelklick einbinden und das Programm aufrufen.
Im Progressbar ist ein Abbruch-Button.........
Das gesamte Coding befindet sich in der Library.
Gruß eBayer
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 21:33
von turtle47
Hi,
eBayer hat geschrieben:aber leider ist mein Kontingent offensichtlich erschöpft
Habe ich gestern auch schon mit grossem Entsetzen festgestellt. Möchte mal gerne wissen was das soll.
Bin mir echt am überlegen, ob ich aussteigen soll, wenn man in seiner "Arbeit" jetzt so eingeschränkt wird.
Bis das die Sache geklärt ist habe ich mir nen
Filehoster gesucht, bei dem man ohne weitere Angaben Dateien zum Download hosten kann.
Jürgen
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 21:42
von keksi1970
naja, wir werden nur in unserem "Hobby" eingeschränkt
nichts desto trotz, ich habe erst 2 oder 3 files gehosted und darf trotzdem nimmer
also haben wir das gleiche Problem.
nicht schön, aber ein Admin wird sich bestimmt äussern.
Bleibt wohl nur die Alternative über eMail und Files schicken :/
Aber irgendwie möchten wir das wohl alle nicht, vor allem, da andere User daran nicht teilhaben können
LG
Andreas
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 21:48
von turtle47
keksi1970 hat geschrieben:naja, wir werden nur in unserem "Hobby" eingeschränkt
ok, besser ausgedrückt.
keksi1970 hat geschrieben:nichts desto trotz, ich habe erst 2 oder 3 files gehosted und darf trotzdem nimmer
Naja, bei mir sind es 157. Da hätte ich das noch nachvollziehen können.
keksi1970 hat geschrieben:Bleibt wohl nur die Alternative über eMail und Files schicken :/
Aber irgendwie möchten wir das wohl alle nicht, vor allem, da andere User daran nicht teilhaben können
Deshalb externer Filehoster.
Re: Funktion abbrechen
Verfasst: Fr, 19.06.2009 22:35
von eBayer
Ok, versucht es mal hier, die Datei herunterzuladen.
http://www.imagenetz.de/f009e58a0/LibraryProgress.zip