Datensätze aus DLookup in Variable o. ä. -> wie?

Hallo Experten!

Ich stehe auf dem Schlauch:

In meiner Abfrage habe ich zwei Spalten, in der ersten steht eine Buchstabenkombination, etwa „ABC“, „DEF“, „GHI“ und so weiter, in der zweiten Spalte habe ich Zahlen (aber als Text) in der Art: „123“, „456“, „789“ usw.

Nun kann es vorkommen, dass unter „ABC“ aber mehrere „123“'s vorkommen. Access soll nun gruppieren, also: liste mir alle „123“'s, die ein „ABC“ haben und schreibe mir die „123“'s in eine wie auch immer geartete Liste (Array? String?). Dann soll Access alle „123“'s zusammenstellen, die ein „DEF“ haben, wieder Liste generieren und so weiter.

Ich hoffe, ich drücke mich einigermassen klar aus.

Bisher arbeite ich mit einem Recordset:

Set db = CurrentDb ’ Datenbank definieren
Set rs = db.OpenRecordset(„qry_ENTRYLOCS“) ’ Recordset öffnen
If Not rs.EOF Then rs.MoveFirst ’ Zum ersten Datensatz
Do While Not rs.EOF ’ Schleife über die Datensätze des Recordsets
entryloc = rs!ENTRY ’ Wert auslesen
.
.
.
rs.MoveNext
Loop

Die Abfrage „qry_ENTRYLOCS“ enthält „ABC“, „DEF“, „GHI“ etc. als Feld „ENTRY“, sowie o. g. dazugehörige „123“, „456“, „789“ usw. als Feld „Nummer“. „rs!ENTRY“ entspricht dem „ABC“.

Ich dachte schon an ein Array aber das ist ein Buch mit sieben Siegeln…

Hintergrund der ganzen Sache: es soll eine „Serien-E-Mail“ erzeugt und verschickt werden, die die Daten zu „ABC“, „DEF“, „GHI“ zuvor aus der Datenbank gesammelt hat.

Dazu soll aus einer weiteren Tabelle/Abfrage eine E-Mail-Adresse gefischt werden à la: zu „ABC“ gehört E-Mail „[email protected]“.

Wer kann Tipps geben?

Vielen herzlichen Dank im voraus!

Gruss,

derSpezi

Hallo,

das:

„Nun kann es vorkommen, dass unter „ABC“ aber mehrere „123“'s vorkommen. Access soll nun gruppieren, also: liste mir alle „123“'s, die ein „ABC“ haben und schreibe mir die „123“'s in eine wie auch immer geartete Liste (Array? String?). Dann soll Access alle „123“'s zusammenstellen, die ein „DEF“ haben, wieder Liste generieren und so weiter.“

mußt Du nochmal und genauer erklären…

Nach was willst Du nun gruppieren?

Mach mal ein tabellarisches Beispiel der Daten und beschreib, welche Daten daraus wie zu einer Serienmail führen sollen.

Weiterhin beschreib die Beziehungen zur „EMAil-Adress-Tabelle“

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo,

das:

„Nun kann es vorkommen, dass unter „ABC“ aber mehrere „123“'s
vorkommen. Access soll nun gruppieren, also: liste mir alle
„123“'s, die ein „ABC“ haben und schreibe mir die „123“'s in
eine wie auch immer geartete Liste (Array? String?). Dann soll
Access alle „123“'s zusammenstellen, die ein „DEF“ haben,
wieder Liste generieren und so weiter.“

mußt Du nochmal und genauer erklären…

Erstaml Danke fürs lesen!

die Abfrage hat diese Daten:

ENTRY AIRBILLNBR
ADL 658452510818
ADL 797951578991
ADL 866875698056
ADL 867888405792
AKL 866149680724
AKL 992085648142
BDA 984637227069
BKK 419472855865
BKK 419851722061
BKK 419851723252
BKK 421042960716
BKK 422368393360
BKK 429142272953
BKK 603488562441
BKK 603488563264
BKK 610877842969
BKK 612998341149
BKK 612998342064
BKK 626823278285
BKK 627387021402

Gruppieren wäre so gewünscht:
liste mir nacheinander alle AIRBILLNBR für ADL, AKL etc etc

Nach was willst Du nun gruppieren?

Mach mal ein tabellarisches Beispiel der Daten und beschreib,
welche Daten daraus wie zu einer Serienmail führen sollen.

Weiterhin beschreib die Beziehungen zur „EMAil-Adress-Tabelle“

in der Tabelle stehen eben ADL, AKL etc etc mit den entspr. E-Mail-Adressen, aber das habe ich mittlerweile hingekriegt.

