Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Gisi2 am November 25, 2024, 12:53:50

Titel: Kopieren zweiter Wert aus Kombobox
Beitrag von: Gisi2 am November 25, 2024, 12:53:50
Hallo zusammen

Ich hab eine Abfrage, die tipp topp funktioniert. Das Feld Anrede ist ein Dropdown (Herr, Frau, etc.)
Nun kopiere ich sämtliche Daten daraus mittels diesem Code:

DoCmd.RunSQL "SELECT * INTO [MailversandArtikel] FROM [abfKundeninteresseMarke];"

Das funktioniert wunderbar und damit lässt sich dann weiterarbeiten. Nun hab ich aber das Problem, dass beim Dropdown dann die ID und nicht der Wert kopiert wird.

Kann ich das irgendwie ändern?
Titel: Re: Kopieren zweiter Wert aus Kombobox
Beitrag von: MzKlMu am November 25, 2024, 12:57:52
Hallo,
das mit der ID ist richtig. Es wäre falsch den Wert zu kopieren. Über eine Abfrage kommst Du immer an den Klartext.

Es stellt sich auch die Frage, warum Du kopierst, Du hast ja die Daten schon über die Abfrage, warum dann noch mal (redundant) kopieren ?.
Titel: Re: Kopieren zweiter Wert aus Kombobox
Beitrag von: Gisi2 am November 25, 2024, 13:06:52
Hallo  Klaus

Ich hab gerade gesehen, dass Problem woanders liegt.

Mit dem Befehl "SELECT Vorname, Nachname, Mailadresse, Anrede " & _
                                " FROM abfKundeninteresseWG_Mailsenden"

fülle ich Daten aus der Abfrage in eine Mail. Nur zeigts da bei Anrede die ID und nicht die eigentliche Anrede an. Kann man das irgendwie änder? Irgendwie mit [tblAnrede].[Anrede]?
Titel: Re: Kopieren zweiter Wert aus Kombobox
Beitrag von: Gisi2 am November 25, 2024, 13:16:59
der ganze Code, mit dem ich Mails erstelle, falls das was nützt:

Dim db As DAO.Database
    Dim rs As DAO.Recordset
   
    Dim emailTo As String
    Dim emailSubject As String
    Dim emailText As String
    Dim sAttachment As String

    Dim outApp As Outlook.Application
    Dim outMail As Outlook.MailItem
    Dim outlookStarted As Boolean
       
   
    On Error Resume Next
    Set outApp = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If outApp Is Nothing Then
        Set outApp = CreateObject("Outlook.Application")
        outlookStarted = True
    End If

    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Vorname, Nachname, Mailadresse, Anrede " & _
                                " FROM abfKundeninteresse_Mailsenden")
    Do Until rs.EOF

        emailTo = rs.Fields("Mailadresse").Value
                   
        emailSubject = "Denner Aktion"
             
        emailText = Trim("Guten Tag " & " " & rs.Fields("Anrede").Value & " " & rs.Fields("Nachname").Value) & vbCrLf & vbCrLf
               
        emailText = emailText & _
                    "Wir haben eine Aktion, welche Sie interessieren könnte." & vbCrLf & _
                    "Alle Details dazu haben wir Ihnen in einem PDF zusammengefasst und dieser E-Mail angehängt." & vbCrLf & vbCrLf & _
                    "Wir freuen, Sie hoffentlich bald wieder in unserer Filiale begrüssen zu dürfen und stehen Ihnen bei Fragen gerne zur Verfügung." & vbCrLf & vbCrLf & _
                    "Mit den besten Grüssen" & vbCrLf & _
                    "Ihr Denner Team"
                     
        Set outMail = outApp.CreateItem(olMailItem)
        outMail.To = emailTo
        outMail.Subject = emailSubject
        outMail.Body = emailText
        outMail.Attachments.Add ("E:\SOFTWARE\KUNDENINTERESSE\VORLAGE DENNER AKTION\AKTUELLE DENNER AKTION.pdf")
        outMail.Display

        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    Set db = Nothing
   
    If outlookStarted Then
        outApp.Quit
    End If
   
    Set outMail = Nothing
    Set outApp = Nothing
Titel: Re: Kopieren zweiter Wert aus Kombobox
Beitrag von: MzKlMu am November 25, 2024, 13:48:53
Hallo,
nimm in die Abfrage die Tabelle mit der Anrede mit dazu, dann hast du auch den Klartext zur Verfügung.

PS:
Vermutlich ist die Anrede bei Dir als Nachschlagefeld in der Tabelle definiert. Davon solltest Du Abstand nehmen und ein ganz normale Feld daraus machen, das auch die ID anzeigt und nicht den Klartext.