collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 69
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 6
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13804
  • stats Beiträge insgesamt: 63512
  • stats Themen insgesamt: 8606
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Wert aus Textfeld überspringen  (Gelesen 266 mal)

Offline Daniel92

  • Newbie
  • Beiträge: 40
Wert aus Textfeld überspringen
« am: November 23, 2017, 09:55:41 »
Hallo zusammen,

ich bin immer noch am erstellen des Tools um das planen von Schulungen zu vereinfachen.
Nicht all eure Vorschläge konnte ich umsetzten, daher hab ich das ganze vereinfacht.
Vielen Dank nochmal für eure Hilfe, hat mir sehr geholfen!
Jetzt habe ich noch 2 Anliegen.

1. in der Regel hat ein Schulungsblock 3 Termine, jetzt möchte ich aber trotzdem die Möglichkeit haben nur einen oder 2 Termine zu verschicken. Mit der Call fncOutlook_Termin_Eintragen(.....) rufe ich meine Felder auf in der die Termine eingetragen sind, sind diese aber leer bekomme ich eine Fehlermeldung weil der Wert 0 nicht übertragen werden kann. Wie kann ich dieses Problem lösen?
Hier mein ganzer Code:

Option Compare Database
Option Explicit

Public Function fncOutlook_Termin_Eintragen(parSubject As String, SFN As Boolean, SFH As Boolean, Praktikanten As Boolean, dStart1 As Date, dEnd1 As Date, dStart2 As Date, dEnd2 As Date, dStart3 As Date, dEnd3 As Date)
 
Dim counter1 As Integer
Dim Start(3) As Date
Dim Ende(3) As Date
Dim db As Database
Dim rs As Recordset


Start(0) = dStart1                              'Array für 3 Termine
Ende(0) = dEnd1
Start(1) = dStart2
Ende(1) = dEnd2
Start(2) = dStart3
Ende(2) = dEnd3
 
If dStart1 > dEnd1 Or dStart2 > dEnd2 Or dStart3 > dEnd3 Then                          'Fehlervermeidung Termineingabe
MsgBox "Das von Ihnen angegebene Ende liegt vor dem Beginn", vbInformation
Else

For counter1 = 0 To 2

    Dim outApp As Outlook.Application
    Dim outtest As Outlook.AppointmentItem
    Dim myRequiredAttendee As Outlook.Recipient
    Set outApp = New Outlook.Application
    Set outtest = outApp.CreateItem(olAppointmentItem)
   
   
    With outtest
        .MeetingStatus = olMeeting                                  'Termin wird zu Besprechung
        .Start = Start(counter1)
        .End = Ende(counter1)
        .Body = "Bitte um Zu- oder Absage"
        .AllDayEvent = False
        .ReminderMinutesBeforeStart = 60
        .Subject = parSubject

       
      If TeilnehmergruppeSFN = True Then                            'SFN Mitarbeiter einladen
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Vorname, Nachname, EmailAdresse FROM qry_MitarbeiterSFN")
                               
    Do Until rs.EOF
 
       .Recipients.Add rs!EmailAdresse
       rs.MoveNext
    Loop
   
        .Save
        .Send
    End If
   
      If TeilnehmergruppeSFH = True Then                               'SFH Mitarbeiter einladen
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Vorname, Nachname, EmailAdresse FROM qry_MitarbeiterSFH")
                               
    Do Until rs.EOF
 
       .Recipients.Add rs!EmailAdresse
       rs.MoveNext
    Loop
   
        .Save
        .Send
    End If
   
   
      If TeilnehmergruppePraktikanten = True Then                        'Praktikanten einladen
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Vorname, Nachname, EmailAdresse FROM qry_MitarbeiterPraktikanten")


    Do Until rs.EOF

       .Recipients.Add rs!EmailAdresse
       rs.MoveNext
    Loop

        .Save
        .Send
    End If
    End With
   
    Next counter1

   
'Alle Object-Variablen hier zerstören
    Set db = Nothing
    rs.Close
    Set rs = Nothing
   
    End If
   
