Guten Abend,
ich bitte um Hilfe bei einem etwas komplexeren Thema.
In einer Übersicht (Endlosformular) ist u.a. eine Spalte mit "Abteilung". Zu jeder Abteilung ist in einer separaten Liste ein Mitarbeiter zugeordnet.
In einer Funktion möchte ich eine E-Mail an die Personen schicken, bei denen (in der aktuellen Ansicht) die jeweilige Abteilung dabei ist.
Ich habe eigenlich alles schon soweit, dass die E-Mail generiert wird. Jedoch muss ich jetzt noch die Personen abfragen. Hierzu folgende Idee:
Abfrage der Abteilung jeder Zeile und Speicherung der Abteilung in einem Array, sofern noch nicht vorhanden. Anschließend die Mitarbeiter in der separaten Liste abfragen. (dies folgt noch - hier sehe ich aber nicht das Problem).
Hier die Lösung zum Thema Abteilung:
Dim frm As Form_Formularname
Dim rsA As Recordset
Set frm = Forms![Formularname]
Set rsA = frm.Recordset
If Not rsA.EOF Then
Dim Arr
Dim i1, i2 As Integer
Dim aFound As Boolean
i1 = 0
rsA.MoveFirst
Do While Not rsA.EOF
aFound = False
If IsArray(arr) Then
For i2 = LBound(arr) To UBound(arr)
If adress(i2) = rsA!Abteilung Then
aFound = True
Exit For
End If
Next i2
End If
If aFound = False Then
ReDim arr(i1)
arr(i1) = rsA!Abteilung 'den Wert bekomme ich!
i1 = i1 + 1
End If
rsA.MoveNext
Loop
rsA.Close
Set frm = Nothing
Set rsA = Nothing
End If
Der Fehler ist nun, dass ich nach Ausführen dieses Codes. Keine Einträge im Endlosformlar mehr angezeigt bekomme. Vorhersind z. B. 20 Einträge vorhanden. Sobald er im Code bei rsa.Close angekommen ist ist auf einmal nur noch 1 Eintrag vorhanden mit über "NAME?"...
Ich habe echt keine Ahnung was das sein könnte. Die vorgelagerte und nachgelagerte Funktion geht, denn wenn ich diesen Abschnitt aukommenitere geht der Rest.
Ich hoffe, dass jemand mein Problem versteht und evtl. weiß was ich falsch gemacht habe...
Vielen Dank für die Mühe!
Gruß Christoph
Hallo,
naja, das kist doch nicht verwunderlich, wenn Du mit
rsA.Close
das Formular-Recordset schliesst und mit
Set rsA = Nothing
zudem noch als Objekt zerstörst.
Was soll das arme Formular denn noch anzeigen, wenn Du ihm den Hahn zudrehst? ;)
Damit der Datensatzzeiger nicht wild in der Gegend herumrast, wäre
Dim rsA As DAO.Recordset
Set frm = Forms![Formularname]
Set rsA = frm.RecordsetClone
angeraten.
Oh, danke.
Ich habe mit den Code teilweise aus einem anderen Formular zusammengebastelt. Dort ist die Ausgangslange aber eine etwas andere.
Nun habe ich aber das Problem mit dem speichern der Abteilung in die Arr Variable. Der Speichert immer neu und löscht wohl die vorherigen Strings.
Muss ich mal schauen was ich da falsch gemacht habe.
Gruß Christoph
Hallo,
vermutlich handelt es sich hier um ein herausgerissenes Code-Fragment, so dass nicht ersichtlich ist, was überhaupt gemacht werden soll..
"In einer Übersicht (Endlosformular) ist u.a. eine Spalte mit "Abteilung". "
OK
"Zu jeder Abteilung ist in einer separaten Liste ein Mitarbeiter zugeordnet."
Was ist hier die "Liste"?
Ein Listenfeld im Übersichtsform?
Ein separates Formular?
Ein im Übersichtsform verknüpftes UFO-Steuerelement, das zugeordnete Personen mit einem Endlosform anzeigt?
Hi,
ja ist natürlich nur ein Teil des Ganzen.
Ich habe den Fehler gefunden.
Vor dem Schreiben in den Array habe ich ich redim arr(i) ausgeführt. Korrekt ist hier aber "redim preserve..."
Hatte sonst immer den Arr Inhalt wieder gelöscht.
Vielen Dank!
Christoph