Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Pergus am März 21, 2011, 23:17:56

Titel: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 21, 2011, 23:17:56
Hallo an Alle!

Habe folgende Problematik:

In der Datensatzquelle des Berichts 'rptEinzelbericht' habe ich ich die Abfrage 'sqryMitgliederStempelungen' folgendermaßen strukturiert:

Tabelle:'tblMitgliederStempelungen' (n), StempelungsID (Kombischlüssel) , MitgliedsID (Kombischlüssel)
Tabelle:'tblMitglieder' (1), MitgliedsID (Primärschlüssel), Nachname, Vorname

Als Kriterium der StempelungsID habe ich folgendes festgelegt: [Formulare]![frmStempelungen]![StempelungsID]

Da der Bericht 'rptEinzelbericht' nur eine einzige Seite lang werden soll, und ich die jeweiligen Mitglieder, die an einem Einsatz oder einer Übung teilgenommen haben, auflisten soll, suche ich nach einer VBA-Lösung, um diesem Problem Herr zu werden.

Derzeit habe ich den Unterbericht mit dem Etiketten-Assistent erstellt (wäre auch evtl. OK, doch die Liste ist vom Platz her gesehen, sehr beschränkt und dadurch dass die Namen verschiedene Längen haben, musste ich dementsprechende Abstände einkalkulieren!).

Daher meine Vorstellung, ob folgendes möglich ist (mit VBA!): z.B. Wurst Hans, Blau Heiner, Weiß Herbert, usw.

Auf Eure Hilfe hoffend bedanke ich mich im Voraus

Pergus
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: MzKlMu am März 22, 2011, 07:59:20
Hallo,
schau mal hier rein:
http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen (http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen)
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 22, 2011, 08:03:51
Hallo MzKlMu,

danke daß Du Dich wieder meinen "Problemchen" stellst und auch schon prompt eine Lösung vorschlägst!  8)
Werde diese etwas später ausprobieren, da ich jetzt zum Zahnarzt muß!  :-X

Inzwischen grüße ich Dich

Pergus
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 22, 2011, 11:56:02
Hallo MzKlMu,

leider bin ich in VBA nicht recht fit, habe daher noch Fragen zu Deinem Lösungsvorschlag:

Mein Bericht 'rptEinzelbericht' hat als Datensatzquelle eine Abfrage ('sqryMitgliederStempelungen'), und zwar folgend aufgebaut:

Tabelle:'tblMitgliederStempelungen' (n), StempelungsID (Kombischlüssel) , MitgliedsID (Kombischlüssel)
Tabelle:'tblMitglieder' (1), MitgliedsID (Primärschlüssel), Nachname, Vorname

Als Kriterium der StempelungsID habe ich folgendes festgelegt: [Formulare]![frmStempelungen]![StempelungsID],
da der Bericht ('rptEinzelbericht') von einem Formular ('frmStempelungen') per Button-Click geöffnet wird und somit garantiert wird,
dass sich die Abfrage auch die Daten der aktuellen StempelungsID ausgibt.

??? Wo gebe ich den Aufruf der Prozedur ein?

Die auszugebenden Daten (in diesem Fall Mitgliedsnamen als '=Glätten([Nachname] & " " & [Vorname])' im 'Mitglied_Textfeld') befinden sich in einem Unterbericht 'srptMitgliederStempelungen', der als Datenquelle 'sqryMitgliederStempelungen' hat, also die selbe des Berichts 'rptEinzelbericht', aber ohne Kriterium.

Ich würde Dir gerne die Datenbank hochladen, darf es aber leider nicht! Könnte evtl. nur die beschriebene Situation erneut zusammenstellen mit ein paar erfundenen Daten füllen und diese dann heute abend hochladen, sollte es helfen, Dir einiges an Tipparbeit zu sparen!

Danke schon mal vorab

Pergus
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 22, 2011, 21:39:19
Hallo Leute!

Wollte eine leere DB basteln und hochladen, mit der ich mein Problem erklären wollte, bin aber beim kopieren der bestehenden tbl, qry, frm, rpt, usw. auf weitere Anomalien gestoßen!  :-[

Bitte Euch also ohne hochladen der DB um Hilfe !  ???

Gruß

Pergus

Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: oma am März 22, 2011, 23:04:41
Hallo Pergus,

evt. hilft dir mein Lösungsvorschlag aus:

http://www.access-o-mania.de/forum/index.php?topic=14016.msg79756#msg79756

Gruß Oma
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 22, 2011, 23:58:44
Hallo oma,

danke Dir, bin für jeden Tipp dankbar!!!  ;)

Pergus
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 23, 2011, 00:52:02
Hallo oma,