End Function


Private Sub Blocker_versenden_Click()

Call fncOutlook_Termin_Eintragen(Me!SchulungsblockTitel, Me!TeilnehmergruppeSFN, Me!TeilnehmergruppeSFH, Me!TeilnehmergruppePraktikanten, Me!Termin1Beginn, Me!Termin1Ende, Me!Termin2Beginn, Me!Termin2Ende, Me!Termin3Beginn, Me!Termin3Ende)

End Sub



2. Ich möchte einen "Abbrechen" Button im Unterformular, der gleichzeitig aber auch für das HF funktioniert. Gibt es die Möglichkeit alle "Aktionen" aufzuzeichnen die seit dem öffnen des Formulars (HF inkl. UF) getätigt wurden und diese dann per Klick rückgängig zu machen? also quasi das Speichern zu verhindern wenn man vom HF ins UF wechselt und umgekehrt und das ganze noch aufzeichnet um es anschließend rückgängig zu machen.   


Beste Grüße
Daniel
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Wert aus Textfeld überspringen
« Antwort #1 am: November 23, 2017, 10:02:46 »
Hallo,
Zitat
daher hab ich das ganze vereinfacht.
Das geht im Regelfall schief. Man kann eine DB nicht einfach mal vereinfachen.

Die Schulungstermine sind als je ein Datensatz in eine extra Tabelle auszulagern. Dann kannst Du jeden Termin einzeln verschicken.
Das wäre dann wirklich die Vereinfachung.

Zeige bitte mal ein Bild des aktuellen Beziehungsfensters.
Gruß
Klaus
 

Offline Daniel92

  • Newbie
  • Beiträge: 40
Re: Wert aus Textfeld überspringen
« Antwort #2 am: November 23, 2017, 10:28:59 »
Danke für die schnelle Antwort!

Ich hab keine extra Tabelle für die Termine gemacht, weil es in der Regel immer 3 Termine pro Schulungsblock sind und ich nicht weiß wie ich mit einem UF im UF arbeiten kann. Dann bräuchte ich ja das HF Schulungsblock mit dem UF Termine und dem UF Themen....
Jetzt denke ich mir, es wäre nicht schlecht das ganze dynamisch zu gestalten, falls es doch mal mehr oder weniger als 3  Termine sind....

Einen Code oder eine alternative Lösung gibt es nicht um ein leeres Feld zu überspringen?
Ich hab auch mal ein Bild von dem Schulungsblock erstellen Formular hinzugefügt.

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Wert aus Textfeld überspringen
« Antwort #3 am: November 23, 2017, 10:37:30 »
Hallo,
Zitat
Jetzt denke ich mir es wäre nicht schlecht das ganze dynamisch zu gestalten, falls es doch mal mehr oder weniger als 3  Termine sind....
unter diesen Bedingungen halte ich die extra Tabelle für die Schulungstermine für erforderlich. Bei 4 Terminen müsstest Du ja alle Formulare, Berichte, VBA Code, Abfragen einfach alles ändern. Das muss Dir doch einleuchten, dass es das nicht sein kann.
Wenn die Termine in einer extra Tabelle stehen, ist das dann einfach ein neuer Datensatz und fertig.

Die Beziehungen halte ich auch für falsch. Auch das Mehrwertfeld für die Teilnehmergruppen in der Mitarbeitertabelle solltest Du nicht verwenden. Mehrwertfelder sind keine gute Lösung und machen nur Probleme. Hier ist noch eine Tabelle erforderlich (n:m Beziehung) zur Zusammenstellung der Gruppen. Es gibt auch keine Beziehung zum Thema von den Gruppen.
Das muss noch mal komplett überdacht und überarbeitet werden. Es entspricht auch nicht den bisherigen Vorschlägen, von denen Du relativ wenig umgesetzt hast. Wenn Du was nicht verstanden hast, frage nach, aber nicht einfach eigene Kreationen machen, die dann nur scheinbar vereinfachend sind. Da gehören auch die unsäglichen Mehrwertfelder dazu die so einfach scheinen, aber in Wirklichkeit alles nur verkomplizieren.
Dass die raus sollen, wurde Dir schon mehrfach geraten.
Lasse die Formulare mal beiseite, die sind noch gänzlich unwichtig. Ich bin auch sicher, dass sich fast alle Deine bisherigen Probleme bei korrektem Datenmodell in Luft auflösen.
« Letzte Änderung: November 23, 2017, 10:52:37 von MzKlMu »
Gruß
Klaus
 

