Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Jacksen66 am Oktober 07, 2016, 19:59:02

Titel: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 07, 2016, 19:59:02
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MzKlMu am Oktober 07, 2016, 20:06:15
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 07, 2016, 22:04:04
Es wäre schön wenn die Fahrzeuge nebeneinanderstehen würden da es dann platzsparend ist wenn man mehrere Automarken hat.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MzKlMu am Oktober 07, 2016, 22:41:09
Hallo,
wie gesagt, das ist etwas mehr Aufwand.
http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 07, 2016, 23:01:03
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 08, 2016, 00:03:47
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 08, 2016, 00:34:44
Hallo,

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

Was hast du dir dabei gedacht, was ist der Grund?
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 08, 2016, 01:37:58
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: DF6GL am Oktober 08, 2016, 09:55:16
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 08, 2016, 14:33:12
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
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 09, 2016, 00:39:18
Hallo,
ZitatAber die ist leider hier zum hochladen zu gross
so sollten das klappen:
1. aufs notwendigste reduzieren
2. komprimieren
3. zippen
4. hochladen

Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 11, 2016, 22:39:23
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 12, 2016, 00:22:56
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 12, 2016, 02:09:42
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 12, 2016, 16:22:14
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.
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 12, 2016, 17:05:11
Danke für deine schnelle hilfe. Habe auch soweit alles geänder was du geschrieben hast mit dem Namen und den code in ein Modul ein zu tragen. Leerzeichen in den Daten sollten eigentlich nicht vorhanden sein, so hoff ich mal.

Was ich aber jetzt nicht ganz verstehen ist
ZitatDie Aktualisierung des Textfeldes sollte nach Eingabe einer Fahrzeugmarke angestoßen werden.

Meinst du das so das ich dann in meinem Formular eine Fahrzeugemarke eingeben muss oder wie soll ich das verstehen.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 12, 2016, 17:19:00
ZitatLeerzeichen in den Daten sollten eigentlich nicht vorhanden sein
Es geht nicht um Leerzeichen in den Daten, sondern in deinem Kriterienstring, und zwar hier:
ZitatWHERE Marke = ' " & [Marke] & " ' ";",";",")

ZitatWas ich aber jetzt nicht ganz verstehen ist
Du hattest doch ein Formular zum Testen erstellt, dort muss nach der Eingabe einer Marke das Textfeld mit der Typenliste aktualisiert werden - dachte ich. Das tut es aber wohl von ganz allein. :-)
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 12, 2016, 18:40:52
Habe jetzt das mal probiert und die leerzeichen aus der Formel raus genommen und folgendes Passiert:

Nach dem ich den Kriterienstring geändert habe wurde dieser folgendermassen von access formatiert
Zitat=SQLListe("SELECT Fahrzeugname FROM Zusammenfassung WHERE Fahrzeugmarke = '" & [Fahrzeugmarke] & "'";",";",")

Nun wenn ich den bericht öffne dann erscheint bei der Kategorie "geht nicht". Dies ist ja richtig wenn ein fehler vorliegt. Also wird der code as dem allg. Modul aufgerufen aber funktioniert nicht. Dieses Geht nicht habe ich extra eingetragen um zu sehen ob er überhaupt den code benutzt.

Teilauschnitt des Codes im allg. Modul wegen der zuvor beschriebenen Veränderung:
ZitatOn Error Resume Next
  Set DB = CurrentDb()
  Set RS = DB.OpenRecordset(SQL, dbOpenSnapshot)
  If Err.Number <> 0 Then
    Res = "Geht nicht"  -- Vorher "#Fehler"
    Err.Clear
  Else

Also werden leider nicht die Autotypen in zeile geschrieben sondern wo vorher die einzelnen typen unter einander standen steht jetzt "geht nicht"
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 12, 2016, 19:03:59
Hast du die Abfrage "Zusammenfassung" denn auch angepasst?

