rico-wm
Goto Top

Mehrere outlook Termine aus access 2010 versenden

Hallo, benötige mal wieder Eure Hilfe.

Ich habe in access2010 ein Formular, dass sich auf die Tabelle "Buchung_Fluginfos" bezieht
In der Tabelle werden meine gebuchten Flüge abgelegt.
Ein "Vorgang" besteht aus einer Vorgangsnummer hinter der nun natürlichen mehrere Flüge liegen können.

Bespiel:
Vorgangsnummer Datum Airline von bis Abflug Ankunft
54856 10.01.14 LH 123 Düsseldorf München 10:00 11:00
54856 10.01.14 LH 456 München Düsseldorf 19:00 20:00


Ich möchte nun aus Access 2 Termine an eine Outlook mail, die ich versende, anhängen

Der Code dazu sieht wie folgt aus:
Set rs = Me.RecordsetClone

sStr = sStr & rs!Datum & vbNewLine & rs!Airline & vbTab & rs!von & " - " & _
rs!bis & vbTab & Format(rs!Abflug, "hh:mm") & " - " & vbTab & Format(rs!Ankunft, "hh:mm") & vbNewLine & vbNewLine


rs.MoveFirst
Do Until rs.EOF

Set OutApp = CreateObject("Outlook.Application")
Set OutApptmt = OutApp.CreateItem(0)
With OutApptmt
.Subject = rs!filekey
.Start = rs!Abflug
.End = rs!Ankunft
' make it a meeting request
.MeetingStatus = 1 '1=olMeeting
.Body = sStr
'.Save
Set OutMail = .ForwardAsVcal

End With
rs.MoveNext
Loop
rs.Close

On Error Resume Next
With OutMail
.GetInspector.Display
.To = ""
.cc = ""
'.Attachments.Add
.bcc = ""
.Subject = "Flug"
.htmlBody = "<span style=" & Chr(34) & " font-family:Arial; " & _
" font-size:10pt; " & Chr(34) & _
">Hallo " & ", <BR><BR>" & _
"anbei meine Flüge " & _
<BR><BR>" & _
"Schöne Grüße " & olOldBody

Set OutMail = Nothing
Set OutApp = Nothing

End With

End Sub

Das funktioniert aber nur in der Form, daß mir nur 1 Termin für beide Flüge gemacht wird und nicht 2 Termine. Also einen für den Hinflug und einen für den Rückflug

Hat jemand eine Idee?

Bin am verzweifeln! Würde mir echt riesig helfen.

Vielen Dank im voraus

VG
Rico

Content-Key: 228198

Url: https://administrator.de/contentid/228198

Printed on: April 19, 2024 at 17:04 o'clock

Member: colinardo
colinardo Jan 30, 2014 updated at 15:20:53 (UTC)
Goto Top
Hallo Rico,
versuchs mal hiermit:
Set rs = Me.RecordsetClone

rs.MoveFirst
Set OutApp = CreateObject("Outlook.Application")  
Set OutMail = OutApp.CreateItem(0)

Do Until rs.EOF
        Set OutApptmt = OutApp.CreateItem(1)
        sStr = rs!Datum & vbNewLine & rs!Airline & vbTab & rs!von & " - " & rs!bis & vbTab & Format(rs!Abflug, "hh:mm") & " - " & vbTab & Format(rs!Ankunft, "hh:mm") & vbNewLine & vbNewLine  
	With OutApptmt
		.Subject = rs!filekey
		.Start = rs!Datum & " " & rs!Abflug  
                 if TimeValue(rs!Abflug) > TimeValue(rs!Ankunft) then
                    .End = DateAdd("d",1,DateValue(rs!Datum)) & " " & rs!Ankunft  
                 else
                    .End = rs!Datum & " " & rs!Ankunft  
                 end if
		' make it a meeting request  
		.MeetingStatus = 1 '1=olMeeting  
		.Body = sStr
                .Save
                OutMail.Attachments.Add OutApptmt
      	End With
	rs.MoveNext
        OutApptmt.Delete
Loop
rs.Close

On Error Resume Next
With OutMail
	.To = ""  
	.cc = ""  
	.bcc = ""  
	.Subject = "Flug"  
	.htmlBody = "<span style=" & Chr(34) & " font-family:Arial; " & _  
	" font-size:10pt; " & Chr(34) & _  
	">Hallo " & ", <BR><BR>" & _  
	"anbei meine Flüge " & _  
	"<BR><BR>" & _  
	"Schöne Grüße " & olOldBody  
       .Display
End With

Set OutMail = Nothing
Set OutApp = Nothing
Grüße Uwe
Member: Rico-WM
Rico-WM Jan 30, 2014 at 13:48:33 (UTC)
Goto Top
Hallo Uwe,

vielen Dank für Deine superschnelle Antwort.
Es werden zwar die beiden Termine erzeugt, aber in jedem Termin steht im Body "Düsseldorf-München"...
Es sollte aber im ersten Termin der Datensatz "Düsseldorf-München" stehen und im zweiten Termin "München-Düsseldorf"

Hast Du eine Idee?

Vielen vielen Dank und

