Basic Synthaxfehler Else/Endif ohne if

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

Moderator: Moderatoren

Marce Cz
**
Beiträge: 24
Registriert: Mo, 20.01.2014 11:12

Basic Synthaxfehler Else/Endif ohne if

Beitrag von Marce Cz »

hallo leute,
Wo liegt im folgenden makro mein fehler?

Code: Alles auswählen

Sub EingabeDaten
	CompatibilityMode(True)	
	
	DialogLibraries.loadLibrary("Standard")
	oDialogDatenEingabe = CreateUnoDialog(DialogLibraries.Standard.DlgDatenEingabe)
	
	oMonat = oDialogDatenEingabe.getControl("TextField1")
		If oMonat = "Januar" Then GoSub EingabeJanuar
			Else GoSub Hilfe
		Endif 
				
	oDialogDatenEingabe.execute
	
	CompatibilityMode(false)
	
End Sub

Sub Hilfe
	GoTo EingabeDaten
End Sub

Sub EingabeJanuar
	CompatibilityMode(True)	
	
	DialogLibraries.loadLibrary("Standard")
	oDialogJanuar = CreateUnoDialog(DialogLibraries.Standard.DlgJanuar)
	
	oDatum = oDialogJanuar.getControl("DateField1")
	oBlatt = ThisComponent.sheets.getByName("Januar")
	oDialogJanuar.execute
	CompatibilityMode(false)
End Sub
Marce Cz
**
Beiträge: 24
Registriert: Mo, 20.01.2014 11:12

Re: Basic Synthaxfehler Else/Endif ohne if

Beitrag von Marce Cz »

Else GoSub Hilfe
da soll der Fehler sein;(
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Basic Synthaxfehler Else/Endif ohne if

Beitrag von balu »

Hallo Marcel,

als erstes zur Info.
Das hier

Code: Alles auswählen

CompatibilityMode(True)
CompatibilityMode(false)
wird nur benötigt um

Code: Alles auswählen

FormatDateTime
anwenden zu können. Wenn Du nicht mit FormatDateTime arbeitest, kann also CompatibilityMode wegbleiben.


Ich habe jetzt keine Lust irgendwie das nachzuforschen was das mit dem Fehler auf sich hat. Und deshalb zeige ich dir mal meine Idee wie ich das machen würde. Ich verfolge da ein ganz anderes Konzept als Du.

In meiner Beispieldatei klickst Du im Tabellenblatt "Formular_aufrufen" auf den Button "Eingabe".

Jetzt erscheint ein kleiner Dialog wo Du NUR den Monat auswählen kannst, oder Abbrechen. Der dortige Button "Weiter" wird erst dann aktiv (freigeschaltet), wenn Du einen Monatsnamem ausgewählt hast.

Rechts neben der Namensliste für die Monate ist eine Farbliste, nein(!) die kann nicht angewählt werden, die anzeigt welche Farben den Monatsnamen zugeordnet sind. Und wenn Du einen Monat ausgewählt und auf Weiter geklickt hast, dann kommt der Dialog den Du schon aus einer früheren Version kennst. Er ist diesmal aber ein klein wenig geändert, was unschwer am oberen Teil zu sehen ist.

Dort wird der Monatsname mit einer anderen Farbe dargestellt, und zwar mit der Farbe die Du auf dem vorigen Dialog gesehen hast. Und diese Farbe ist auch in den Tabellenblättern in den Zellen A1 bis E2 zu sehen. Ferner werden auch die Tabellenreiter eingefärbt.

Wenn Du also einen Monat ausgewählt hast, dann werden nach einem klick auf "Eintragen" die Daten in den dementsprechenden Monat, sprich Tabellenblatt eingetragen. Anschließend werden die Zeitfelder gelöscht. Dann kann man entweder weitere Zeiten eintragen, oder diesen Dialog beenden.


Falls dir dies konzept gefällt, dann sag bescheid, und ich schau mal was ich noch machen könnte.




Gruß
balu
Dateianhänge
vereinfachte-Arbeitszeiterfassung_neu-1.0.ods
(18.01 KiB) 99-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
achimgr
***
Beiträge: 68
Registriert: Mi, 30.04.2008 16:14

Re: Basic Synthaxfehler Else/Endif ohne if

Beitrag von achimgr »

Hallo balu,
das ist ja klasse.
Wie rufe ich aber einen "fertiggebastelten" Dialog1 auf?

Dein Button Eingabe führt das Makro EingabeDialog aus. Dieses Makro besteht aus vielen Zeilen, wird damit erst der Dialog "Auswahl Monat" kreiert?
Allesdings ist dieser Dialog ja auf dem nächsten Reiter "AuswahlMonat". ich verstehe es nicht.

Gibt es nicht auch die Möglichkeit wie zB "Show.Dialog1" oder so.

Grüße aus Niedersachsen,
Achimgr
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Basic Synthaxfehler Else/Endif ohne if

Beitrag von Karolus »

LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Basic Synthaxfehler Else/Endif ohne if

Beitrag von balu »

Hallo Achimgr,
das ist ja klasse.
Freut mich sehr :D.

Wie rufe ich aber einen "fertiggebastelten" Dialog1 auf?
Ein erstellter dialog wird per ".execute" ausgeführt.

Code: Alles auswählen

	DialogLibraries.loadLibrary("Standard")
	oMonatAuswaehlen = CreateUnoDialog(DialogLibraries.Standard.AuswahlMonat)

[...]

	oMonatAuswaehlen.execute
Dazu sind mindestens die ersten zwei zitierten Code-Zeilen erforderlich, um dann die letzt zitierte Zeile auszuführen.

Dieses Makro besteht aus vielen Zeilen, wird damit erst der Dialog "Auswahl Monat" kreiert?
Nein! Der Dialog ist schon fix und fertig. Er wird per Makro-Code aufgerufen.

ich verstehe es nicht.
Dann solltest Du dich erstmal DRINGEND mit StarBasic allgemein befassen, bevor Du dich an Dialoge ranwagst. Denn wenn Du nicht die Grundfunktionen verstehst, hast Du auch keine Chance als Anfänger mit den Dialogen voranzukommen. Deshalb schau dir das hier mal an: Informationen zur StarBasic-Programmierung
Und natürlich den Link von Karolus.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
achimgr
***
Beiträge: 68
Registriert: Mi, 30.04.2008 16:14

Re: Basic Synthaxfehler Else/Endif ohne if

Beitrag von achimgr »

Danke sehr balu! Werde loslegen.

Grüße aus Niedersachsen,
Achimgr
Antworten