Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Problem Berichterstellung Access

Begonnen von Jacksen66, Oktober 07, 2016, 19:59:02

⏪ vorheriges - nächstes ⏩

Jacksen66

Hallo,

bin gerade neu hier in diesem Forum und weis jetzt nicht ob das Thema hier her gehört. Falls nicht dann tut es mir leid. Desweitern schonmal entschuldigung für den vielen Text  ;D ;D.

So das erstemal dazu. Mein anliegen ist folgendes. Ich habe ein Schulprojekt bekommen wo ich über eine access datenbank einen Bericht erstellen muss welches dann am ende ein Angebot darstellen soll.

Die aufgabe Ist wie oben beschrieben im groben klar aber ich wollte hier nochmal eben es im einzelnen darstellen. Ich habe eine Tabelle mit Autohäusern die verschiedene marken von autotypen hat. Dann gibt es eine Tabelle welche verschiedene Autotypen beherbergt. Desweiteren ist dort eingetragen welchen Typ und welchen preis der wagen hat. Der Preis ist nicht der preis des autos sondern der preis für die aktionszugehörigkeit. Nun soll eine abfrage erstellt über ein Formular erstellt werden. Dies habe ich soweit hin bekommen. Mein problem liegt jetzt darin das angezeigte suchergebniss in einem Bericht angezeigt werden soll, aber nach einem bestimmten muster.

und zwar wenn ich den Bericht erstelle dann sieht es wie folgt aus:
(Logo des fahzeuges soll heissen das es das VW, seat oder mercedes und andere logos sein soll und der Fahzeugname so was wie polo, golf, passat usw.)

Logo des fahrzeuges1  --  Fahrzeugname1
Logo des fahrzeuges1  --  Fahrzeugname2
Logo des fahrzeuges1  --  Fahrzeugname3
Logo des fahrzeuges2  --  Fahrzeugname1
Logo des fahrzeuges2  --  Fahrzeugname2
usw.....

Die soll aber foldendermassen aussehen:

Logo des fahrzeuges1  --  Fahrzeugname1, Fahrzeugname2, Fahrzeugname3, usw.

Logo des fahrzeuges2  --  Fahrzeugname1, usw.

Logo des fahrzeuges3  --  Fahrzeugname1, Fahrzeugname2, usw.

Soll also im ganzen bedeuten das ich einmalig das Logo vorhanden sein soll und dann die namen der Fahzeuge zusammengeschrieben.

Das war jetzt mein ganzes Problem was ich habe. Das andere habe ich ja wie gesagt hinbekommen nur das mit der Anzeige im Bericht das ist leider noch mein Problem. Desweiteren habe ich danach noch bestimmt das problem mit dem ausdrucken über das suchformular des berichtes, aber soweit bin ich ja noch nicht gekommen.  ;D

Hoffe nun das man mir helfen kann.

MzKlMu

Hallo,
müssen die Fahrzeuge nebeneinander stehen ?
Wenn ja wäre das ein etwas größerer Aufwand mit VBA.
Oder genügt diese Darstellung:
Logo des fahrzeuges1 
-- Fahrzeugname1
-- Fahrzeugname2
-- Fahrzeugname3
-- usw.
Logo des fahrzeuges2 
-- Fahrzeugname1
-- usw.
Logo des fahrzeuges3
-- Fahrzeugname1
-- Fahrzeugname2
-- usw.
Gruß Klaus

Jacksen66

Es wäre schön wenn die Fahrzeuge nebeneinanderstehen würden da es dann platzsparend ist wenn man mehrere Automarken hat.

MzKlMu

Hallo,
wie gesagt, das ist etwas mehr Aufwand.
http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen
Gruß Klaus

Jacksen66

ok werde das mal versuchen ein zu binden. Aber wir bekomme ich das mit den Bildern hin. Diese sind ja extern in einem anderen Ordner. Habe jetzt versucht über einen Link die Bilder anzeigen zu lassen aber das geht leider nicht. Es wird nämlich bei mir im Bericht nur der Link angezeigt und nicht das Bild.

Hoffe du kannst mir da auch helfen wie ich das am besten mache.

Jacksen66

Habe da noch eine Frage zu dem VBA Code. (Tschuldige das ich so oft frage aber bin halt total der neuling).

Und zwar wenn ich das so ein mein Feld eingebe und die Daten ändere dann also von:

=SQLListe("SELECT Nachname FROM tblPerson WHERE FirmaID = " & FirmaID; ","; ",")

auf:

=Name("SELECT Fahzeugname FROM Zusammenfassung WHERE Marke = " & [Marke];",";",")

dann kommt immer im Bericht #Name?

Kann es vllt daran liegen das ich die daten aus einer Abfrage die für ein Suchformular wichtig ist richtig angezeigt bzw gelesen werden können.

MaggieMay

Hallo,

Frage:
Warum änderst du den Code von "SQLListe" auf "Name" (!) ?!

Was hast du dir dabei gedacht, was ist der Grund?
Freundliche Grüße
MaggieMay

Jacksen66

