2.3k Aufrufe
Gefragt in Datenbanken von ble Einsteiger_in (13 Punkte)
Ich habe eine Accessformlar gebastelt. Es hat zwei Suchfelder, Text18 und Text20.
Wenn bei eine Eingabe in die Suchfelder kein entsprechender Datensatz gefunden wird, soll nach Klicken eine Buttons eine E-Mail an mich versandt werden können mit einen entsprechenden Hinweis.

9 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Die Deklaration schreibste irgendwohin ganz oben unter:
Option Compare Database
Option Explicit


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long



Private Sub Mail_Click()
Dim Str As String

Str = "mailto:info@deineMail.de?" _
& "subject=Suchfeldfehler& body=" & Kundenname
ShellExecute Me.hwnd, vbNullString, Str, vbNullString, vbNullString, 0

End Sub


gruß marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
upps sorry, ich wollte nich Quote sondern Code anklicken, sollte also so aussehen:

Die Deklaration schreibste irgendwohin ganz oben unter:
Option Compare Database
Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long


Private Sub Mail_Click()
Dim Str As String

Str = "mailto:info@deineMail.de?" _
& "subject=Suchfeldfehler& body=" & Kundenname
ShellExecute Me.hwnd, vbNullString, Str, vbNullString, vbNullString, 0

End Sub
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Um gleich deine erste Frage zu beantworten :-)) Das Fragezeichen muss bleiben hinter deiner mailadresse:


Str = "mailto:info@deineMail.de?"
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Äh nochwas, der Kundenname ist bei mir eine Public, der wird immer eingetragen dann, kriegst natürlich jetzt ne Fehlermeldung, wenn Du das Wort Kundenname nicht in Anführungsstriche schreibst, Sorry
0 Punkte
Beantwortet von ble Einsteiger_in (13 Punkte)
Hallo Marie,
Vielen Dank für die Antwort. Das mit der E-Mail funktioniert wunderbar,
Ich hätte da noch ein Anliegen:
Versandt wird der Name für das Textfeld, so Text18.
Interessant wäre, wenn die Eingabe in das Textfeld, zum Beispiel die PLZ 94209 per E-Mail mitgeteilt wird.
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Marie,

gute Antwort (Antwort 2). Von dir lernt man immer wieder schöne Sachen. Ich habe die Sub mal verallgemeinert, vielleicht kann ja jemand die Routine gebrauchen...

Public Sub sendMail(mailto As String, mailcc As String, mailbcc As String, subject As String, body As String)

Dim mailto_list As Variant
Dim mailcc_list As Variant
Dim mailbcc_list As Variant

Dim strMailTo As String
Dim strTo As String
Dim strCC As String
Dim strBCC As String
Dim strSubject As String
Dim strBody As String

Dim str As String
Dim i As Integer


mailto_list = Split(mailto, ",")
strMailTo = mailto_list(0)

strTo = ""
For i = LBound(mailto_list) + 1 To UBound(mailto_list)
strTo = strTo & "to=" & mailto_list(i) & "&"
Next

strCC = ""
mailcc_list = Split(mailcc, ",")
For i = LBound(mailcc_list) To UBound(mailcc_list)
strCC = strCC & "cc=" & mailcc_list(i) & "&"
Next

strBCC = ""
mailbcc_list = Split(mailbcc, ",")
For i = LBound(mailbcc_list) To UBound(mailbcc_list)
strBCC = strBCC & "bcc=" & mailbcc_list(i) & "&"
Next

strSubject = Replace(Replace(Replace(Replace(Replace(subject, "&to:", ""), "&bcc=", ""), "&cc=", ""), "&subject=", ""), "&body=", "")
strBody = Replace(Replace(Replace(Replace(Replace(body, "&to:", ""), "&bcc=", ""), "&cc=", ""), "&subject=", ""), "&body=", "")

str = "mailto:" & strMailTo & "?" _
& strTo _
& strCC _
& strBCC _
& "&subject=" & strSubject _
& "&body=" & strBody

ShellExecute Application.hWndAccessApp, vbNullString, str, vbNullString, vbNullString, 0

End Sub


Aufrufbeispiel:

call sendMail("hinkiiswatchingyou@online.de","ccmail1@test.de,ccmail2@test.de","bccmail1@test.de,bccmail2@test.de","Subjecttest","Bodytest")


Gruß
Ralf
0 Punkte
Beantwortet von marie Experte (2k Punkte)
@ralf,

danke, ist ja cool, dass Du das mal bissel verbessert hast, werd ich gleich mal ausprobieren, wenn ich Zeit habe.

Gruß marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Na schade, die Split-Funktion ist in älteren Versionen nicht verfügbar, muss man händisch zerlegen.

' Zerlegt ein String anhand eines angegebenen
' Trennzeichens und gibt die einzelne Teilstrings
' als nullbasierendes Array zurück
'
' Wird kein Trennzeichen angegeben, wird als
' Trennzeichen das Leerzeichen angenommen
Public Function Split_String(ByVal inp_str As String, _
Optional sep As Variant) As Variant

Dim i As Integer
Dim j As Integer
Dim ret() As Variant

' kein Trennzeiche?
If IsMissing(sep) Then sep = " "

j = 0
Do
i = InStr(inp_str, sep)
If i > 0 Then
ReDim Preserve ret(j)
ret(j) = Left$(inp_str, i - 1)
inp_str = Mid$(inp_str, i + Len(sep))
j = j + 1
End If
Loop Until i < 1

ReDim Preserve ret(j)
ret(j) = inp_str

Split_String = ret
End Function


hier ein Ersatz, wer es braucht, hab ich aus www.vbarchiv.net/tipps/tipp_463-split-funktion-fuer-vb4-5.html, aber ich kopiere Code trotzdem gerne vollständig, weil man häufig Seiten, auf die verwiesen wird, ein Jahr später nicht mehr findet.

Erklärung für neulinge:

Eine der meist genutzten Neuerungen in Visual Basic 6 (gegenüber VB4 oder VB5) ist zweifelsohne die Split-Funktion. Mit dieser Funktion lässt sich ein Gesamtstring anhand eines bestimmten Trennzeichen in ein Array von Teilstrings zerlegen.

Anwendungsbeispiele gibt es hierfür en-masse. So lässt sich eine "MutliLine"-Textbox mit einem Kommando in ihre Einzelzeilen zerlegen:

sLines = Split(txtMutliline.Text, vbCrLf)
Ein weiteres Beispiel ist das Zerlegen einer Datensatz-Zeile in ihre einzelnen Datenfelder:

txtData = "Name;Vorname;Strasse;PLZ;Ort"
sField = Split(txtData, ";")

gruß Marie
0 Punkte
Beantwortet von ble Einsteiger_in (13 Punkte)
Vielen Dank für die Hinweise!
Das Problem ist mit Verschicken eines Screenshots gelöst.
...