leider funktioniert das bei mir nicht, da meine Kriterien nicht dem Beispiel gleichen.  :-\
D.h.: Ich muß pro 'StempelungsID' eine 'MitgliedsID' auslesen, aber statt der ID mit dem vollen Namen.  :-[

Meine Abfrage 'sqryMitgliederStempelungen', als Datenquelle für mein Bericht 'rptEinzelbericht',  ist wiefolgt:

Tabelle:'tblMitgliederStempelungen' (n), StempelungsID (Kombischlüssel) , MitgliedsID (Kombischlüssel)
Tabelle:'tblMitglieder' (1), MitgliedsID (Primärschlüssel), Nachname, Vorname

Als Kriterium der StempelungsID habe ich [Formulare]![frmStempelungen]![StempelungsID],
schließlich soll mein Bericht ('rptEinzelbericht') nur die Mitglieder anzeigen, die im Formular 'frmStempelungen' soeben eingegeben wurden!

ZitatDie auszugebenden Daten (in diesem Fall Mitgliedsnamen als '=Glätten([Nachname] & " " & [Vorname])' im 'Mitglied_Textfeld') befinden sich in einem Unterbericht 'srptMitgliederStempelungen', der als Datenquelle 'sqryMitgliederStempelungen' hat, also die selbe des Berichts 'rptEinzelbericht', aber ohne Kriterium.

Hast Du, oder irgend jemand ne Lösung? Wie gesagt, ich habe es derzeit mit dem Etiketten-Assistent erstellt, funktioniert zwar, es sollten aber nie mehr als 12 Mitglieder anwesend sein, da der Bericht sonst den Rahmen sprengen würde (Bericht darf nicht länger als eine Seite sein!). Übrigens keine Angst, der Verein hat keine 20 Mitglieder, und es werden auch in Zukunft nicht mehr werden, da sich sonst laut Statut des Vereins die Anforderungen ändern würden und die jetzige Datenbank für diesen Verein unbrauchbar werden, da sich dann das Land Südtirol darum kümmern würde!

Grüße

Pergus
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 23, 2011, 01:31:24
Hallo oma,
habe einen Beitrag von Dir im Forum gefunden: http://www.access-o-mania.de/forum/index.php?topic=6232.0 (http://www.access-o-mania.de/forum/index.php?topic=6232.0)

ZitatHallo,

ein anderer Vorschlag der evt etwas leicher für dich ist(?)

Erstelle ein Modul in deiner DB u. kopiere folgende Funktion :


Code: In Zwischenablage kopieren

Public Function Zeile(ANr As String, Fabrikat As String) As String
Dim strSQL As String
Dim rs As DAO.Recordset

strSQL = "SELECT Gerätetyp FROM DeineTabelle WHERE ANr = " & "'" & ANr & "'" & " AND Fabrikat = " & "'" & Fabrikat & "'"
Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)

While Not rs.EOF
 Zeile = Zeile & "; " & rs!Gerätetyp
 rs.MoveNext
Wend

Zeile = Mid(Zeile, 2, 1000)
rs.Close
Set rs = Nothing
End Function



Nun kannst du eine Abfrage mit dieser Funktion erstellen:

Code: In Zwischenablage kopieren

SELECT ANr, Fabrikat, Zeile([ANr],[Fabrikat]) AS Typen
FROM DeineTabelle
GROUP BY ANr, Fabrikat;




Du musst dein Tabellennamen anpassen u. ANr ist Feld mit Artikelnummer, Fabrikat ist Feld mit SEG, ALDI..., und Feld Gerätetyp ist Feld mit WA820.. usw

mit richtiger Anpassung solltest du deine gewünschte Darstellung erhalten


Gruß Oma

Habe versucht die Code in einem Modul so anzupassen:

Public Function Zeile(Nachname As String, Vorname As String) As String
Dim strSQL As String
Dim rs As DAO.Recordset

strSQL = "SELECT MitgliedsNr FROM tblMitglieder WHERE Nachname = " & "'" & Nachname & "'" & " AND Vorname = " & "'" & Vorname & "'"
Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)

While Not rs.EOF
 Zeile = Zeile & "; " & rs!MitgliedsNr
 rs.MoveNext
Wend

Zeile = Mid(Zeile, 2, 1000)
rs.Close
Set rs = Nothing
End Function


Meine Abfrage lautet wiefolgt:

SELECT Nachname, Vorname, Zeile([Nachname],[Vorname]) AS Typen
FROM tblMitglieder
GROUP BY Nachname, Vorname;


Leider meckert da der Debugger und meint, daß ihm ein Parameter fehle? Folglich lässt er mich nicht mehr aus der Sub-Routine aussteigen!  >:(

Was mache ich falsch ??? ??? ??? ???

Möchtest Du mir da helfen?  ;)

Danke

Pergus
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: database am März 23, 2011, 13:10:50
Hallo Gustav,

verstehe nicht ganz - du holst mit einer Funktion die Mitgliedsnummer aus der tblMitglieder, in der auch die Namen der Mitglieder stehen.
Warum denn nicht gleich so:


SELECT Nachname, Vorname, MitgliedsNr
FROM tblMitglieder
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: oma am März 23, 2011, 19:03:25
Hallo Pergus,

die Sache kann man vereinfachen, wenn man in deinem Fall mit 2 Abfragen arbeitet.

1. Abfrage qryMitglieder

SELECT StempelungsID, Nachname,Vorname
FROM tblMitgliederStempelungen
INNER JOIN tblMitglieder ON tblMitgliederStempelungen.MitgliedsID = tblMitglieder.MitgliedsID



2. Abfrage mit qryMitglieder:

SELECT StempelungsID, SpalteZ([StempelungsID]) AS Ausgabe
FROM qryMitglieder
GROUP BY StempelungsID, SpalteZ([StempelungsID])


Als Funktion wird hierbei benutzt:

Public Function SpalteZ(Feld As Long) As String

strSQL = "SELECT Nachname, Vorname FROM qryMitglieder WHERE StempelungsID =" & Feld
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

    Do While rs.EOF = False
        SpalteZ = SpalteZ & "  " & rs!Nachname & ", " & rs!Vorname
        rs.MoveNext
    Loop

End Function


Damit du die Sache nachvollziehen kannst, anbei auch ein kleines Beispiel


Gruß Oma

[Anhang gelöscht durch Administrator]
Titel: Re: Namensliste in einem Unterbericht hintereinander aufzählen
Beitrag von: Pergus am März 24, 2011, 07:22:16
Hallo Peter, hallo oma,

danke für Eure hilfreichen antworten, werde heute Abend beide Lösungsvorschläge versuchen und im Forum dann antworten!  :D

Pergus