Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular per Mail senden

Begonnen von Ericolum, September 25, 2014, 15:59:09

⏪ vorheriges - nächstes ⏩

Ericolum

Hallo,

ich möchte gern ein Formular was mit Daten gefüllt wird per Mail versenden. Und zwar nur dieses gefüllte Formular, ohne die anderen zuvor eingegebenen Datensätze. Das ganze soll per Button angeklickt werden und versendet werden.
Das EmailDatenbankObjekt Makro gibt das aber leider nicht her, das sendet immer alle Datensätze per *.pdf.


Habt Ihr eine Lösung für mein Problem?

Danke!!

MaggieMay

Hallo,

und wenn du das Formular nach dem aktuellen Datensatz filterst, klappt es dann vielleicht?
Freundliche Grüße
MaggieMay

Ericolum

Hallo,

danke für deine Antwort. Es funktioniert so leider nicht. Es werden trotzalledem alle Datensätze in Formularform verschickt. Ich möchte aber nur das aktuelle haben.

Access Vers.: 2010

Hat jemand noch eine Idee? Ich habe mich schon dumm und dusselig gesucht. 


MaggieMay

#3
"Gehe zu" ist kein Filtern, das überrascht also nicht, dass das nichts ändert.
Allerdings kenne ich mich mit Makro-Aktionen nicht aus und kann dir keinen Tipp geben, wie man einen Filter per Makro setzen könnte.

Konvertiere das Makro in VBA-Code, dann kannst du den Filter bspw. folgendermaßen setzen:Me.Filter = "ID=" & Me!ID
Me.FilterOn = True
Freundliche Grüße
MaggieMay

Ericolum

Hallo,

das funktioniert erstmal klasse, jedoch springt der Datensatz nun, nach senden der Mail, in einen neuen Datensatz! Wie kann ich vorgehen wenn ich das Formular weiter bearbeiten möchte?

Hier mein Code:
Private Sub Befehl67_Click()
  Me.Filter = "ID=" & Me!ID
    Me.FilterOn = True
   
    DoCmd.SendObject acSendForm, "Eintragung", "PDFFormat(*.pdf)", "", "", "", "", "Bitte Ersatzteil bestellen.", True, ""
   
End Sub

MaggieMay

Wenn der richtige Datensatz gedruckt wird, ist der Filter also schon mal korrekt gesetzt.
Aber warum das Formular anschließend auf einen neuen Datensatz springen sollte, verstehe ich nicht.
An der Weiterbearbeitung des "Formulars" sollte dich das aber nicht hindern.
Freundliche Grüße
MaggieMay

Ericolum

Ich habe das Problem lokalisiert.
Ich habe ein Makro, dass wenn das Formular geöffnet wird ein neuer Datensatz erstellt wird. Das ist auch notwendig, damit die Bediener/Bearbeiter nicht einen schon vorhandenen Datensatz bearbeiten.

Wenn nun der Sendebutton geklickt wird, wird der Filter aktiv filtert das aktuelle und dann öffnet sich die Mailprozedur. Die Mail wird versandt und man springt wieder in das Formular rein. Jetzt kommt der Haken, nun wird das Formular, warum auch immer, neu geladen und es wird automatisch ein neuer Datensatz angelegt. Das möchte ich aber so nicht.

Könnte mann nach der Stelle (siehe unten) einen springe oder gehe zu Befehl ausführen? Oder gibt es noch andere Möglichkeiten?

Private Sub Befehl67_Click()
  Me.Filter = "ID=" & Me!ID
    Me.FilterOn = True
   
    DoCmd.SendObject acSendForm, "Eintragung", "PDFFormat(*.pdf)", "", "", "", "", "Bitte Ersatzteil bestellen.", True, ""

--> springe zu letztem Datensatz   

End Sub

Wenn ich das Makro ausklammer beim Öffnen des Formulars funktioniert es nach dem Senden der Mail.

DF6GL

Hallo,

ganz klar ist mir die Sache auch nicht...

" neu geladen und es wird automatisch ein neuer Datensatz angelegt. Das möchte ich aber so nicht. "

