Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Memofunktion für Access DB
Gehe zu Seite Zurück  1, 2
zurück: Access Automatisierung weiter: Verknüpfung von Access und MySQL Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
BoRo85
Access-Einsteiger; Excel-Kenner (ohne VBA)


Verfasst am:
29. Jan 2010, 10:25
Rufname: Anna
Wohnort: Hamburg


AW: Memofunktion für Access DB - AW: Memofunktion für Access DB

Nach oben
       Version: Office 2007

Jetzt komme ich endlich dazu, meine (fast fertige) Lösung vorzustellen:

Als erstes habe ich drei Tabellen erstellt:
Code:
tblBenutzer:                 tblNachricht:                             tblBenutzerNachricht
ID (AutoWert;PS)             ID (AutoWert;PS)                          ID (AutoWert;PS)
Benutzername (Text)          IDSender (Zahl)                           IDNachricht (Zahl)
                             Nachricht (Memo)                          IDEmpfänger (Zahl)
                             SendDatum (Datum/Uhrzeit)                 EmpfängerDatum (Datum/Uhrzeit)


Dann habe ich eine Abfrage (qryNachricht) erstellt:
Code:
SELECT tblNachricht.SendDatum, DLookUp("MitarbeiterVorname & ' ' & MitarbeiterZuname","tblBenutzer","ID = " & [IDSender]) AS Sender, tblNachricht.Nachricht, tblBenutzerNachricht.EmpfangDatum, tblBenutzer.Benutzername
FROM tblNachricht INNER JOIN (tblBenutzerNachricht INNER JOIN tblBenutzer ON tblBenutzerNachricht.IDEmpfänger = tblBenutzer.ID) ON tblNachricht.ID = tblBenutzerNachricht.IDNachricht
WHERE (((tblBenutzerNachricht.EmpfangDatum) Is Null) AND ((tblBenutzer.Benutzername)=fctEnviron("Username")))
ORDER BY tblNachricht.SendDatum;


Das Formular selbst hat ein ungebundenes Textfeld (für die Nachricht), ein ungebundenes Listenfeld (zur Auswahl der Empfänger) und zwei Button (1x zum Nachricht senden, 1x zum Aufrufen des Verlaufs).

Der "Zeitgeberintervall" des Formulars ist auf 3000 eingestellt und unter "Bei Zeitgeber" habe ich folgenden Code:

Code:
Private Sub Form_Timer()

    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("qryNachricht", dbOpenDynaset)
    If rs.EOF Or rs.BOF Then
    rs.Close
        Set rs = Nothing
        Exit Sub
    End If
   
    Me.TimerInterval = 0
    CurrentDb.Execute "UPDATE qryNachricht SET EmpfangDatum = Now();", dbFailOnError
   
    Beep
    MsgBox rs!Nachricht, vbInformation, "Nachricht von " & rs!Sender & " vom " & Format(rs!SendDatum, "dd.mm.yyyy   hh:nn")
    rs.Close
    Set rs = Nothing
    Me.TimerInterval = 3000

End Sub


Für den Senden Button ist folgender Code hinterlegt:
Code:
Private Sub btnSend_Click()

    If IsNull(Nachricht) Then
        MsgBox "Bitte eine Nachricht eingeben!", vbInformation, "Nachricht"
        Nachricht.SetFocus
       Exit Sub
    End If
   
    If lboAuswahl.ItemsSelected.Count = 0 Then
        MsgBox "Bitte mindestens einen Empfänger auswählen!", vbInformation, "Nachricht"
        lboAuswahl.SetFocus
       Exit Sub
    End If
   
   Dim rs1 As DAO.Recordset, rs2 As Recordset, var As Variant, x As Long
   Set rs1 = CurrentDb.OpenRecordset("tblNachricht", dbOpenDynaset)
   rs1.AddNew
   rs1!Nachricht = Nachricht
   rs1!IDSender = DLookup("ID", "tblBenutzer", "Benutzername = '" & Environ("Username") & "'")
   rs1!SendDatum = Now()
   rs1.Update
   rs1.MoveLast
   
   Set rs2 = CurrentDb.OpenRecordset("tblBenutzerNachricht", dbOpenDynaset)
   For Each var In lboAuswahl.ItemsSelected
      rs2.AddNew
      rs2!IDEmpfänger = lboAuswahl.ItemData(var)
      rs2!IDNachricht = rs1!ID
      rs2.Update
   Next var
   
   rs1.Close
   rs2.Close
   Set rs1 = Nothing
   Set rs2 = Nothing
   
   Nachricht = Null
   Nachricht.SetFocus
   For x = 0 To lboAuswahl.ListCount - 1
      lboAuswahl.Selected(x) = False
   Next x
 
End Sub

Die MsgBox mit der Info "Nachricht gesendet, habe ich weg gelassen, da das Formular zum Senden und Empfangen genutzt wird. Sollte man z.B. eine Nachricht an sich selbst schicken, stört die MsgBox den Empfang.

Um das Problem mit DLookup zu umgehen würde ich gern die Möglichkeit geben einen Verlauf anzeigen zu lassen. Und genau da habe ich noch ein kleines Problem:

Für den Verlauf habe ich auch den Zeitgeberintervall 3000 und den o.g. "Bei Zeitgeber" Code hinterlegt.
Den Verlauf der Nachrichten lasse ich derzeit über ein Ufo Endlosformular anzeigen:
Code:
SELECT tblNachricht.SendDatum, tblNachricht.Nachricht, tblBenutzerNachricht.EmpfangDatum, tblNachricht.IDSender, tblBenutzerNachricht.IDEmpfänger
FROM tblNachricht INNER JOIN (tblBenutzerNachricht INNER JOIN tblBenutzer ON tblBenutzerNachricht.IDEmpfänger = tblBenutzer.ID) ON tblNachricht.ID = tblBenutzerNachricht.IDNachricht
ORDER BY tblNachricht.SendDatum DESC;

In das Endlosformular habe ich folgende Felder übernommen:
SendDatum
IDSender
EmpfangDatum
IDEmpfänger
Nachricht

Mein Problem: Nun werden aber alle gesendeten Nachrichten angezeigt. Ich hätte aber gern, dass jeder nur die Nachrichten sieht, die an ihn verschickt wurden.

Irgendwie stehe ich da ein bissel auf dem Schlauch, könnte mich hier nochmal jemand unterstützen?
Vielen Dank

_________________
LG Anna
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite Zurück  1, 2
Diese Seite Freunden empfehlen

Seite 2 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps