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
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)
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
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
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
Hallo Pergus,
evt. hilft dir mein Lösungsvorschlag aus:
http://www.access-o-mania.de/forum/index.php?topic=14016.msg79756#msg79756
Gruß Oma
Hallo oma,
danke Dir, bin für jeden Tipp dankbar!!! ;)
Pergus
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
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
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
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]
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