Funktion abbrechen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Funktion abbrechen

Beitrag 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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Funktion abbrechen

Beitrag von turtle47 »

Hallo Andreas,

ich meine das mal so gelöst zu haben.

Erstelle eine Sub für das Abbrechen

Code: Alles auswählen

Sub Abbrechen
Abbruch = 1
End Sub
Über Deiner Schleife schreibst Du

Code: Alles auswählen

Abbruch = 0
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
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Funktion abbrechen

Beitrag 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
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Funktion abbrechen

Beitrag 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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Funktion abbrechen

Beitrag 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) :D
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)
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Funktion abbrechen

Beitrag 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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Funktion abbrechen

Beitrag 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
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Funktion abbrechen

Beitrag 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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Funktion abbrechen

Beitrag 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
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Funktion abbrechen

Beitrag von keksi1970 »

naja, wir werden nur in unserem "Hobby" eingeschränkt :D

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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Funktion abbrechen

Beitrag 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.
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Funktion abbrechen

Beitrag von eBayer »

Ok, versucht es mal hier, die Datei herunterzuladen.

http://www.imagenetz.de/f009e58a0/LibraryProgress.zip
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Antworten