Es geht nur um die Auflistung der AIRBILLNBR wie oben beschreiben…

Viele Grüße vom Bodensee

Auch viele Grüßen an den Bodensee… wir machen immer Urlaub in Weiler-Simmerberg, West-Allgäu… und lieben diese Region Deutschlands!

Franz , DF6GL

PS: Feedback erwünscht!

Gruss,

derSpezi

Hallo,

da braucht es keine Gruppierung, nur eine Sortierung:

Select ENTRY, AIRBILLNBR from tblTabelle order by ENTRY, AIRBILLNBR

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo,

vielleicht war ich doch zu unklar…

Also, ich möchte mit Access E-Mails generieren, die folgendes enthalten:

pro 3Buchstaben-Code dessen zugehörige Nummern, für das Beispiel ADL wären das:

658452510818
797951578991
866875698056
867888405792

schicke E-Mail (Adresse zum 3Buchstaben-Code kommt aus anderer Tabelle)

dann gehe zum nächsten 3Buchstaben-Code, hole dessen Nummern, schicke E-Mail usw. usw. bis alle 3Buchstaben-Codes durchlaufen sind.

Wie bekomme ich Access dazu, mir die jeweiligen Nummern in die E-Mail zu stellen? E-Mail werde ich wohl mittels SendObject schreiben lassen, obwohl ich eigentlich vorhatte, Access direkt auf einen SMTP-Server zugreifen zu lassen und Outlook zu umgehen. BLAT (www.blat.net) habe ich schon versucht, kriege es aber nicht gebacken.

Gruss,

derSpezi

Hallo,

vielleicht war ich doch zu unklar…

Also, ich möchte mit Access E-Mails generieren, die folgendes
enthalten:

pro 3Buchstaben-Code dessen zugehörige Nummern, für das
Beispiel ADL wären das:

658452510818
797951578991
866875698056
867888405792

schicke E-Mail (Adresse zum 3Buchstaben-Code kommt aus anderer
Tabelle)

dann gehe zum nächsten 3Buchstaben-Code, hole dessen Nummern,
schicke E-Mail usw. usw. bis alle 3Buchstaben-Codes
durchlaufen sind.

Wie bekomme ich Access dazu, mir die jeweiligen Nummern in die
E-Mail zu stellen? E-Mail werde ich wohl mittels SendObject
schreiben lassen, obwohl ich eigentlich vorhatte, Access
direkt auf einen SMTP-Server zugreifen zu lassen und Outlook
zu umgehen. BLAT (www.blat.net) habe ich schon versucht,
kriege es aber nicht gebacken.

Prinzipieller(!) Code (not checked):

Function CreateMails()
Dim db as DAO.Database
Dim rs1 as DAO.Recordset
Dim rs2 as DAO.Recordset
Dim strEMailText as String,strEmailAdresse as String
Set db=currentdb
Set rs1=db.Openrecordset(„select Entry from qry_ENTRYLOCS group by Entry“,dbopensnapshot)

Do until rs1.Eof
set rs2.Openrecordset(„select Nummer from qry_ENTRYLOCS where Entry=’“ & rs1!Entry & „’“,dbopensnapshot)
strEMailText = strEMailText & vbcr & rs1!Nummer
rs2.movenext
Loop

strEmailAdresse = nz(dlookup(„Email“,„tblMailadressen“,„Entry=’“ & rs1!Entry & „’“),"")

if len(strEmailAdresse) >0 then subSendEmail(strEmailAdresse,strEMailText )
rs1.movenext

Loop

rs1.close:set rs1=Nothing
rs2.close:set rs2=Nothing
set db=Nothing
End Function

Sub subSendEmail(A as String, B as String)
’ hier Code zum Versenden von Text „B“ an Adresse „A“
End Sub

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo!

ES FUNKTIONUCKELT! Sorry für das „Schreien“, aber ich bin total begeistert!!!

Jetzt muss ich nur noch das eigentliche E-Mail-Abschicken hinbekommen. Mit DoCMD.SendObject kommt ja immer so eine vermaledeite Warnung, die man nicht wegkriegt.

Mit BLAT & Zugriff auf den SMTP-Server hab ich es schon versucht, aber irgendwie werden keine Mails gesendet. Naja, ich werd’s nochmal probieren…

Gruss,

derSpezi

…kleiner Nachtrag:

mit CDO, „Collaboration Data Objects“, kann man direkt mittels SMTP-Server E-Mails verschicken. Ein Verweis muss natürlich auf „Microsoft CDO for Windows 2000 Library“ gesetzt sein. Siehe u. a. auch:

http://support.microsoft.com/kb/291169/de

Gruss,

derSpezi