Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[access] email versturen via een knop

Pagina: 1
Acties:

  • rxr1991
  • Registratie: Mei 2007
  • Laatst online: 13-10 18:02
Hallo,

Kan in met een stukje vba code een email adres uit een database halen met andere variablen en deze vervolgens invullen in outlook.

Nu heb ik het over grote deel van de code wel bij elkaar gesprokkeld via het internet maar ik loop tegen het volgende aan. Ik moet een email adres hebben en die heb ik niet direct beschikbaar met mijn variablen. Mijn vraag is kan ik met mijn variablen een query maken en vervolgens met de uitkomst wel mijn email adres invullen. Dus kortom hoe stop ik de uitkomst van een query in een variable.

Zou iemand bereid zijn om een stukje voorbeeld code te maken. Alvast bedankt.

  • himlims_
  • Registratie: Juni 2000
  • Niet online

himlims_

🐧 Linux HOoligan

waarschijnlijk niet het antwoord wat je zoekt;

Request.QueryString("IETS")

⭐Game Profiles: 🕹️Steam - 🎮PSN - 🇪🇦 GoT_Hollandhards


  • Moirraine
  • Registratie: Mei 2008
  • Laatst online: 13-02-2024
1: Voeg het veld toe op een formulier. Zet er een knop achter met de code:

Visual Basic:
1
2
3
4
5
6
7
Private Sub cmdStuurEmail_Click()

     On Error Resume Next 'Als de gebruiker het mail bericht annueleert

     DoCmd.SendObject , , , Me!NaamVanEmailVeld

end sub


2: uit de database halen. Deze stuurt naar alle mensen die door de query zijn opgehaald een email. Dit kan er ook 1 zijn als je de criteria juist meegeeft. Ik ga er van uit dat jouw tabel tblPersonen heet

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private sub StuurEmail()

on error resume next

with currentdb.openrecordset("SELECT * FROM MijnTabel WHERE VulCriteriumIn")
'Voorbeeld: "SELECT * FROM tblPersonen WHERE PersoonID = " & Variabele
'of: "SELECT * FROM tblPersonen WHERE PersoonID = 1"

     Do While Not .EOF
          DoCmd.SendObject , , , !NaamVanEmailVeld
          .movenext
     loop
     .close
end with

end sub


je kunt natuurlijk ook !NaamVanEmailVeld toewijzen aan een variabele, maar houdt er rekening mee dat als deze zn movenext doet, dat hij de eerste waarde overschrijft door de huidige. Eerst doen met de variabele wat je wil en daarna pas movenext.

je kunt ook kijken hoeveel records je op hebt gehaald (om te kijken of je de query goed hebt dus) door de volgende code toe te voegen onder de regel With currentdb... en de rest weg te halen.

Visual Basic:
1
debug.print .recordcount


Als je zonder criteria gewoon de hele tabel wil doorlopen is het
Visual Basic:
1
with currentdb.openrecordset("tblPersonen")


Meerdere criteria:
Visual Basic:
1
with currentdb.openrecordset("SELECT * FROM tblPersonen WHERE persoonID = " & variabele & " AND Achternaam = Jansen")


eventueel kun je ook de functie Dlookup/Dfirst gebruiken. Is eigenlijk niets meer dan een verkapte query
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private sub Emailzoeken

on error goto fout

dim strMijnString as string

'Met sluistekens en quoutes
strMijnString = Dlookup("[Emailveld]","[tblPersonen]","[persoonID] = " & variable)

exit sub

fout: 

msgbox err.number & " - " & err.description,vbokonly + vbCritical, "Fout: EmailZoeken"

End sub


Dlookupjes zijn vaak echter traaaaag. In het vb venster kun je middels F1 meer informatie over deze functies opvragen.

Als je variable in een query tekst is (string) doe je het volgende:

Visual Basic:
1
2
'enkele quote, dubbele quote, ampersand, variabele naam, ampersand, dubbele quote, enkele quote, dubbele quote
with currentdb.openrecordset("SELECT * FROM tblPersonen WHERE Achternaam = '" & variabele & "'")


Als je variable in een query tekst is (string) en je wil alles zoeken wat er op lijkt doe je het volgende:

Visual Basic:
1
with currentdb.openrecordset("SELECT * FROM tblPersonen WHERE Achternaam like '*" & variabele & "*'")


Alles voor en achter je variabele wordt als wildcard beschouwd. Variable = "jans", dan vindt ie "jans", "Mevrouw jans", "jansen", "Mevrouw Jansen" etc

[ Voor 37% gewijzigd door Moirraine op 21-08-2009 17:58 . Reden: Verduidelijkt enzo ]