Seite 1 von 1

Datefield im Dialog begrenzen, dann next Seite freischalten

Verfasst: Sa, 02.04.2011 14:46
von balu
Tach Liebe Gemeinde.

Also, ich hab einen Mehrseitigen Dialog erstellt der so weit funktioniert. Jetzt möchte ich aber die 1. Seite davon als eine unbedingt MUSS Aktivierung schalten. Das heißt, erst wenn man einen Namen UND ein Datum ausgewählt hatt, dann wird die nächste Seite freigeschaltet. Das wäre ja eigentlich so weit kein Problem, wenn ich nicht noch ganz besondere Bedingungen stellen würde.

Und diese besonderen Bedingungen lauten:

1.
Es muss ein Name ausgewählt werden.

2.
Das Datefield soll nur einen begrenzten Zeitraum, einen vorher bestimmten Monat, zur Auswahl anbieten. Und wenn man versucht ein Datum außerhalb davon auszuwählen, so soll das Datumsfeld leer bleiben und die Freischaltung wird verweigert. Erst wenn das Datum im richtigem Monat ist, darf es weitergehen.

3.
Wenn alles Korrekt ist, wird Name und Datum in daneben stehenden Labeln eingetragen. Quasi als sichtbare Bestätigung das alles in Ordnung ist.

Und mit dem 2. Punkt habe ich nun meine Probleme.
Ich dachte mir, erstelle zu erst einmal in einer Calc-Tabelle die Grundvoraussetzungen für das Datefield. Also:
- Jahr
- Monat
- Mindesdatum; in Datefield gerechter Schreibweise
- Maximaldatum; in Datefield gerechter Schreibweise
Alles kein Problem.

Aber ich bekomme es nicht hin, den Code so zu erstellen dass das Datum begrenzt wird. Und auch nicht das "blockieren" (Datumsfeld leer) bei falsch eingabe.

Diese ganze "Prozedur" habe ich in einer eigenen Sub geschrieben (zumindest versucht). Und auf das Datefield habe ich diese Sub bei *Text modifiziert* gelegt. Es wird also der Dialog gestartet, und bei klick des Datefields wird der ganze Prozess in die Wege geleitet. Das Dumme ist nur, irgendwie oder wo habe ich da was nicht richtig, da ich immer an einer Stelle eine Fehlermeldung bekomme.
Aktion nicht unterstüzt.
Ungültiger Prozeduraufruf.
Habe 2 Dateien angehängt, eine ohne die Datumsbegrenzung "SIMPELTEST_5_9.ods" so wie es rein theoretisch sein soll, und die andere mit der Begrenzung "SIMPELTEST_6_0.ods" die nicht wirklich funktioniert.


Kann mir jemand bei der Beseitigung meines Problems behilflich sein?
Würde mich wirklich sehr darüber freuen :D.

Bedanke mich schon mal für eure Bemühungen, und wenns auch nur für das lesen ist.


Gruß
balu

Re: Datefield im Dialog begrenzen, dann next Seite freischal

Verfasst: Sa, 02.04.2011 17:22
von turtle47
Hallo mein lieber Freund Balu,

heute ist wohl nicht Dein Tag. Oder?


Der erste Fehler in Deinem Code ist, dass Du eine falsche Zelle

Code: Alles auswählen

mycellD2 = osheet0.getCellRangeByName("B7")
abgefragt hast, die überhaupt keinen Inhalt hat.



Der zweite Fehler ist, dass Du die Datumeingrenzung für das Datefield nach dem Dialogaufruf setzten wolltest. Das muss vor dem Dialogaufruf schon geschehen.

In der beigefügten Beispieldatei ist nur möglich innerhalb des definierten Zeitraums ein Datum auszuwählen, ansonsten wird das Min- bzw. Maxdatum angezeigt.

Ich hoffe es war in Deinem Sinne das Datum der besseren Lesbarkeit wegen als Text zu übergeben.

Code: Alles auswählen

oLabelDate.text = oDatum.text

Schönes Wochenende.

Jürgen

Edit: Habe gerade noch gesehen

Code: Alles auswählen

 oDialog1.endexecute
Wozu soll das gut sein?

Re: Datefield im Dialog begrenzen, dann next Seite freischal

Verfasst: Sa, 02.04.2011 19:06
von balu
Hallo mein lieber Freund Jürgen,
heute ist wohl nicht Dein Tag. Oder?
Nicht Tag, sondern Plural - *Tage*!
Kaum hab ich ein Problem weniger, liegt das nächste schon auf der Lauer *grrrr*.

Der erste Fehler in Deinem Code ist, dass Du eine falsche Zelle
[...]
abgefragt hast, die überhaupt keinen Inhalt hat.
Das ist nicht so wie Du denkst, dat war nur n Tüypfähler :lol:.


Der zweite Fehler ist, dass Du die Datumeingrenzung für das Datefield nach dem Dialogaufruf setzten wolltest. Das muss vor dem Dialogaufruf schon geschehen.
Ja okay. Das wusste ich wirklich nicht.
Weil es aber in der anderen Datei "funktionierte", ich meine das Datefield aufrufen, hatte ich falsch gedacht das ich dann dort die Begrenzung machen kann. Aber nun gut, das werd ich mir merken.

Ich hoffe es war in Deinem Sinne das Datum der besseren Lesbarkeit wegen als Text zu übergeben.
Jetzt verwirrst Du mich aber.
Denn ich seh im Label keinen unterschied zwischen deiner und meiner Codezeile. :roll:

Code: Alles auswählen

	oLabelDate.text = oDatum.text

	oLabelDate.text = CDateFromIso(oDatum.Date) ' <- meine Version
In beiden Fällen wird beispielsweise 02.04.2011 angezeigt. Also fürs Label wär es ja nicht weiter tragisch, aber in der fertigen Datei kann ich mit der Datumsangabe als Text nichts anfangen, da es dort in der Tabelle weiter verarbeitet wird. Deshalb mache ich diese Umwandlung gleich im Makro.

Oder hat das etwas mit deinem zusätzlichen eingefügten Modul (Module2 Sub ExampleDateValue) zu tun? Nun bin ich noch verwirrter :roll:


In der beigefügten Beispieldatei ist nur möglich innerhalb des definierten Zeitraums ein Datum auszuwählen, ansonsten wird das Min- bzw. Maxdatum angezeigt.
Ja, sorry. Aber das wollte ich ja vermeiden, das dann das Min,- beziehungsweise das Maxdatum eines Monats genommen wird. Ich möchte das dann gar nichts angezeigt wird und es nicht zur nächsten Seite weitergehen kann. Aber mal schaun, vielleicht bekomme ich es ja jetzt selber hin. Und wenn nicht, meld ich mich wieder.

Edit: Habe gerade noch gesehen

Code: Alles auswählen

 oDialog1.endexecute
Wozu soll das gut sein?
Macht der Gewohnheit. Er ist beim hin- und herkopieren mit rein gerutscht. In der fertigen Datei brauche ich es aber.


Ich danke dir vielmals für deine Hilfe und Unterstützung. :D


Gruß
balu