Offline Daniel92

  • Newbie
  • Beiträge: 40
Re: Wert aus Textfeld überspringen
« Antwort #4 am: November 23, 2017, 11:21:35 »
Ja, das ist ja mein Problem. Ich dachte da daran alles auf 5 Termine auszuweiten (Formulare, Code usw.) und dann leere Felder zu überspringen. Wie gesagt, es sind in der Regel 3 Termine, nur 1x kam es vor das es 4 Termine waren, da hätte ich mit 5 Terminen gut Puffer....

Ich hab das mit einer n:m Beziehung versucht, nur lief das nicht wie erwartet und ich habs wieder verworfen. Das Mehrwertfeld ist nur dazu da um einem Mitarbeiter mehrere Teilnehmergruppen zuzuordnen. Also ein Mitarbeiter kann Praktikant sein und gleichzeitig bei SFN. Im nachhinein wird ja nochmal in der Abfrage gefiltert und die Mail/ Termine gehen auch an die richtigen Mitarbeiter raus.
Ich hab keine Beziehung zwischen Thema und Teilnehmergruppe weil ich die nicht brauch (denk ich zumindest). Die Teilnehmergruppe ist abhängig vom Schulungsblock und dem Termin. Ob das jeweilige Thema auch relevant für die Teilnehmergruppe ist, sehen die Mitarbeiter dann auf dem Bericht.

Das selbe Problem wie bei den Terminen hab ich auch bei den Tutoren bzw. Vertretungen von den Tutoren, wenn das Feld leer ist kann ich keinen Wert übergeben und es kommt eine Fehlermeldung.
Mit der Möglichkeit ein leeres Feld zu überspringen oder das zu umgehen hätte ich alle Probleme gelöst....

Beste Grüße
Daniel
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Wert aus Textfeld überspringen
« Antwort #5 am: November 23, 2017, 11:53:54 »
Hallo,
glaube mir/uns, das wird so nix.
Die Struktur ist so unbrauchbar, Du kannst so nicht weiter machen, das gibt Murks.
Zitat
nur lief das nicht wie erwartet und ich habs wieder verworfen.
Statt verwerfen hättest Du besser nachgefragt.
Zitat
Also ein Mitarbeiter kann Praktikant sein und gleichzeitig bei SFN.
Dazu braucht es kein Mehrwertfeld. Das ist eine ganz klassische n:m Beziehung. Mit dem Mehrwertfeld handelst Du Dir nur Probleme ein.
Zitat
Ich hab keine Beziehung zwischen Thema und Teilnehmergruppe weil ich die nicht brauch (denk ich zumindest).
Da denkst Du falsch. Beziehungen sind das A+O einer Datenbank. Es gibt so gut wie nie Tabellen die keine Beziehung haben. Wenn Du keine Möglichkeit siehst sinnvolle Beziehungen anzulegen, sind wir schon wieder beim falschen Datenmodell.
Zitat
Mit der Möglichkeit ein leeres Feld zu überspringen oder das zu umgehen hätte ich alle Probleme gelöst....
Nie im Leben, vieleicht das eine Problem, aber mit der falschen Struktur kommen noch Probleme, die Du gar nicht siehst.

Falls Du am richtigen Aufbau interessiert bist, lade die DB mit dem aktuellen Zustand mal hoch.
Gruß
Klaus
 

Offline Daniel92

  • Newbie
  • Beiträge: 40
Re: Wert aus Textfeld überspringen
« Antwort #6 am: November 23, 2017, 13:07:43 »
Okay, ich vertrau da voll und ganz auf deine/ eure Kompetenz!

