Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: cyberchris am Oktober 09, 2012, 22:09:28

Titel: Datenabfrage im Endlosformular
Beitrag von: cyberchris am Oktober 09, 2012, 22:09:28
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
Titel: Re: Datenabfrage im Endlosformular
Beitrag von: DF6GL am Oktober 10, 2012, 00:22:12
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.
Titel: Re: Datenabfrage im Endlosformular
Beitrag von: cyberchris am Oktober 10, 2012, 09:12:06
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
Titel: Re: Datenabfrage im Endlosformular
Beitrag von: DF6GL am Oktober 10, 2012, 13:31:35
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?

Titel: Re: Datenabfrage im Endlosformular
Beitrag von: cyberchris am Oktober 11, 2012, 09:06:41
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