Du könntest einen Haltepunkt in die VBA-Prozedur setzen und genauer hinschauen was zu dem Fehler führt.
Bspw. kannst du dir den übergebenen SQL-String ansehen, per Debug.Print ins Direktfenster ausgeben, kopieren und im SQL-Fenster einer neuen Abfrage testen.
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 12, 2016, 19:23:31
Also habe jetzt statt die abfrage zu nehmen die Tabelle "Autotabelle" genommen. Somit funktioniert das einwandfrei. Also es werden alle autotypen angezeigt die dieser Marke sind. Nun hab ich aber das problem das ich alle autos angezeigt bekomme. Das soll ja nicht sein denn der Preis soll ja auch damit einfliesen. Deswegen ja die abfrage. Aber mit dieser geht es ja nicht wirklich. Nun die frage ob man den SQL String so erweitern könnte das nach der marke und dann nach dem preis gesucht wird und mir dann alle Autos ausgegeben werden die diesen Kriterien entsprechen.
Titel: Re: Problem Berichterstellung Access
Beitrag von: MaggieMay am Oktober 12, 2016, 19:38:17
Zeig doch bitte den SQL-Code zur Abfrage, damit man sieht warum es damit nicht geklappt hat.

Und was ist mit dem Preis, wo soll der mit einfließen?
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 12, 2016, 20:29:35
ZitatAlso der code ist vollkommen der Gleiche bis auf die Tatsache das ich bei dem kriterium was geändert habe und zwar von

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

auf

Zitat=SQLListe("SELECT Fahrzeugname FROM Autotabelle WHERE Fahrzeugmarke = '" & [Fahrzeugmarke] & "'";",";",")

Somit werden mir dann alle Fahrzeuge die zur marke Seat gehören angezeigt. Das ist ja schonmal gut aber jetzt soll ja wie in dem Suchformular ja nur die Autos angezeigt werden die auch den entsrechenden Preis haben

Habe gedacht man könnte das dann so ins Kriteriumfeld schreiben mit dem Preis als 2tes Kritrium. Aber geht leider nicht

Zitat=SQLListe("SELECT Fahrzeugname FROM Autotabelle WHERE Fahrzeugmarke = '" & [Fahrzeugmarke] & "' AND Preis = '" & [Preis] & "'";",";",")

Hat sich erledigt habe gerade herausgefunden warum es nicht funktioniert hat. Musste den Preis als Text Formatieren und nicht als Zahl. Das ist auch nicht weiter schlimm da mit diesem wert so oder so nicht gerechnet wird.

Aber hab jetzt noch eine Sache und zwar wenn ich dann beim öffnen des Berichts ein Autohaus eingebe und dann den preis dann wird mir das ergebnis auch so angezeigt wie ich es haben will aber jetzt kommt das problem. Wenn ich das über das formular eingebe dann erscheint dann im unter formular folgendes:



AutohausMarkeFahrzeugnamePreis


BecherSeatIbizza850


BecherSeatMii850


BecherVWPolo850
usw...

Nun wenn ich den Bericht öffne dann kommt:



LogoMarkeFahrzeugname


Seat-LogoSeatIbiza, Mii


Seat-LogoSeatIbiza, Mii


VW-LogoVWPolo, usw...

Also soll bedeuten das es wie im Unterformular angezeigt wird auch im Bericht doppel angezeigt. Ich bräuchte es aber nur einmal im Bericht stehen, also so:



LogoMarkeFahrzeugname


Seat-LogoSeatIbiza, Mii


VW-LogoVWPolo, usw...

Gibt es da eine möglichkeit das zu bewerkstelligen?
Titel: Re: Problem Berichterstellung Access
Beitrag von: DF6GL am Oktober 12, 2016, 21:09:40
Hallo,

Du solltest Dich mal mit der Bedeutung der Datentypen auseinandersetzen und die auch konsequent beachten. "Preis" ist sehr vermutlich kein Tabellenfeld mit Datentyp "TEXT" , eher mit Double oder Currency (Währung) , d. h. Gleitkomma- oder Festkommazahl.

Weil im SQL-Code der Punkt als Dezimal-Trennzeichen zu verwenden ist, muss der Kriteriumswert , der (bei deutscher Umgebung) normalerweise ein Komma ist, entspr. umgewandelt werden:

=SQLListe("SELECT Fahrzeugname FROM Autotabelle WHERE Fahrzeugmarke = '" & [Fahrzeugmarke] & "' AND Preis = " & Str([Preis]) ;",";",")
Titel: Re: Problem Berichterstellung Access
Beitrag von: Jacksen66 am Oktober 12, 2016, 21:50:36
Danke sehr. Habe ich korriegiert und funktioniert einwandfrei. Danke nochmal. Auch das mit dem einzelanzeigen habe ich hin bekommen.

Und ja DF6GL ich sollte mich da mal wirklich mit beschäftigen. Danke für eure hilfe und eure Geduld. Ich weis es war bei weitem nicht einfach.