Naja habe gedacht man könnte das einfach ändern damit ich weis was da jetzt genau passiert. Aber auch wenn ich das wieder in den Ursprungszustand bringe mit SQLListe auch dann kommt immer noch #Name?.
Ich weis wirklich nicht woran das liegen soll. Kann auch sein das ich es falsch verstanden habe diese Formel.
Mein gedanke ist das die Formel so aufgebaut ist das "SELECT Fahzeugname" die Spalte selektiert wo die Autotypen drin stehen. Dann "FROM Zusammenfassung" die Daten aus der Abfrage welche filter nach dem Autohausnamen und welchen angebotspreis man diesem machen kann. Damit sollen dann alle Autos angezeigt werden die dieser Speziefikation angehören und die das autohaus hat. Dann "WHERE Marke = " & [Marke];",";"," " damit soll ,so wie ich es verstanden habe aus der liste heraus gesucht werden, alle autos die zu vw gehören oder zu seat und diese dann in eine zeile schreiben. Es können ja auch mehrere Automarken zu einem Autohaus gehören. Also wie gesagt das was in der Abfrage gefiltert wird. Dies ist mein verständnis dieser Formel und diese habe ich dann nachdem ich einfach einen Autobericht erstellt habe in das feld eingetragen wo dann Fahrzeugname steht. Weis nicht ob das so richtig ist geschweige ob das so funktioniert.

Hoffe ich habe das jetzt einigermaßen richtig rüber gebracht.

DF6GL

#8
Hallo,

hast Du überhaupt die Funktion "SQLListe" in ein Standardmodul geschrieben, so wie es  bei DBWIKI beschrieben ist?


und es muss so lauten (vermutlicher Tippfehler):

=SQLListe("SELECT Fahrzeugname FROM Zusammenfassung WHERE Marke = '" & [Marke] & "'";",";",")

Voraussetzung ist, dass "Marke"  ein im entspr. Berichtsbereich  existierendes Textfeld ist und das Tabellenfeld "Marke"  den Datentyp TEXT aufweist.




btw:

Zitat..SELECT Fahrzeugname FROM Zusammenfassung WHERE Marke = '" & [Marke] & "'"........

ist ein (zusammengesetzter) SQL-String (d. h. Auswahlabfrage), der alle Fahrzeugnamen aus den Datensätzen ausliest, bei denen der Wert des Tabellenfeldes "Marke" mit dem akt. Wert des  Berichts-Textfeldes "Marke" übereinstimmt (Kriterium).  Wenn "Marke" den Datentyp TEXT besitzt, dann sind Hochkommata um den Kriteriumswert erforderlich.


Die Funktion(!)  "SQLListe" macht nun aus der "vertikalen" Liste, die die Abfrage liefert, eine "horizontale" , kommagetrennte Auflistung (String, "Textzeile") mit den  gefilterten Fahrzeugnamen einer bestimmten Marke.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Jacksen66

#9
Ja den code habe ich in modul kopiert. Aber auch nach tippfehler berichtigung kommt immer noch ein Fehler.

Würde ja gerne meine Datenbank hochladen, damit man es einfach mal sieht. Aber die ist leider hier zum hochladen zu gross

MaggieMay

Hallo,
ZitatAber die ist leider hier zum hochladen zu gross
so sollten das klappen:
1. aufs notwendigste reduzieren
2. komprimieren
3. zippen
4. hochladen

Freundliche Grüße
MaggieMay

Jacksen66

So habe nun endlich geschafft die Datenbank so zu kompriemieren das es auf die größe der Datei passt. Habe auch 2 Bsp.-Bilder hinzugepackt.

Kurz zur erklärung über das Formular "Suchformular" soll gesucht werden und dann die daten die in dem Unterformular auftauchen nach dem oben beschriebenen Muster in ein bericht gepackt werden.

Hoffe nun das ihr damit zurecht kommt.

MaggieMay

Hallo,
Zitatdie daten die in dem Unterformular auftauchen nach dem oben beschriebenen Muster in ein bericht gepackt werden
wie kommen denn die gesuchten Daten ins Unterformular?
Es gibt keinen diesbezüglichen Code - hast du evtl. zuviel gelöscht?

Der Button zum Öffnen des Berichts befindet sich im Hauptformular, das Datenfeld zum Filtern des Berichts im Unterformular.
Der Zugriff auf das Formular-Steuerelement sähe dann in der Abfrage bspw. folgendermaßen aus:
Forms![Suchformular]![Zusammenfassung Unterformular1].Form!Autohaus

Das alles hilft aber nicht wirklich, das eigentliche Problem mit der Auflistung der Fahrzeugnamen im Bericht mit Hilfe der Funktion "SQLListe" zu lösen. Dazu finde ich leider keinen Ansatz/Versuch in deiner Beispiel-DB.

PS:
ZitatHabe auch 2 Bsp.-Bilder hinzugepackt.
Sorry, aber das war völlig überflüssig. Die Bilder sind verzichtbar, sie haben nichts mit dem Problem zu tun.
Freundliche Grüße
MaggieMay

Jacksen66

Die Daten aus dem Unterformular kommen von dem anderem Formular welches ich nur in das Suchformular eingebunden habe. Sprich also es sind 2 Formulare miteinander verbunden.

Das mit der SQL anweisung da habe ich den code in VBA reinkopiert. Denke mal wo ich jetzt wirklich mal so auf dem schirm habe gesehen das es ja nicht VBA ist sondern SQL. Habs also falsch eingetragen  ;D. Jetzt weis ich aber echt nicht wo ichs dann eintragen soll.

Mit den Bildern habe ich gedacht nur damit man sieht wie es im grunde aussehen sollt, also mit grafik usw.

MaggieMay

Die Funktion SQLListe fügst du in ein allgemeines Modul ein, nicht ins Klassenmodul des Formulars und erst recht nicht beides.

Beim Kriterium in der Abfrage musst du störende Leerzeichen entfernen, damit du was findest.
Die Aktualisierung des Textfeldes sollte nach Eingabe einer Fahrzeugmarke angestoßen werden.
Das Wort "Marke" solltest du nicht verwenden, das ist in Access eine Eigenschaft von Formularen und Steuerelementen und vielem mehr.

Wenn du all das beachtest, sollte es wohl klappen mit der Fahrzeugtypenliste.
Freundliche Grüße
MaggieMay