Wie kann ich denn die DB hochladen? Die Datei hat 7,25MB und hier ist die Größe auf 1MB beschränkt. Per Mail würde es gehen, nur dann ist die DB nicht auf der Plattform.

Beste Grüße
Daniel

 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Wert aus Textfeld überspringen
« Antwort #7 am: November 23, 2017, 13:18:16 »
Hallo Daniel,
Daten reduzieren, Reparieren/Komprimieren (Menu Datenbanktools) und zippen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Wert aus Textfeld überspringen
« Antwort #8 am: November 23, 2017, 14:31:40 »
Hallo Klaus,
Erstmal danke, aber ich glaube du bist im falschen Thread gelandet.
Lässt sich das ändern? Möchte hier nicht antworten wegen OT.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Daniel92

  • Newbie
  • Beiträge: 40
Re: Wert aus Textfeld überspringen
« Antwort #9 am: November 23, 2017, 15:52:06 »
Im Anhang findet Ihr die DB.
Ich bin für jeden Tipp dankbar!

Beste Grüße
Daniel
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Wert aus Textfeld überspringen
« Antwort #10 am: November 23, 2017, 16:08:16 »
Hallo,
erst mal noch Fragen:
Wenn Du immer ganze Gruppen zur Schulung schicken willst, wie hast Du Dir das gedacht, wenn mal ein Mitglied der Gruppe krank ist und die Prüfung mit einer anderen Gruppe nachholen muss ?
Ist ein Schulungsblock immer für eine Gruppe ?
Ist der Tutor ein Mitarbeiter oder ist der extern ?
Werden in einem Schulungsblock mehrere Themen behandelt und zu jedem Thema gibt es einen andern Tudor ?

Bitte erkläre auch noch mal die Gesamtzusammenhänge ohne jetzt die Datenbank im Blick zu haben.

@Ekkehard
Ja, war falscher Thread. Da war ich etwas schusselig. Ich antworte Dir noch im richtigen Thema.
« Letzte Änderung: November 23, 2017, 17:30:51 von MzKlMu »
Gruß
Klaus
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Wert aus Textfeld überspringen
« Antwort #11 am: November 23, 2017, 18:33:42 »
Hallo Daniel,
Abgesehen von Klaus' Einwänden in #5, denen ich voll und ganz zustimme,
kannst du es so versuchen (auch wenn dein Ansatz falsch ist)
Public Function fncOutlook_Termin_Eintragen( _
                ByVal parSubject As String, _
                ByVal SFN As Boolean, _
                ByVal SFH As Boolean, _
                ByVal Praktikanten As Boolean, _
                ByVal dStart1 As Date, _
                ByVal dEnd1 As Date, _
                Optional ByVal dStart2 As Date = 0, _
                Optional ByVal dEnd2 As Date = 0, _
                Optional ByVal dStart3 As Date = 0, _
                Optional ByVal dEnd3 As Date = 0)

    .
    .
    .
        For counter1 = 0 To 2
            If start(counter1) > 0 Then
            .
            .
            .
            End If
        Next counter1

    End If

'Alle Object-Variablen hier zerstören, -> macht man üblicherweise erst ganz am Ende
    rs.Close
    Set rs = Nothing
    Set db = Nothing
   
End Function

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Daniel92

Offline Daniel92

  • Newbie
  • Beiträge: 40
Re: Wert aus Textfeld überspringen
« Antwort #12 am: November 24, 2017, 09:49:11 »
Guten Morgen.

Zitat
Wenn Du immer ganze Gruppen zur Schulung schicken willst, wie hast Du Dir das gedacht, wenn mal ein Mitglied der Gruppe krank ist und die Prüfung mit einer anderen Gruppe nachholen muss ?

