Neuigkeiten:

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

Mobiles Hauptmenü

Daten werden beim Einlesen abgeschnitten

Begonnen von Manfred S, Juli 30, 2012, 20:50:50

⏪ vorheriges - nächstes ⏩

Manfred S

Hallo,

mit folgendem Code ziehe ich Daten über ein Kombifeld aus einer Tabelle und übertrage sie in eine andere Tabelle. Beide Datenfelder sind Memofelder:

Me!EmailBody = Me!EmailBetreff.Column(1)

Es werden auch die relevanten Daten ohne Fehlermeldung eingelesen. Alles gut bis auf die Tatsache, das der eingelesene Text einfach abgeschnitten wird. Beide Tabellenfelder sind aber auf Memo eingestellt. Oder ist es nicht möglich, den Inhalt aus einem Memofeld so einzulesen?

Gruß


Beaker s.a.

Hallo Manfred,
Warum willst Du Daten doppelt speichern?
Ohne Dein Datenmodell zu kennen sieht die Vorgehensweise danach
aus, als wenn die "Bodies" in einer Vorratstabelle gespeichert sind.
Dann reicht IMO aber die Speicherung der ID. Über die kommst Du
doch jederzeit an das Memo.
Zum Problem an sich könnte ich mir vorstellen, dass eine Spalte in
Kombis nur die üblichen 255 Zeichen aufnehmen/weitergeben kann.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Manfred S

Hallo Ekkehard,

ja, habe eine Tabelle zur Speicherung sowohl der Betreffzeile als auch des Bodys.

Du hast Recht, wozu diese Redundanz. Ich bekomme es wohl noch hin, den Primärschlüssel auszulesen und zu speichern. Den bislang verwendeten "Übertragungscode" bekomm ich ohne Weiteres sicherlich nicht ohne Hilfe an Start:

On Error GoTo cmdEmailbild1_Err
Me.Refresh
'Wenn das Feld leer ist, gebe dem User eine Meldung aus, ansonsten erzeuge eine Mail:
If IsNull(Me.AdrMail1) Then
If MsgBox("Private Mailadresse nicht vorhanden. Jetzt eingeben?", vbYesNo + vbInformation, "Hinweis") = vbYes Then
        DoCmd.Close acForm, Me.Name
' Ansonsten, Popup schliessen, Adresse aufrufen, Focus auf Steuerelement "Nachname" setzen und Mailadresse eingeben.
    Forms![frmAdressen]!MailAW.SetFocus
   Forms![frmAdressen]!MailAW.Dropdown
   End If
Else
' Mailversand, wenn kein anderer Fehler vorliegt.
DoCmd.SendObject , , , Me.AdrMail1, , , Me!EmailBetreff, Me!EmailBody, True
Me!Mailversandprivat = Now()
End If

GoTo cmdEmailbild1_EndIt
cmdEmailbild1_Err:
If Err.Number = 2501 Then
'Senden der Mail wurde abgebrochen:
MsgBox "Das Senden der Mail wurde abgebrochen", vbInformation, "Hinweis"
'Me!Mailversandprivat = ""
Else
'Ein anderer Fehler ist aufgetreten:
MsgBox "Ohne Texteingabe im Feld 'Email Betreff' kann keine Mail versendet werden. Geben Sie einen Text im Betreff ein, wählen eine Vorlage über den Rollbalken aus oder brechen Sie den Vorgang über den Schliessen Button ab.", 16, "Betreffzeile nicht ausgefüllt"
'MsgBox "Fehler: " & vbCrLf & Err.Number & vbCrLf & Err.Description, vbCritical, "Fehler"
End If
cmdEmailbild1_EndIt:





DF6GL

Hallo Manfred,


die Spalten einer Kombifeldliste sind vom Typ TEXT und können jeweils max. nur 255 Zeichen aufnehmen....

Versuch es so, das Memofeld auszulesen:

Me!EmailBody = Dlookup("DeinMemofeld","tblDeineMemotabelle", "IDFeld=" &  Me!EmailBetreff)

wobei das Kombifeld in seiner ersten Spalte den Primärschlüsselfeldwert (IDFeld) beinhalten muss.

Manfred S

Hallo Franz,

der Text wird jetzt vollständig übernommen und als Body in die Email übernommen. Allerdings wird beim Übertragen in das Emailprogramm jetzt der Primärschlüsselwert des Betreffs in die Betreffzeile des Mailprogramms eingetragen und nicht der Klartext...

Gruß

Manfred

Manfred S

Habe es gelöst, indem ich ein "Hilfsdatenfeld" angelegt habe, in dem der Textwert abgelegt wird und auf nicht sichtbar eingestellt. Da verdrehet sich sicherlich das Programmiergerz, aber es funktioniert einwandfrei :-)

Danke

DF6GL

Hallo,


dann dreh nochmal am "Programmiergerz" und schreib:

DoCmd.SendObject , , , Me.AdrMail1, , , Me!EmailBetreff.Column(1) , Me!EmailBody, True


wobei in der ersten Spalte des Kombis der ID-Wert, in der zweiten der Betreff stehen muss.

Manfred S

#7
Einfach schon göttlich Franz,  

und autsch, das funktioniert so was von perfekt. Und jetzt kann ich, wie ursprünglich geplant, sehen, was als letzte Mail rausgegangen ist (wegen Speicherung der letzten Emailversanddaten). Irgendwann kommt auch noch ein automatisierter Dateianhang hinzu.

Seit 2004 steter Verbesserung meiner DB und nach ca. 4000 Arbeitsstunden gibt es doch noch immer etwas, was es zu verbessern gilt. Danke Dir und den anderen freundlichen Helfern hier.

Gruß

Manfred