VG
Rico
Member: colinardo
colinardo Jan 30, 2014 updated at 14:08:42 (UTC)
Goto Top
Das im Body immer das selbe steht war einer deiner Fehler, auf die ich nicht geachtet habe, sorry...der Code für diesen stand nicht innerhalb der Schleife
Ist oben korrigiert ...

Grüße Uwe
Member: Rico-WM
Rico-WM Jan 30, 2014 at 14:13:24 (UTC)
Goto Top
Hi Uwe,

sorry dafür!
Leider funktioniert es noch nicht ganz so.

Folgendes Problem:
Ich habe nun eine weitere Reise mit 4 Flügen. Sagen wir Düsseldorf-München, München-Zurich, Zürich-München, München-Düsseldorf.
Folgendes passiert nun:
Im 1.Termin steht "Düsseldorf-München"

Im 2.Termin steht "Düsseldorf-München"
München-Düsseldorf"

Im 3.Termin steht "München-Zürich"

Im 4.Termin steht "München-Zürich"
"Zürich-München"

Es soll aber so sein:
Im 1.Termin steht "Düsseldorf-München"

Im 2.Termin steht "München-Zürich"

Im 3.Termin steht "Zürich-München"

Im 4.Termin steht "München-Düsseldorf"

Vielen Dank nochmals
VG
Rico
Member: colinardo
colinardo Jan 30, 2014 updated at 14:28:11 (UTC)
Goto Top
da war noch eine Verdoppelung in deiner ursprünglichen Body-Zeile, denke jetzt müsste es laufen (s.o.) bin grad im Stress face-wink
Member: Rico-WM
Rico-WM Jan 30, 2014 at 14:56:47 (UTC)
Goto Top
Total genial Uwe,

vielen vielen Dank!!

Hab noch ein hoffentlich kleines Problem bekommen.

Der Beginn des Termins ist natürlich immer Datum und Abflugzeit
.Start = rs!Datum & " " & rs!Abflug

Das Ende des Termins ist immer Datum und Ankunftszeit
.End = rs!Datum & " " & rs!Ankunft

Wenn ich aber mehrere Flüge habe, erhalte ich die Meldung "Das von Ihnen angegebene Ende liegt vor dem Beginn"

Was mach ich falsch?

By the way, find ich super von Dir, dass Du so schnell und kompetent antwortest, obwohl Du Stress hast.

VG
Eric
Member: colinardo
colinardo Jan 30, 2014 updated at 15:06:49 (UTC)
Goto Top
wenn du natürlich einen Flug hast der über 0:00 geht kommt es natürlich zu diesem Fehler, das müsste man mit einer prüfung abfangen ....
Member: Rico-WM
Rico-WM Jan 30, 2014 at 15:03:26 (UTC)
Goto Top
Oh mein Gott, sehe das Problem!
Das liegt am letzten Flug. Das ist ein Langstreckenflug der erst am nächsten Tag ankommt.
Sprich, Abflug 08.02.14, 22.30, Ankunft 09.02.14, 07.20

Logisch, daß er dann meckert. Nur wie kann ich ihm klar machen, daß es Flüge gibt, die erst am nächsten Tag ankommen.
Richtig wäre dann Anfangstermin 08.02.14, 22.30 hrs
Endtermin 09.02.07:20 hrs

Ich könnte natürlich ein zusätzliches Feld in die Tabelle einbauen, in das ich "+1" schreibe, wenn die Ankunft am nächsten Tag ist.
Dann benötige ich aber eine Select Funktion oder so.
Damit kenn ich mich ja überhaupt nicht aus.

Hast Du einen Vorschlag/Idee?

VG
Rico
Member: colinardo
colinardo Jan 30, 2014 updated at 15:06:32 (UTC)
Goto Top
am besten eine zusätzliche Spalte in deiner Tabelle mit Ankunftsdatum...
Member: Rico-WM
Rico-WM Jan 30, 2014 at 15:14:39 (UTC)
Goto Top
Will echt nicht nerven Uwe, aber könnte man das auch so machen, daß ich mir eine weitere Spalte mache in der als Standardwert nichts oder 0 drin steht und wenn die Ankunftszeit am nächsten Tag ist, schreib ich einfach "+1" in die Spalte?
Dann könnte geprüft werden: Wenn in dem besagten Feld 0 oder nichts steht, dann schreibe mir das Abflugdatum, ansonsten schreibe mir das Abflugdatum +1

Eine geniale Lösung wäre natürlich eine Prüfung in dieser Form:
Wenn die Endzeit im Vergleich zur Anfangszeit nach 00:00 Uhr liegt, ist das Endatum = Anfangsdatum +1

Sprengt das den VBA Rahmen?

VG
Rico
Member: colinardo
colinardo Jan 30, 2014 updated at 15:27:57 (UTC)
Goto Top
sprengt das den VBA Rahmen?
Quatsch, nie und nimmer face-smile
habe oben schon eine Lösung eingebaut, ohne das du was an deiner Tabelle ändern musst face-wink
if TimeValue(rs!Abflug) > TimeValue(rs!Ankunft) then
    .End = DateAdd("d",1,DateValue(rs!Datum)) & " " & rs!Ankunft  
else
    .End = rs!Datum & " " & rs!Ankunft  
end if
sollte aber ein Flug länger als ein Tag dauern solltest du über eine weitere Spalte nachdenken...