Anzeige

 Termin in Outlook eintragen


#1
Hallo,

bin absoluter Anfänger, habe aber meinen Vorhaben einigermaßen ans Laufen, habe allerdings jetzt Etwas ganz absurdes was ich nicht erklären kann.
Ich habe ein Access Datenbank mit einer Tabelle und ein Formular erstellt. Es sind Auftragsdaten die wir per Mail bekommen. Die werden mit dem inbox2DB Programm in die eine Tabelle eingefügt. Alles ist auch super bis ich mit dem Termin in Outlook einzutragen angefangen habe. Habe dazu den Code geschrieben, und alles funktioniert bis auf meinem Datum. Hier schonmal mein Code :

Visual Basic:
Dim outApp As Outlook.Application
    Dim outtest As Outlook.AppointmentItem
    ' Dim datStart As Date
    ' datStart = Format(Datum, "dd.mm.yyyy") & Format(Uhrzeit, " hh:mm")
    Set outApp = New Outlook.Application
    Set outtest = outApp.CreateItem(olAppointmentItem)
    With outtest
        ' .AllDayEvent = False
        .ReminderSet = False
        ' .ReminderMinutesBeforeStart = 60
        .Start = Datum   ' hier funktioniert nur wenn ich Datum eingebe, alles andere nicht.
        .Duration = 90
        .Display
        ' .Save
  
    End With
Ich habe vieles auskommentiert um den Fehler einzugrenzen

Problem : Ich hatte anfänglich in meiner Tabelle die Spalte mit dem Eingangsdatum als "Datum" genannt und wenn ich das in meinem Code verwende, ist alles OK, ganz gleich ob mit datStart wie oben formatiert oder nicht formatiert. Es wird datum von "Datum" eingetragen. Jetzt habe ich eine Spalte mit TermDatum hinzugefügt ( andere Namen habe ich auch ausprobiert ) für den Termin Datum den er eintragen soll. Also wenn ich dann .Start = TermDatum oder oben bei datStart diese Spalte eingebe, bekomme ich einen Termin zum 30.12.1899. Ich habe festgestellt das macht Outlook wenn dieser Wert gleich null ist also 00.00.0000. Also es wird kein Wert von der Tabelle übernommen. Noch kurioser wird das ganze wenn ich die Spalten umbenenne. Also wenn ich meinen tatsächlichen eingangsdatum auf "Datum1" zB. umbenenne, und meine neue Spalte mit dem Termin-Datum auf "Datum" umbenenne, dann funktioniert meine Eintragung einwandfrei. Also im Prinzip egal welche Spalte ich als "Datum" nenne funktioniert, unabhängig woher die Daten kommen. Hat Jemand eine Idee was mache ich falsch ? Ich habe aus lauter Verzweifelung eine Test Datenbank erstellt nur mit datum Feldern und völlig verschiedenen Namen, und alles funktioniert. Ich muss es aber wissen warum habe ich so einen Effekt. Bitte um Hilfe

Gruß, Bekim
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

n/a
Moderator
#2
Woher kommt die Variable Datum? Wie wird sie abgefüllt? Was für ein Datentyp ist Datum?

Visual Basic:
Dim datStart As Date
datStart = Format(Datum, "dd.mm.yyyy") & Format(Uhrzeit, " hh:mm")
Das geht nicht gut. datStart ist ein Date. Mit dem Formatbefehl erstellst du aus einem anderen Datum ein String und willst diesen in die Date-Variable speichern.
Warum? Du kannst Datum +Uhrzeit einfach zusammenrechnen
Visual Basic:
datStart = Datum + Uhrzeit
Das andere Fehleverhalten, dass nur die Spalte Datum funktioniert, kann ich nicht nachvollziehen. Da hast du irgendwo im Code die Spalte nicht angepasst.
 
#3
Hallo Yaslaw,

danke dir schon mal für deine Mühe. Die Zeilen oben sind entstanden beim experimentieren. Habe inzw. auch alles verstanden. Mein Hauptproblem ist die Sache mit dem Namen. Habe ein Screenshoot der Tabelle hinzugefügt. Also die letzte Zeile ist Termin Datum und wird in dem Formular eingegeben und die dritte von unten ist Eingangsdatum und wird mit dem inbox2DB abgefüllt. Es spielt aber in meinem Falls all das keine Rolle welchen Datentyp ich nehme und wie ich abfülle, habe alles ausprobiert so wie jetzt steht kurztext oder Datum/Uhrzeit mit dem dd.mm.yyyy Format, es funktioniert nur dann wenn ich das Feld "Datum" nenne. Also wenn ich die 3-te Zeile von unten "Datum" nenne, und in meinem Code es verwende nimmt er genau diesen Wert. Genau das gleiche wenn ich die letzte Zeile "Datum" nenne. Ist doch absurd oder? Ist das vielleicht möglich dass diese 3-te Software ( inbox2db ) Etwas so durcheinander bringt dass es keine Erklärung dafür gibt ?

Gruss, Bekim
 

Anhänge

#5
Ich glaube jetzt hast du mich erwischt. Das weiß ich nicht, vielleicht ist das mein Problem. Also ich habe nur eine Schaltfläche im Formular als Ereignisprozedur definiert, auf die 3 Punkte und habe mit dem Code losgelegt . Es hat auch jede Variable funktioniert. Erst als ich nachträglich eine Spalte hinzugefügt habe traten die Probleme auf. Muss man dafür Etwas tun dass ein Wert in VBA Variable kommt ? Macht Access das womöglich dann automatisch bei irgendeinem Ablauf, und das ist beim ersten Erstellen des Codes passiert ? Wenn ja, dann kann man hier erkennen was ich für ein newbee bin.
 

Yaslaw

n/a
Moderator
#6
Ah. So. Der VBA-Code ist hinter einem Formular! Dan wird Datum der Wert des Feldes. Meistens schreibt man Me.Datum. Dann ist klar woher es kommt.
OK. Ein Anderes Feld musst du im Formular hinterlegen. ggf unsichtbar, wenn der User es nicht sehen soll.
Dann kannst du im Code einfach auch auf dieses Feld zugreifen.
 
#7
Danke, danke, danke.

Es lag tatsächlich an dem Namen des Feldes im Formular. Auf dem Entwurfsansicht ist als Text in dem Feld der Steuerelementinhalt zu sehen und nicht der Name des Feldes, und als Name in Eigenschaften sieht man Text66 oder ähnliches. Als ich aber das erste Formular erstellt hatte, habe ich dies mit dem Assistenten gemacht und dort nimmt er vermutlich den Namen des Inhaltes. All das wusste ich natürlich nicht, aber du hast mir die Augen relativ schnell geöffnet und danke nochmal. Ich suche schon seit Sonntag nach der Lösung :-(

Grüsse an alle aus dem Ruhrpott, es ist einfach schön dass es euch gibt :)
 
Anzeige

Neue Beiträge

Anzeige