Es gibt keine Prüfung am Ende eines Schulungsblocks. Die Schulungsblöcke sind dazu da um z.B. Erneuerungen an Programmen zu besprechen, neue Programme zu schulen, den Umgang mit bestimmten Geräten zu erklären usw.
Schulungsgruppen kann man als Abteilungen sehen. Falls bei dem zu schulenden keiner der 3 Termine passen sollte, weil er krank ist oder sonstiges, wird er von seinen schon geschulten Kollegen auf den Stand der Dinge gebraucht. Eine Gruppe/Abteilung besteht aus ca. 15 Mitarbeitern und nach jetzigem Stand sollen mit dem Schulungstool auch nur 2 Gruppen zu den Schulungsterminen eingeladen werden.

Zitat
Ist ein Schulungsblock immer für eine Gruppe ?
Ein Schulungsblock kann für eine oder mehrere Gruppen sein, genauso wie die Themen.
Bsp.: an Schulungsblock 1 (mit 4 Themen) sollen SFN und SFH geschult werden, 2 von den Themen interessieren beide Gruppen und die anderen 2 Themen nur die jeweilige Gruppe.
Deswegen hab ich auf dem Formular frm_Schulungsblock_erstellen den Button "Blocker versenden". Die möglichen Termine vom Schulungsblock sollen versendet werden und die Mitarbeiter können sich dann den passenden Termin "blocken". Welches Thema für den jeweiligen Mitarbeiter relevant ist, kann er dem Bericht entnehmen der danach noch extra versendet wird. Jeder Mitarbeiter weiß ja in welche Gruppe/ Abteilung ist.

Zitat
Ist der Tutor ein Mitarbeiter oder ist der extern ?
Meistens Mitarbeiter, kann aber auch extern sein.

Zitat
Werden in einem Schulungsblock mehrere Themen behandelt und zu jedem Thema gibt es einen andern Tudor ?
Ja, jeder Schulungsblock hat mehrere Themen und jedes Thema hat seinen eigenen Tutor.

Ich hoffe das war ausführlich genug und danke nochmal für eure Hilfe!

Beste Grüße
Daniel
« Letzte Änderung: November 24, 2017, 09:57:16 von Daniel92 »
 

Offline Daniel92

  • Newbie
  • Beiträge: 40
Re: Wert aus Textfeld überspringen
« Antwort #13 am: November 24, 2017, 10:35:18 »
Hallo Ekkehard,

danke für deinen Beitrag.

Zitat
Abgesehen von Klaus' Einwänden in #5, denen ich voll und ganz zustimme,
kannst du es so versuchen (auch wenn dein Ansatz falsch ist)

Ich habs mit dem Code versucht, leider kommt immer noch die selbe Fehlermeldung. "Unzulässige Verwendung von Null"
Trotz des falschen Ansatzes wäre es schön wenn das Programm funktioniert, dann hab ich wenigstens ein Backup für den Fall der Fälle :)

Beste Grüße
Daniel
 

Offline Frithjiof

  • Newbie
  • Beiträge: 41
Re: Wert aus Textfeld überspringen
« Antwort #14 am: November 24, 2017, 11:38:48 »
Hallo Daniel92.
Ich habs mit dem Code versucht, leider kommt immer noch die selbe Fehlermeldung. "Unzulässige Verwendung von Null"

Im Datenbank Jargon existieren zwei Sorten von 0. Einmal 0 so wie du es verstehst und einmal NULL wie du es offensichtlich noch nicht verstehst.

Letzteres bedeutet, dass das Feld welches du auslesen willst gar keinen Wert enthält. Solche Parameter lassen sich nicht bearbeiten.

Darum müsstest du in dem Funktionsaufruf
Zitat
Call fncOutlook_Termin_Eintragen(Me!SchulungsblockTitel, Me!TeilnehmergruppeSFN, Me!TeilnehmergruppeSFH, Me!TeilnehmergruppePraktikanten, Me!Termin1Beginn, Me!Termin1Ende, Me!Termin2Beginn, Me!Termin2Ende, Me!Termin3Beginn, Me!Termin3Ende)
 
Alle Felder erstmal auf NULL prüfen.
Zitat
dim t3b
t3b= nz(Me!Termin3Beginn,0)

Die Variabeln kannst Du dann der Funktion übergeben.

Frithjof