Globale Variable: Verständnisproblem

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

Moderator: Moderatoren

Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Globale Variable: Verständnisproblem

Beitrag von sven-my »

Hallo Experten,
Globale Variablen: Sie gelten innerhalb der gesamten Staroffice-Sitzung in allen geladenen Bibliothken, Modulen, Prozeduren und Funktionen.
In einem Makro von >Dokument1< habe ich

Code: Alles auswählen

REM  *****  BASIC  *****
global flag as string

sub Main
.
flag = "start"
.
end sub
und im Makro von >Dokument2< habe ich

Code: Alles auswählen

sub start
if flag <> "start" then exit sub
.
.
end sub
nun möchte ich, das ein Makro im >Dokument2< nur starten soll, wenn dies Dokument von >Dokument1< aufgerufen wird, aber nicht wenn >Dokument1< noch nicht "läuft" und ich >Dokument2< aber schon geöffnet habe.

Die Makros in >Dokument2< laufen alle wie gewollt, nur eben dieses eine verweigert sich.
Was hab ich da in den "falschen Hals" bekommen ?

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Globale Variable: Verständnisproblem

Beitrag von DPunch »

Servus

Globale Variablen in Dokumenten stehen leider auch nur in diesen zur Verfügung.
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Globale Variable: Verständnisproblem

Beitrag von sven-my »

Hallo DPunch,

also muß die Variable irgenswo in "MeineMakros/Standard/.." deklarieren, und dann kann ich sie in den Makros aller geöffneten Dokumenten nutzen ?

Hilft also nicht, wenn ich die Dokumente auf einem Stick habe, und an einem Rechner nutze, bei dem ich die Variable nicht deklarieren kann ?

Odre habe ich da wieder etwas falsch verstanden ?

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Globale Variable: Verständnisproblem

Beitrag von DPunch »

Servus

Das hast Du richtig verstanden.

Wenn Du etwas präziser schildern würdest, was Du wann erreichen willst (Deine ursprüngliche Einlassung dazu fand ich nicht sonderlich erhellend), kann man Dir aber möglicherweise andere Wege aufzeigen.
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Globale Variable: Verständnisproblem

Beitrag von sven-my »

Hallo Dpunch,

tja präziser kann ich mein Vorhaben nicht schildern --- nur langatmiger:

Es sind zwei Dokumente - ein calc-Doc mit Daten (als Datenbank), ein writer-Doc mit einer Etikettenvorlage (Tabelle: 5 x 13 [ Spalten x Zeilen]).

1. Fall
Öffne ich die Etikettenvorlage, ohne daß das calc-Doc geöffnet ist, sollen keine Aktionen von dem writer-Doc ausgehen.

2. Fall
Öffne ich die Etikettenvorlage vom calc-Doc aus, sollen sollen die markierten Daten zum writer-Doc übertragen werden, ohen daß ich das nochmal extra "anstoßen" muß (weil davon auszugehen ist, daß die Vorarbeiten schon geleistet sind)

Die normale Arbeit mit Etiketten, wie sie in OpenOffice vorgesehen ist, geht für meinen speziellen Fall nicht !

Ich benötige z.B. ein Etikett von Datensatz 1, fünf von Datensatz3, sechs von Datensatz3, u.s.w. - die möchte ich in einem "Rutsch" drucken, und nicht für jeden Datensatz einen eigenen Druckauftrag erteilen, oder von allen Datensätzen die gleiche Anzahl Etiketten drucken, und dann die Hälfte wegschmeißen.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Globale Variable: Verständnisproblem

Beitrag von DPunch »

Servus

Und im Moment löst Du das wie, bzw. würdest es lösen, wenn die Sache mit den globalen Variablen nicht wäre?
Als Ereignis bei z.B. Dokument geöffnet (das meinte ich mit "präziser)?

Wenn die ganze Aktion sowieso nur laufen soll, wenn Du die Vorlage vom Calc-Doc aus öffnest, dann bring den gesamten Code doch einfach in der die andere Datei öffnenden Prozedur im Calc-Doc unter.
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Globale Variable: Verständnisproblem

Beitrag von sven-my »

Hallo DPunch,

so sehe das Makro in >etikett.ott< aus, es steht im ersten Modul (Hilfen) wenn das mit der globalen Varablen ginge.
die Variable docNam sollte auch eine Globale Variable werden.

Code: Alles auswählen

sub Doc_speichern
	docNam = "Gefrier-Etikettendruck.odt"	'wenn als Global deklariert, dann auskommentiert oder gelöscht
'	msgbox "dieses Dokument speichern !"
	dim dummy()
	oDoc = thisComponent
	lw = mid(CurDir,1,2)
	if lw = "C:" then lw = "E:"
	pfad = Lw & "\OpenOffice\calc\Etiketten\" & docNam
	URL = ConvertToUrl(Pfad)
	oDoc.storeAsURL(URL ,Dummy())
	oDoc.store()
	
	if flag = "start" then
		drucken.start		'zweites Modul
	end if
end sub
Zerbrich Dir nicht weiter den Kopf, ich krempel das Ganze jetzt um, und schreibe anstatt das eine Makro in die Etiketten-Vorlage für 38x21 - Etiketten, jetzt je ein Makro in die calc-"Datenbanken" um die Daten in die writer-Tabelle zu bekommen.
Dann wird die jeweilige calc-"Datenbank" eben die zentrale "Steuerstelle".

Die bisherige Vorgehenweise ergab sich aus der Tatsache, daß ich zuerst versucht habe, ob, bzw. wie, es funktioniert, die Etikett-Vorlage zu nutzen, um die bedruckbaren Etiketten zu markieren, und diese Daten dann auszulesen.

Dann habe ich einfach weitergeschrieben.
Es wird bei mir nie die ganze DIN-A4 Seite (65 Etiketten) aus ein Mal gedruckt; und da mein alter Drucker die 13. Zeile nicht mehr bedrucken wollte, habe ich mir angewöhnt, wenn die zweite, dritte oder vierte Zeile kein Etikett mehr enthält, das Blatt umzudrehen.
Daher mußte ich einen Anfangs-Etikett und ein End-Etikett festlegen.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Antworten