German Einfachen Kalendereintrag z.B. für morgen um 17.00 Uhr mit calendar2 machen

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Cracks, wer kann mir kurz auf die Sprünge helfen?

Ich habe das Problem, das mit calendar2 die Einträge in Ticks gemacht werden müssen.

Wie kann ich z.B. einen Termin für morgen 26.07.2013 um 17:00 Uhr mit einer Dauer von 1 Stunde generieren, ohne komplizierte Berechnungsformel?

Das beigefügte Beispiel funktioniert (bisher nur mit heutigem Datum und 17.00 Uhr), aber schon bei der Dauer von 1 Stunde habe ich meine erste Hürde.

B4X:
'Kalenderfunktion benötigt foldgende Lib:
'calendar2 (version 2.02)

Sub Process_Globals
End Sub
Sub Globals
    Dim Kalender As MyCalendar
    Dim Button1 As Button
    Dim EditText2Datum As EditText 
    Dim EditText3Uhrzeit As EditText
End Sub
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")
    Dim Kalender As MyCalendar
    Kalender.Initialize
End Sub
Sub Button1_Click
DateTime.DateFormat = "dd.MM.yyyy"
DateTime.TimeFormat = "HH.mm"
Kalender.CreateEventWithReminder(1,"TEST", "TEXT", "irgendwo", DateTime.TimeParse(""&EditText3Uhrzeit.Text&""), DateTime.Now +720000, 13, Null, False)
End Sub

Für eine kleine Hilfe oder eine Hinweis wäre ich sehr dankbar!
 

Attachments

  • KalenderBeispiel.apk
    106.8 KB · Views: 225

JOTHA

Well-Known Member
Licensed User
Longtime User
... also fast ist es gelöst, ich habe nur noch ein einziges Problem:
Beim Addieren wird plötzlich anstatt dem richtigen Wert "137485050000" (das ist der 26.07.2013 um 17.00 Uhr) der Wert 13748508E12 !!!
Damit kann ich ja nichts anfangen und das System auch nicht.
Wie kann ich das verhindern?

B4X:
'Kalenderfunktion benötigt foldgende Lib:
'calendar2 (version 2.02)

Sub Process_Globals
End Sub
Sub Globals
    Dim Kalender As MyCalendar
    Dim Button1 As Button
    Dim EditText_Datum_TERMIN As EditText
    Dim EditText_Uhrzeit_HEUTE As EditText
    Dim EditText_Datum_HEUTE_in_Ticks As EditText
    Dim EditText_Uhrzeit_HEUTE_in_Ticks As EditText
    Dim EditText_Datum_TERMIN_in_Ticks As EditText
    Dim EditText_ERGEBNIS As EditText
End Sub
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")
    Dim Kalender As MyCalendar
    Kalender.Initialize
End Sub
Sub Button1_Click
DateTime.DateFormat = "dd.MM.yyyy"
DateTime.TimeFormat = "HH.mm"
Dim DIFFERENZ_Uhrzeit_HEUTE_in_Ticks, Datum_HEUTE_in_Ticks, Datum_TERMIN_in_Ticks, ERGEBNIS_1 As String
DIFFERENZ_Uhrzeit_HEUTE_in_Ticks = (DateTime.TimeParse(""&EditText_Uhrzeit_HEUTE.Text&"") - DateTime.TimeParse("00.00"))  'das Ergebnis ist die Differenz von HEUTE zu 00.00 Uhr
EditText_Uhrzeit_HEUTE_in_Ticks.Text = DIFFERENZ_Uhrzeit_HEUTE_in_Ticks
Datum_HEUTE_in_Ticks = DateTime.Now
EditText_Datum_HEUTE_in_Ticks.Text = Datum_HEUTE_in_Ticks
Datum_TERMIN_in_Ticks = DateTime.DateParse(""&EditText_Datum_TERMIN.Text&"")
EditText_Datum_TERMIN_in_Ticks.Text = Datum_TERMIN_in_Ticks
'ERGEBNIS_1 = ((""&EditText_Datum_TERMIN_in_Ticks.Text&"") + (""&EditText_Uhrzeit_HEUTE_in_Ticks.Text&""))
ERGEBNIS_1 = (Datum_TERMIN_in_Ticks) + (DIFFERENZ_Uhrzeit_HEUTE_in_Ticks)
EditText_ERGEBNIS.Text = ERGEBNIS_1
'--- Termin in den Kalender eintragen ---
'Kalender.CreateEventWithReminder(1,"TEST", "TEXT", "irgendwo", DateTime.TimeParse(""&EditText_Uhrzeit_HEUTE.Text&""), DateTime.Now +720000, 13, Null, False)
'Kalender.CreateEventWithReminder(1,"TEST", "TEXT", "irgendwo", ""&EditText_ERGEBNIS.Text&"", "ERGEBNIS_1 +3600000" , 30, Null, False)
Kalender.CreateEventWithReminder(1,"TEST", "TEXT", "irgendwo", 1374850800000, 1374850800000 +3600000 , 30, Null, False)
End Sub

