Hallo, ich wieder :-(
Komplizierte Frage, hoffentlich könnt Ihr mich verstehen.
Also, ich habe eine ein Formular basierend auf einer Abfrage erstellt, die angezeigten Daten im Endlosformular werden als Bericht an einer Mail Adresse gesendet. Das ist kein Problem. Jetzt kommts..... wenn ich das Formular (basierend auf die Abfrage) wieder öffne / Aktualisiere, möchte ich die Datensätze, die ich per Mail gesendet habe nicht mehr angezeigt bekommen aber nicht gelöscht, da diese Daten in einem anderen Formular benötigt werden.
Beispiel.
Ersatzteilbestellung zu einem Objekt. Ich bestelle 10 Ersatzteile und sende diese als PDF per Mail und mir fallen am nächsten Tag zu dem gleichen Objekt weitere Ersatzteile ein kann ich die nicht einzeln senden weil die zu den anderen (bereits bestellten) Teilen dazugefügt werden. Um einen Überblick nach ende der Arbeit zu erhalten müssen alle Ersatzteile gespeichert bleiben.
Hoffentlich habe ich mich deutlich ausgedrückt.
Mir schwebt da was durch den Kopf.... Im Aktuellen Abfrage Formular per Befehlsschaltfläche (Bestellung senden) noch zusätzlich automatisch hinter jedem Datensatz ein Häckchen ja/nein automatisch auf 0 oder -1 setzten, das könnte ich ja dann im Vorfeld in den Abfragekriterium eintragen ( Kontrollkästchen xy --> Kriterium "Wahr oder Falsch" setzen.
Hallo,
verwende lieber ein Datum (BestelltAm) statt des Hakens.
Wenn die Mail raus ist, setzt Du per Aktualisierungsabfrage die Datensätze das Datum auf das aktuelle Datum.
Dann siehst Du was wann bestellt wurde. Bei einem leeren Datumsfeld ist die Bestellung nicht raus.
Hallo Klaus.
Stimmt. Du hast recht Datum und Uhrzeit ist noch besser. Habe im Formular hinter einem Button den Code : Dazugehörigen Bericht öffnen, Per Mail senden und Datum einfügen. Funktioniert soweit auch ABER ..... das Datum erscheint nur beim ersten Datensatz im Endlosformular. Habe das Textfeld für Datum im Detailbereich gesetzt.
Würde gerne für den Code die Codetags des Forums benutzen aber es funktioniert bei mir nicht (das Internet ist bestimmt kaputt ) ;-) ;-)
Hast du da eine Lösung oder eine Richtung die ich einschlagen muss?
Hallo,
Wie kann ich ein Datum "Jetzt()" im Formularkopf auf die im Detailbereich im Endlosformular befindliche Gebundenes Feld "BestellDatum" (in alle ausgewählten) Datensätze übergeben?
Hallo,
mit einer Aktualisierungsabfrage. Als Kriterium muss dann der Fremdschlüssel der gedruckten Datensätze verwendet werden.
Hast Du eine übergeordnete Bestellung für die z.B. 10 bestellten Ersatzteile ?
Hallo Klaus.
Wenn ich im Formular die Ersatzteile auswähle kann ich "häckchen" setzen ob die Teile in einer Sammelkiste (Restekiste) da sind, die nicht da sind werden dann über den Button "Material bei Hersteller bestellen" zum Bericht geführt.
Wenn ich dann überprüft habe und den Button "Bestellung senden" drücke soll im Bericht in allen Datensätze das Heutige Datum geschrieben und gespeichert werden. Das Datum brauche ich a`als "Nachweis" und b`für Abfragen damit die bereits bestellten Teile nicht wieder aufgeführt werden.
Siehe Bild im Anhang.
Morgen Klaus.
Sorry, habe nicht richtig gelesen. Sollte mal alles in Ruhe machen. Bin jetzt auf dem richtigen Weg.
Danke nochmal
Guten Morgen Klaus.
Ich komme nicht weiter und brauche nochmal deine / eure Unterstützung. Als erstes kann ich den Code nicht hier mit der # eingeben daher sende ich ihn nochmal so rüber.
So, mein Anliegen ist, wenn ich den Befehl ausführe wird der Bericht gesendet aber das Datum macht Fehler.
Der Befehl ist im Bericht, der gefiltert nach Gerätenummer ist ( in diesem Fall die Nr 1)
Private Sub BestSenden_Click()
Dim Element As Variant, strAdr As String
On Error GoTo Rundmail_Err
DoCmd.OpenReport "MaterialLagerVorhanden", acViewReport, , "[Geräte Nummer] = '" & Me![Geräte Nummer] & "'"
DoCmd.SendObject acSendReport, "", "pdf", strAdr, , , " Ersatzteibestellung zu Gerätenummer: " & Me.Geräte_Nummer & " Geprüft und Freigabe durch " & Me.Text41, " Die Ersatzteile sind auf Lager/Gebraucht. Bestellung wurde geprüft durch siehe Absender der Mail." '(kommt noch automatisierung dazu.)
'INFO: Wenn bericht gesendet soll jetzt bestelldatum in der Tabelle Material Feld BestellDatum mit Jetzt() gefüllt werden
'Me.Text54 = " Nach dem Senden kann ich diesen Text zum testen in dem ungebundenem Textfeld im Bericht
'sehen (nur so für mich zum testen, funktioniert) "
Me.[Material].[BestellDatum] = Now() ' <----- das funktioniert nicht,Fehlermeldung: MS Access kann den in Ihrem Ausdruck angesprochene Feld '1' nicht finden.
Me.Requery
Rundmail_Exit:
Exit Sub
Rundmail_Err:
MsgBox Error$
Resume Rundmail_Exit
End Sub
Fehlermeldeung:
MS Access kann den in Ihrem Ausdruck angesprochene Feld '1' nicht finden.
die 1 hat so wie es aussieht nichts mit der Gerätenummer zu tun da der fehler "Feld'1' auch mit der Gerätenummer 2 auftaucht.
Könnt ihr mir bitte dabei helfen?
Hallo,
.
.
.
.
'INFO: Wenn bericht gesendet soll jetzt bestelldatum in der Tabelle Material Feld BestellDatum mit Jetzt() gefüllt werden
Currentdb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "'"
'Me.Text54 = " Nach dem Senden kann ich diesen Text zum testen in dem ungebundenem Textfeld im Bericht
'sehen (nur so für mich zum testen, funktioniert) "
''''' Me![BestellDatum] = Now() ' Bestelldatum muss im Form vorhanden sein. Diese Zeile ist aber überflüssig.
Me.Requery
.
.
.
Hallo Franz.
Vielen vielen dank. Ich habe da zwei Wochen dran gesessen und Google gequält und du machst das in 10 Minuten. Respekt.
Funktioniert ABER :-) ich habe im Beitrag 5 ein Bild gesendet. In dem Formular wird über Häkchen gefiltert welche Teile intern (Sammelkiste) vorhanden sind und welche nicht. Oben sind zwei Button Intern oder bei Hersteller bestellen. Dein Code erstellt bei allen Datensätzen zugehörig zur Gerätenummer nach dem Senden das Datum, ich würde gerne nur das Datum in den Bestellten (gesendeten) Ersatzteile einfügen lassen. Sprich die Ersatzteile, die noch nicht gesendet wurden bleibt das BestellDatum noch leer. (Da aus "einer" Bestellung ja " zwei (gesplittete)" Bestellungen werden, die an zwei unterschiedliche Adressen gesendet werden.
Hintergrund ist. Im Hauptformular werden zu einem Gerät mit und mit Ersatzteile bestellt, alle bestellten Ersatzteile zu diesem Gerät werden in einer Abfrage bei bedarf abgefragt. ( Kann die gesendeten nicht löschen) wenn der Kollege wieder zu dem Gerät Ersatzteile bestellt, sollen die Bereits bestellten Teile nicht erscheinen, die ich dann mit dem Kriterium " BestellDatum = Wahr " ausblende, Daher darf das Datum nicht in alle Datensätze erscheinen. Kannst du mir das auch noch zeigen ?
Hallo,
wenn ich es richtig deute, dann soll nur bei den Datensätzen mit angehaktem Feld "InternVorhanden" das Datum gesetzt werden...:
.
.
.
Me.Dirty = False
Currentdb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [InternVorhanden] = True "
.
.
Hallo,
ich habe in dem Bild weiter oben das LOGO entfernt (War gewünscht worden).
Danke Klaus.
Danke Franz. Ich würde Euch gerne mal auf einen Grillnachmittag einladen....Natürlich auch diejenigen, die mir bisher so toll geholfen haben, mit Rat und tat. IHR SEID KLASSE !!!!
Nun noch eins, alles funktioniert. Würde aber noch einen kleinen schliff rein bekommen. Die Zeiten wann eine Mail versendet wurde "BestellDatum" soll nicht komplett aktualisiert werden beim senden sondern nur die, die noch kein "Bestelldatum" ausgefüllt haben. Sprich, jetzt werden alle gesendete auf das letzte Datum/Zeit geändert und ich kann nicht kontrollieren wann die einzelnen Bestellungen gesendet wurden.
CurrentDb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [ImLagerErhältlich] = True " & "' And [BestellDatum] = "IsNull"
aber das funktioniert nicht :-(
... And [ImLagerErhältlich] = True And [BestellDatum] IsNull
Da kommt die Fehlermeldung:
1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
halt.... ich muss erst was testen..... ich glaube ich habe den Fehler gefunden
doch nicht.......
Hallo,
bitte zeige genau wie Du es jetzt umgesetzt hast.
Wie sonst stellst Du Dir Hilfe vor ?
Stimmt .... Sorry, bei mir funktioniert das eingeben des Code auf der Seite nicht.
Me.Dirty = False
CurrentDb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [ImLagerErhältlich] = True And [BestellDatum]= IsNull"
Hallo,
wo hatte ekkehard ein = vor dem IsNull ?
Brauchst Du auch die Uhrzeit ? Now() beinhaltet auch die Zeit. Wenn das Datum reicht, verwende Date().
PS:
Und sei doch so freundlich und verwende die Codetags.
Code markieren und oben bei den Buttons die Raute (#) drücken.
Ich habe es oben mal für Dich gemacht.
Datum und Uhrzeit wäre besser. Das mit den Codetags habe ich schon mit ekkehard besprochen. Das funktioniert bei mir nicht. die ganze toolbar kann ich nicht ansprechen.
wenn ich das = zeichen weg lasse kommt die Meldung:
Syntaxfehler (fehlender Operator) in Abrageausdruck'[Geräte Nummer]='1' And[Im´LagerErhältlich]=True And [BestellDatum] IsNull'
Hallo,
bitte zeige doch gleich den Code und nicht erst nach Aufforderung, man muss doch sehen, was Du gemacht hast.
Welcher Datentyp hat denn das Feld "Geräte Nummer" ?
PS:
Für die Codetags darf nicht die Schnellantwort verwendet werden, sondern den normalen Antwortbutton.
Private Sub BestSenden_Click()
Dim Element As Variant, strAdr As String
On Error GoTo Rundmail_Err
DoCmd.OpenReport "MaterialLagerVorhanden", acViewReport, , "[Geräte Nummer] = '" & Me![Geräte Nummer] & "'"
DoCmd.SendObject acSendReport, "", "pdf", strAdr, , , " Ersatzteibestellung zu Gerätenummer: " & Me.Geräte_Nummer & " Geprüft und Freigabe durch " & Me.Text41, " Die Ersatzteile sind auf Lager/Gebraucht. Bestellung wurde geprüft durch siehe Absender der Mail."
Me.Dirty = False
CurrentDb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [ImLagerErhältlich] = True And [BestellDatum] IsNull"
DoCmd.Close acReport, "MaterialLagerVorhanden"
Rundmail_Exit:
Exit Sub
Rundmail_Err:
MsgBox Error$
Resume Rundmail_Exit
End Sub
Das Feld "Geräte Nummer" ist "Kurzer Text".
Wenn ich den teil, den ich gerne umgesetzt haben möchte am ende -> "And [BestellDatum] IsNull" weg lasse Funktioniert der Code komplett. Nur das nach jedem senden das BestellDatum erneuert wird, möchte aber die bereits gesendeten BestellDatum gespeichert bzw nicht geändert haben.
Hallo,
füge mal vor dem Execute folgende Zeilen ein:
Debug.Print "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & _
"' And [ImLagerErhältlich] = True And [BestellDatum] IsNull"
Stop
Der Code stoppt und im Direktbereich siehst Du den String und den zeigst Du mal hier.
Sorry für die Frage jetzt :-)
Einfügen zwischen CurrentDB. und Execute..... oder vor dem ganzen Befehl CurrentDB.Execute....... ?
Hallo,
vor dem ganzen Befehl, dazwischen macht keinen Sinn.
Debug.Print "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [ImLagerErhältlich] = True And [BestellDatum] IsNull"
Stop
CurrentDb.Execute ......
HAllo,
Me.Dirty = False
CurrentDb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [ImLagerErhältlich] = True And [BestellDatum] Is Null"
Hey.... was so ein Leerzeichen zwischen Is und Null so alles ausmachen kann.
Also Is Null und nicht IsNull
Funktioniert !!!
Habe Euch in mein Herz geschlossen :-)
Hallo,
an der Stelle bin ich schon oft reigefallen mit dem Leerzeichen. Ich denke da immer an die Funktion IsNull(Feldname), was ja aber VBA ist und kein SQL.
Sorry Icemann, hätte ich früher merken müssen.
Alles gut.
Daumen hoch.
Was mache ich aber mit der Geschichte (nichts zu diesem Thema) mit den Codetags, die ich nicht laden kann?
Hallo,
Ich kann mir nicht vorstellen, dass das bei Dir nicht da ist.
Du darfst wie gesagt nicht die Schellantwort verwenden.
Siehe Bild.
Private Sub Aktualisieren_Click()
Me.Refresh
End Sub
geht nicht. habe den Code eingefügt, markiert gelassen und die Raute gedrück.
Zitathätte ich früher merken müssen.
Und ich hätte gleich an meine klemmende Leertaste denken müssen. ;D
Zitatklemmende Leertaste
jaja, immer auf die kleinen Dicken schieben, die sich nicht schnell bewegen können... :P :) :) :) :) :D
Werde meine nächsten Posts mal nicht dahingehend korrigieren, dann siehst du es.