Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Icemann1970 am Mai 08, 2017, 21:33:05

Titel: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 08, 2017, 21:33:05
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 08, 2017, 23:28:12
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 09, 2017, 01:33:43
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?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 11, 2017, 22:20:34
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?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 11, 2017, 22:49:38
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 ?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 11, 2017, 23:23:39
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 12, 2017, 06:31:58
Morgen Klaus.
Sorry, habe nicht richtig gelesen. Sollte mal alles in Ruhe machen. Bin jetzt auf dem richtigen Weg.
Danke nochmal
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 08:44:54
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?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: DF6GL am Mai 14, 2017, 09:15:00
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
.
.
.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 10:33:52
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 ?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: DF6GL am Mai 14, 2017, 11:28:05
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 "
.
.


Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 11:33:06
Hallo,
ich habe in dem Bild weiter oben das LOGO entfernt (War gewünscht worden).

Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 13:38:35
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 13:39:10
 CurrentDb.Execute "Update Material Set BestellDatum = Now() Where [Geräte Nummer] = '" & Me![Geräte Nummer] & "' And [ImLagerErhältlich] = True " & "' And [BestellDatum] = "IsNull"
   
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 14:10:19
aber das funktioniert nicht :-(
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Beaker s.a. am Mai 14, 2017, 14:15:51
... And [ImLagerErhältlich] = True And [BestellDatum] IsNull
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 14:36:21
Da kommt die Fehlermeldung:
1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 14:41:30
halt.... ich muss erst was testen..... ich glaube ich habe den Fehler gefunden
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 14:46:45
doch nicht.......
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 14:53:54
Hallo,
bitte zeige genau wie Du es jetzt umgesetzt hast.
Wie sonst stellst Du Dir Hilfe vor ?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 15:15:20
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"

   
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 15:37:33
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 16:03:37
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'
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 16:08:15
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 16:18:26
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.

Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 16:29:46
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 16:50:56
Sorry für die Frage jetzt :-)
Einfügen zwischen CurrentDB.  und Execute.....    oder vor dem ganzen Befehl CurrentDB.Execute....... ?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 17:08:36
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 ......
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: DF6GL am Mai 14, 2017, 17:28:34
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"
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 17:47:31
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 :-)

Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 18:39:08
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.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 19:09:09
Alles gut.
Daumen hoch.
Was mache ich aber mit der Geschichte (nichts zu diesem Thema) mit den Codetags, die ich nicht laden kann?
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: MzKlMu am Mai 14, 2017, 19:21:18
Hallo,
Ich kann mir nicht vorstellen, dass das bei Dir nicht da ist.
Du darfst wie gesagt nicht die Schellantwort verwenden.

Siehe Bild.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 19:50:20
Private Sub Aktualisieren_Click()
    Me.Refresh
End Sub
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Icemann1970 am Mai 14, 2017, 19:53:49
geht nicht. habe den Code eingefügt, markiert gelassen und die Raute gedrück.
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Beaker s.a. am Mai 15, 2017, 11:48:11
Zitathätte ich früher merken müssen.
Und ich hätte gleich an meine klemmende Leertaste denken müssen.  ;D
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: DF6GL am Mai 15, 2017, 12:16:34
Zitatklemmende Leertaste

jaja, immer auf die kleinen Dicken schieben, die sich nicht schnell bewegen können...      :P :) :) :) :) :D
Titel: Re: abfrage nach lesebestätigung neu selektieren
Beitrag von: Beaker s.a. am Mai 15, 2017, 17:49:26
Werde meine nächsten Posts mal nicht dahingehend korrigieren, dann siehst du es.