Nur die letzte Zeile beim Termineintrag funktioniert, weil ich die Ticks per Hand eingetragen habe.
Wo ist der Fehler?
 

Attachments

  • KalenderBeispiel.zip
    118.3 KB · Views: 258

specci48

Well-Known Member
Licensed User
Longtime User
Hi Jotha,
ich habe es nicht konkret probiert, aber das korrekte Format für ticks ist ein Long.
B4X:
Dim DIFFERENZ_Uhrzeit_HEUTE_in_Ticks, Datum_HEUTE_in_Ticks, Datum_TERMIN_in_Ticks, ERGEBNIS_1 As Long
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hi Jotha,
ich habe es nicht konkret probiert, aber das korrekte Format für ticks ist ein Long.
B4X:
Dim DIFFERENZ_Uhrzeit_HEUTE_in_Ticks, Datum_HEUTE_in_Ticks, Datum_TERMIN_in_Ticks, ERGEBNIS_1 As Long

Hallo specci48,
du hast recht, das war der Knackpunkt, jetzt funzt es!

Vielen Dank!

Die Krönung wäre, wenn diese Kalenderfunktion auch noch aus dem Emulator funktionieren würde!

P.S.: ... schön, mal wieder was von DIR gehört zu haben (Like!)
 

hanslieb

Member
Licensed User
Longtime User
Hallo specci48,

Hat schon mal jemand eine erweitere RRule in Freg gesetz?
z.B. FREQ=DAILY;COUNT=50;INTERVAL=2 und die Möglichkeit Tage zu excludieren ( z.B. Feiertage und Urlaub)
Finde hierzu in Netz ne ganze Menge nur das was ich bis jetzt damit immer ausprobiert habe funktioniert nicht.
Bekomme sofort eine Fehlermeldung bezüglich der Freg.

Irgendjemand ne Idee wie man das hinbekommen kann.
Bin für jeden Tip Dankbar.

ps. Super Lib habe sonst keine Probleme gehabt dies in meinen Projekt zu verwenden und damit die Anforderungen zu erfüllen bis auf die oben beschrieben Funktion.
Gruß Dieter
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo hanslieb,

Hallo specci48,

Hat schon mal jemand eine erweitere RRule in Freg gesetz?
z.B. FREQ=DAILY;COUNT=50;INTERVAL=2 und die Möglichkeit Tage zu excludieren ( z.B. Feiertage und Urlaub)
Finde hierzu in Netz ne ganze Menge nur das was ich bis jetzt damit immer ausprobiert habe funktioniert nicht.
Bekomme sofort eine Fehlermeldung bezüglich der Freg.

Das hier funktioniert:
B4X:
'-- Beispiel für alle 2 Tage (6 x) Termine erstellen (create a recurring event) --
cal.CreateEvent(Value,"Termin-Titel für alle 2 Tage (6 x) Termine erstellen", _    '-- Termin-Titel        = Title                As String
        "Das ist Beispiel für alle 2 Tage (6 x hintereinander) Termine erstellen", _            '-- Beschreibung    = Desc                As String
        "Schwäbisch Gmünd", _                                                                                    '-- Ort                    = Location        As String
        DateTime.Now + 900000, _                                                                                '-- Beginn                = StartTime        As Long
        DateTime.Now + 1800000, _                                                                            '-- Ende                = EndTime        As Long
        "FREQ=DAILY;COUNT=6;INTERVAL=2", _                                                        '-- Wiederholung     = RRule            As String
        False)                                                                                                                '-- Täglich                = AllDay            As Boolean
       
        '-- FREQ=DAILY;COUNT=10;INTERVAL=2 | FREQ=MONTHLY;WKST=SU;BYDAY=2WE --
 

DonManfred

Expert
Licensed User
Longtime User

JOTHA

Well-Known Member
Licensed User
Longtime User
Ich dachte: "Besser spät als nie"
... habe es halt jetzt erst gesehen ... ;-)
Vielleicht kann "hanslieb" ja noch was damit anfangen.
 
Top