Eigentlich willst Du das schon:  "dass wenn das Formular geöffnet wird ein neuer Datensatz erstellt wird. Das ist auch notwendig,..."

"..damit die Bediener/Bearbeiter nicht einen schon vorhandenen Datensatz bearbeiten. "

Erklär mal den GENAUEN Ablauf der Bedienung.

Ericolum

Man öffnet ein Formular (siehe Anhang), was zur Eintragung durchgeführter Reparaturen geführt werden soll. So eine Art Schichtbuch. 

Der Bearbeiter (Instandhalter - IH) füllt dieses aus. Wenn ein dringendes Ersatzteil benötigt wird, soll er die Möglichkeit haben dieses im Lager anzufordern. Deshalb habe ich ein Kontrollkästchen angelegt welches beim aktivieren den Button Email für ET versenden aktiviert.

Wenn er dann darauf klickt wird das Formular im Hintergrund versendet, so wie er es vor sich sieht. Das ganze soll er auch mitten während der Eintragung durchführen, so kann es nicht vergessen werden.
Danach kann er noch einen Folgeeinsatz einschreiben und ggf. eine neue Eintragung tätigen oder zurück auf Home...

Ich hoffe die Erklärung genügt.

Problem:

beim Öffnen muss das Formular auf einen neuen Datensatz spingen, aber nach dem Mail senden nicht. Da soll es so bleiben wie es ist zum weiter bearbeiten.


DF6GL

Hallo,

ein Formular ist grundsätzlich nicht geeignet, um gedruckt oder als PDF-Datei exportiert zu werden.

Erstell einen Bericht ("rpt_Eintragung") mit passendem Layout. Für die  Datenherkunft des Berichtes erzeuge eine (beliebige) Anfrage mit Namen "abf_rptExport"

Schreib als Ereignisprozedur für den EMail-Versand-Button (oder PDF-Export-Button):

Private Sub btnExport_Click()

Runcommand accmdSaveRecord

Currentdb.Querydefs!abf_rptExport.SQL = "Select * from [color=green]<<DeineTabelle>>[/color] Where [color=green]ID[/color] =" & Me![color=green]ID[/color]
 
    DoCmd.SendObject acSendReport, "rpt_Eintragung", "PDFFormat(*.pdf)", "", "", "", "", "Bitte Ersatzteil bestellen.", True, ""

End Sub

Ersetze die grün-markierten Namen durch die realen in Deiner DB.

Ericolum

Hallo,

habe ich ausprobiert, jedoch zeigt es im Bericht dann nicht die versteckten Felder an, auch wenn sie vorher sichtbar gemacht wurden.

Der erste Variante gefällt mir schon sehr gut. Jedoch besteht das Problem noch mit dem neuen Datensatz. Da wäre ich über eine andere Variante dankbar. Denn noch eine Schaltfläche anlegen würde ich ungern mit der man beim öffnen ans Ende springt.

Vieleicht hat jemand noch eine Idee?

MaggieMay

Hallo,

du kannst doch den Bericht so entwerfen wie er sein soll. Ob es im Formular versteckte Felder gibt, geht den Bericht doch nichts an, ich sehe da keinen Zusammenhang, das musst du schon genauer erklären.

Was den Sprung auf den neuen Datensatz nach dem Drucken bzw. Senden betrifft, so passiert das nicht von allein. Gibt es noch weitere Makros oder VBA-Befehle, die in dem Zusammenhang ausgeführt werden?

Zitatspringe zu letztem Datensatz
Das könnte bspw. so aussehen:DoCmd.RunCommand acCmdRecordsGotoLast
Freundliche Grüße
MaggieMay

Ericolum

Hallo,

ich habe das Problem gerade gefunden. Ist absolut banal und völlig simpel. Ich habe "gehe zu neuen Datensatz" in den Formulareigenschaften beim Anzeigen vergeben anstatt beim Formular öffnen. Somit ist jetzt alles i.O.! Geändert und der Datensatz bleibt im Formular.

Ich danke euch!!!

Abgeschlossen....  ;D