Hallo Forengemeinde.
ich wende mich heute mit einem Problem an euch, welches ich seit Tagen
versuche zu lösen.
Ich habe in meinem Programm einen Urkundendruck angelegt. Die Abfrage dazu (A_Urkunden) habe ich mit Hilfe der Forengemeinde erstellt. (Top 3 etc.)
Es werden die besten 3 einer Jeden Klasse (Damen / Herren etc.) und der jeweiligen Bogenklasse (Langbogen, Recurve etc.) ausgegeben.
Mein Problem: Manchmal passt das, manchmal scheint Access einfach beliebige Namen ungeachtet der Wertung einzusetzten. Die Gesamtergebnisliste ist korrekt. Lediglich die Urkunden passen nicht. Kann mir jemand helfen?
Vielen Dank im Voraus für eure Mühe.
Hier die DB zum Download:
https://drive.google.com/file/d/0Bzo61QTm-cJTTUJKcEJHRTFFb28/edit?usp=sharing (https://drive.google.com/file/d/0Bzo61QTm-cJTTUJKcEJHRTFFb28/edit?usp=sharing)
Hallo,
da muss ich einem Schützenkollegen gleich helfen :)
Kann das nicht nachvollziehen...
Der Bericht spiegelt korrekt die Daten aus der Abfrage nach...
Lediglich die Sortierung der Abfrage unterscheidet sich vom Bericht, weil sich ein Bericht nach seiner eigenen Sortierung richtet und nicht nach der in der Abfrage.
Zudem:
--DB komprimieren/Reparieren
--In JEDEM Modul Option Explicit einbauen.
-- Im VBA-Editor den Code kompilieren und speichern. Alle angezeigten Fehler eliminieren! (hab ich zunächst auch erst machen müssen.)
--im Berichtslayout würde ich alle Felder aus der Datenherkunft (Abfrage) als Textfelder einbauen, auf "unsichtbar" stellen und diese Textfeldnamen in anderen Textfeldern zur Weiterverwendung einsetzen.
Hallo
Danke erst einmal für deine Mühe
ich bin jetzt zugegeben überfordert mit der Info. Was muss ich jetzt genau machen. Die Ergebnisliste (bericht) zeigt ja eine andere Reihenfolge als die Urkunde an.
Die Abfrage an sich ist ja schon im Ergebnis falsch. Vergleiche das mal mit der Ergebnisliste (Bericht)
ZitatDB komprimieren/Reparieren
--In JEDEM Modul Option Explicit einbauen.
-- Im VBA-Editor den Code kompilieren und speichern. Alle angezeigten Fehler eliminieren! (hab ich zunächst auch erst machen müssen.)
--im Berichtslayout würde ich alle Felder aus der Datenherkunft (Abfrage) als Textfelder einbauen, auf "unsichtbar" stellen und diese Textfeldnamen in anderen Textfeldern zur Weiterverwendung einsetzen.
Das erste hab ich gemacht (Vewaltung)
die nächsten Punkte verstehe ich nicht (wie macht man das) Ich bin totaler Anfänger
Den letzten Punkt verstehe ich so, dass ich die Felder nur zur Sicherheit (z.B Sortierung, Berechnung etc) mit reinnehme?
Hallo,
und nun verstehe ich das nicht:
"Die Ergebnisliste (bericht) zeigt ja eine andere Reihenfolge als die Urkunde an."
Der Bericht ist doch die Urkunde.. (der Urkunden-Druck) ?
"Die Abfrage an sich ist ja schon im Ergebnis falsch"
Das hast doch aber anfangs als richtig beschrieben... Liefert die Abfrage nun die richtigen Ergebnisse (unabhängig von einer Sortierung/Reihenfolge) oder nicht ?
(Hatte noch was vergessen zu sagen: Nimm die Sortierung aus der Abfrage heraus!)
Zitat
die nächsten Punkte verstehe ich nicht (wie macht man das) Ich bin totaler Anfänger
Alt F11 drücken, der VBA-Editor poppt auf, dort die beschriebenen Maßnahmen durchführen.
ZitatDen letzten Punkt verstehe ich so, dass ich die Felder nur zur Sicherheit (z.B Sortierung, Berechnung etc) mit reinnehme?
Das ist jetzt zu komplex für eine genaue Beschreibung. Ich habe jedenfalls festgestellt, dass es Probleme mit einem Bericht geben kann, wenn Felder aus der Datenherkunft (an kein Steuerelement gebunden) für die Berechnung (Verwendung) in Ausdrücken für Steuerelementinhalte benutzt werden..
Hallo, danke für das ausführliche Feedback
Zur besseren Erklärung: Es gibt den Bericht Ergebnis und den Bericht Urkunde (Urkunde Jugend ist erstmal egal)
In der Ergebnisliste steht zb. Hans Vogel Recurve blank auf dem zweiten Platz.
Bei der Urkunde taucht der aber gar nicht auf!
Die Abfrage liefert scheinbar das falsche Ergebnis.
Alt F11 öffnet den VBA Editor. Aber was ich ich da genau machen?
Bin auf Debuggen gegangen und dann auf "kompilieren von Datenbank1"
Es erscheint eine Fehlermeldung, das ein Schlüsselwort (me) unzulässig ist. (bei einem konvertierten Makro)
Ich muss zugeben, dass ich gar nicht weiß was ich da gerade mache :-[
Hallo,
naja, Du überprüfst den hinterlegten Code...
Was Du beim besagten Fehler sieht, ist eine Sub-Prozedur, die aus einem Formular(-Klasse) in ein allgemeines Modul verschoben/kopiert wurde. Dann ist "ME" als Referenz auf das akt. Form nicht zulässig..
Kurz: Lösch die Prozedur aus dem Modul und kompiliere erneut..... (Vorher Option Explicit nicht vergessen!)
Wenn Du nicht weißt, was Du gerade machst, dann ist die DB vermutlich nicht von Dir erstellt worden. Es wäre dann sinnvoll, sich erst mit den Grundlagen von Access zu beschäftigen, sonst Du kommst Du allein nicht weiter. Du könntest auch den Autor bitten, den Code (bzw. die gesamte DB ) auf Vordermann zu bringen.
Hast Du nun die Sortierung aus der Abfrage entfernt und den Urkunde-Bericht nochmal angesehen und geprüft?
Hallo nochmal,
die DB stammt von mir, ich wußte nur nicht, was das debuggen zu bedeuten hat. Ich vermute jetzt: Fehlersuche im Code?
Die Sortierung habe ich rausgenommen, aber es kommt immer noch das falsche Ergebnis raus :-\
Ich komme da einfach nicht weiter.
Könntest Du Dir mal den hinterlegten Code in der Sql Ansicht anschauen? Dieser wurde von mir im try and error Verfahren erstellt.
Nachtrag:
Ich habe das jetzt kompiliert und es kommt keine Fehlermeldung mehr. Der Punkt ist jetzt nicht mehr verfügbar. ist das so korrekt?
Die Abfrage liefert immer noch das falsche Resultat, wo liegt den bloß der Fehler??? Zumal es offensichtlich bei einigen Klassen korrekt ist
Hallo,
nochmal:
Ist das Abfrageergebnis korrekt oder nicht?
Ist der Urkunde-Bericht entspr. dem Abfrageergebnis korrekt oder nicht?
Was ist die "Ergebnisliste" ? Soll das das Ergebnis der Abfrage "A_Urkunde" sein?
Ob die Abfrage die erwarteten und "richtigen" Daten liefert, kann ich ad hoc nicht sagen.
Also die Urkunde basiert auf dem Abfrageergebnis der Abfrage "A-Urkunde"
Das Urkundenergebnis entspricht dem Abfrageergebnis. Allerdings ist das Ergebnis der Abfrage falsch. Es sollen die jeweils ersten 3 der Startklasse (Damen/Herren etc.) in der jeweiligen Bogenklasse (Langbogen, Recurve etc.) ausgegeben werden.
Das macht die Abfrage aber nicht.
Es gibt noch einen weiteren Bericht mit dem Namen "Ergebnis". Hier sind alle Schützen aufgeführt (nicht nur die ersten 3). Dieser Bericht ist korrekt. Vergleicht man hier den Rang, so unterscheidet sich dieser von dem angegebenen Rang auf der Urkunde.
Ich hoffe es ist so deutlich geworden.
Danke noch mal für die Hilfe!!!
Keiner eine Idee :-[
ich hab schon alle Möglichen Sachen probiert, ohne Erfolg.
Gemach , gemach, so viel Zeit habe ich momentan nicht..
Hallo,
also ich kann hier keine Unstimmigkeit feststellen. Erzähl mal, bei welchen Datensätzen genau ein Problem liegen soll...
Hallo,
schau dir bitte mal den Bericht Ergebnis an. Also die Siegerliste . Auf Platz 2 bei den Herren Recurve ist Hans Vogel.
Nun schau Dir bitte die Urkunde an. Auf Platz 2 ist Rolf Mutziputzi.
Die Siegerliste (mit allen Teilnehmern) ist völlig korrekt. Nur bei der Urkunde (einschl. Ihrer Abfrage) stimmt was nicht.
Hallo,
in der Unterabfrage fehlt " order by t1.Punkte desc, t1.Kills desc"
Hallo nochmal
ich habe die Abfrage wie folgt eingegeben:
SELECT T1.*, tbl_Bogen.Bogentyp, tbl_Startklasse.Startklasse, tbl_Turnier.Turnierbezeichnung, tbl_Turnier.Turnierdatum
FROM tbl_Turnier, tbl_Bogen INNER JOIN (tbl_Startklasse INNER JOIN tbl_teilnehmer AS T1 ON tbl_Startklasse.ID_Startklasse = T1.fid_Startklasse) ON tbl_Bogen.ID_Bogen = T1.fid_Bogenklasse
WHERE (((T1.ID_Teilnehmer) In (SELECT TOP 3 ID_Teilnehmer FROM tbl_teilnehmer WHERE fid_Startklasse = T1.fid_Startklasse AND fid_Bogenklasse = T1.fid_Bogenklasse AND Punkte>0)))
ORDER BY T1.Punkte DESC , T1.Kills DESC;
leider geht es immer noch nicht. Wo muss ich da noch korrigieren?
Für deine Hilfe schon mal ganz herzlichen Dank. Bin totaler Anfänger und steh entsprechend auf dem Schlauch
Hallo,
WHERE (((T1.ID_Teilnehmer) In (SELECT TOP 3 T2.ID_Teilnehmer FROM tbl_teilnehmer as T2 WHERE T2.fid_Startklasse = T1.fid_Startklasse AND T2.fid_Bogenklasse = T1.fid_Bogenklasse AND T2.Punkte>0 ORDER BY T2.Punkte DESC , T2.Kills DESC )))
btw: Im Falle gleicher Punkte-Zahl und gleicher Kills-Zahl (--> gleicher Rang) ergibt das Komplikationen.....
Vielen Herzlichen Dank, es klappt! Das hätte ich nie hinbekommen!
;D