collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 55
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13700
  • stats Beiträge insgesamt: 62191
  • stats Themen insgesamt: 8474
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Bei markieren eines Datensatzes im Listenfeld soll dieser in einem Ufo angezeigt  (Gelesen 501 mal)

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hallo,

ich habe ein schon vorhandenes, funktionales Feature für einen anderen Zweck dupliziert, bekomme aber eine Übergabefunktion nicht hin. Da es aus meiner Sicht ein relativ komplexes Konstrukt ist, wird es mit Worten wohl sehr ausschweifend zu erklären. Noch dazu habe ich hier schon oft zu hören bekommen habe (meist auch zurecht), dass ich beim erklären eine echte Nervensäge bzw. ein Mensch bin, der wohl mehr verwirrt als aufklärt :-\. Deshalb habe ich eine Beispiel-DB hochgeladen ==> http://quartettportal.de/SW/QuartettDB_Forum.zip ca. 1,5 MB
und die dazugehörigen Bilder http://quartettportal.de/bilder/AccessOMania/QuartettDB_Bilder.zip ca. 96,5 MB, damit man die Wirkungsweise des funktionalen Features besser sieht.
Damit dann die Bilder zu den Datensätzen passen, einfach den Bilderpfad über den Button "Bilderpfad festlegen" anpassen.
Beim funktionalen Feature wurde ich freundlicherWeiuse vom Forum hier tatkräftig unterstützt. Beim clone versuche ich mich schon lange, aber ich stecke fest.
Es ist die Suche mit dem dahintersteckenden select angepasst aber funktional, und auch die Darstellung der Datensätze im Ufo ist abgewandelt (da kommt ja aber noch nichts an:(). Bei letzterem vermute ich eben den Fehler, dass der Clone des Features nicht funktioniert :(.
Wäre jemand so frei, mir hier Unterstützung zukommen zu lassen, wohl wissend, dass es schon ein wenig komplexer ist was ich da als Thema einstelle? Ich würde mich da auch erkenntlich zeigen, an dem soll es letztendlich nicht hängen (auch wenn es nicht für die Anzahlung eines Aston Martin reichen wird :o).

Gruß Andreas
« Letzte Änderung: Juli 15, 2017, 19:03:05 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
1) Dem Listenfeld fehlt die Mehrfachauswahl.
2) Die RowSource des UFos ist nicht anscheinend komplett.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hi,
1) Dem Listenfeld fehlt die Mehrfachauswahl.
2) Die RowSource des UFos ist nicht anscheinend komplett.
Punkt 1 habe ich geändert.
zu Punkt 2 habe ich SpielID_F auf SpielID geändert, was er angemeckert hat. Hier habe ich einfach einen Schreibfehler gehabt. Im Ufo habe ich noch Filter auf False gesetzt, damit wird es auch erst angezeigt, wenn ein Datensatz ausgewählt wird. Die korrigierte DB habe ich noch einmal hochgeladen http://quartettportal.de/SW/QuartettDB_Forum.zip.
Wenn man jetzt in der DB das Feature Spielkarten vergleichen öffnet, einen Datensatz sucht mit z.B. Bonn, das Suchergebnis dann markiert, übergibt er zumindest mal den Datensatz fast korrekt. Mal zeigt er viele auf einmal an wie z.B. bei Diplomat. Dann befüllt er die Werte der Liste im Ufo nicht korrekt. Wie gehe ich am besten und geordnet vor, diese Punkte Schritt für Schritt auszumerzen?

Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Du könntest in der Abfrage die Eigenschaft keine Duplikate nutzen SELECT DISTINCT ... und weiterhin prüfen, ob das Kriterium In (1,5) (Feldname habe ich mir nicht gemerkt) gewollt oder ungewollt in die Abfrage gerutscht ist.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hi,
erstmal danke, dass du mir etwas hilfst.
Du könntest in der Abfrage die Eigenschaft keine Duplikate nutzen SELECT DISTINCT ... und weiterhin prüfen, ob das Kriterium In (1,5) (Feldname habe ich mir nicht gemerkt) gewollt oder ungewollt in die Abfrage gerutscht ist.
Das Kriterium ist mit reingerutscht beim clonen des Ufo und wurde beim anpassen nicht entfernt, auch weil ich nicht wirklich gewusst habe was es veranstaltet:(.
Das mit den Duplikaten wäre erst mal okay. Wenn ich Spielkarten, die im Namen "identisch" sind und deren Einträge vergleichen will (und nur das), dann sind das in der Regel "Duplikate", der Unterschied besteht lediglich im Erscheinungsjahr des Spieles oder weil es von einem anderem Verlag ist. Da will ich dann sehen, ob die damals eben andere Werte für das auf der Karte dargestellte Objekt übermittelt haben etc.
Aktuell werden jetzt noch die falschen Bilder selektiert, da aktuell nur *_db.png oder *_id.png selektiert werden. Ich benötige dann korrekterweise bilder wie *_6a.png oder *_1b.png. (Damit das klappt, habe ich grundsätzlich wie du vielleicht an den Bildern gesehen hast eine Namenskonvention, welche ich strickt einhalte, eben aus der Warte heraus, dass darauf gesucht wird). Aber zuvor muss erst mal die Selektion funktionieren.
Ich habe es mir jetzt noch mal angeschaut. Wenn ich jetzt z.B. als Suchbegriff Abar eingebe, dann findet er 3 Datensätze (bild1).
Klicke ich dann einen Datensatz an, dann öffnet er 4 Datensätze und keiner davon hat was mit dem markierten Datensatz zu tun :-\.  Beim markieren passieren 2 Dinge:
SELECT tblQuartette.SpielID_F,
       tblSpiele.SpielNr,
       tblSpiele.Ausgabejahr,
       [QuartettKz] & [KartenNr] AS Karte,
       tblQuKarten.Kartenbezeichnung
FROM tblSpiele
INNER JOIN (tblQuartette
            INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
ORDER BY tblQuKarten.Kartenbezeichnung;

Weiterhin das Ereignis AvterUpdate
Private Sub lstKarten_AfterUpdate()
    Dim strKarten As String
    Dim itm As Variant
    If Me.lstKarten.ItemsSelected.count > 0 Then
        ' ausgewählte Karten anzeigen
        For Each itm In lstKarten.ItemsSelected
            strKarten = strKarten & "," & Me.lstKarten.ItemData(itm)
        Next
        Me.ufKarten.Form.Filter = "SpielID in (" & Mid(strKarten, 2) & ")"
        Me.ufKarten.Form.FilterOn = True
    Else
        ' leeres Ufo anzeigen
        Me.ufKarten.Form.Filter = "False"
        Me.ufKarten.Form.FilterOn = True
    End If
End Sub

Irgendwo ist doch da ein Kriterium falsch, dass sich die Suche hier verirrt, oder?
Gruß Andreas

PS: Ich glaube ein Fehler ist, dass ich nach SpielID suche und filtere und nicht nach QuKartenID. Das würde erklären, warum er dann z.B. 4 Datensätze aufmacht. Kannst du das bestätigen?
« Letzte Änderung: Juli 16, 2017, 17:41:17 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hi,
ich habe beim drüber "nachdenken" folgenden Aspekt gefunden und daraufhin angepasst.
Das Listenfeld im frmZeigenUfoKartenSuche soll ja die Kartenwerte anzeigen, soferrn schon welche hinterlegt sind. Aktuell zeigte er irgendwas wildes an, waren aber nie die korrekte Daten. In der Datensatzherkunft für das Listenfeld war folgendes (bild1). Hat man diesen select ausgeführt, hat er erst mal nach der QuKartenID verlangt. hat man eine eingegeben, hat er natürlich ein Resultat geliefert, lies man es leer war auch die Abfrage leer. Okay, hat mir gesagt, die Liste kann nichts liefern, weil sie im Moment von frmZeigenUfoKartenSuche auch keine QuKartenID übermittelt bekommt. Also habe ich in frmZeigenUfoKartenSuche ein txtQuKartenID erzeugt, welche auch befüllt wird, sobald ich einen Datensatz in frmKartenSuche im Listenfeld lstKarten markiere. Daraufhin habe ich noch die Datensatzherkunft der Liste lstQuKarte wie folgt angepasst (bild2). Aber, ich habe jetzt noch immer nicht das erhoffte Ergebnis. Ich glaube ja, dass ich das ganze aktuell nur nicht richtig verbinde. Kann da mal jemand drüber schauen?

Aktuelle Datenbank habe ich hochgeladen ==> http://quartettportal.de/SW/QuartettDB_Forum.zip

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Zunächst würde ich den ganzen Krempel aus dem Unterformular in das bis auf den Formularkopf leere Hauptformular auslagen.

Dann solltest Du die verwndete Abfrage verstehen.

Hat ein Spiel mehr als 1 Bild, werden alle Datensätze in der Abfrage um die Anzahl der Bilder vervielfältigt.

Gibt es für Quartettkarten mehr als ein Kartenmerkmal, so werden die Datensätze um die Anzahl der Kartenmerkmale verfielfältigt.

Man muss nicht Alles in eine Abfrage stopfen. Die Kartenmerkmale, sowie die Bilder sollten IMO in einem separaten Unterformular verweilen - dann solltest Du zumindest der Dubletten Herr werden.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hallo,

Zunächst würde ich den ganzen Krempel aus dem Unterformular in das bis auf den Formularkopf leere Hauptformular auslagen.
Okay, das heißt raus aus dem Ufo frmZeigenUfoKartenSuche in den Detailbereich von frmKartenSuche. Dein deutlich besseres Verständnis von Design innerhalb von Access wird diesen Vorschlag
rechtfertigen. Aber wie kann man dann das geplante anzeigen von mehreren Datensätzen realisieren, wenn das nicht über das Ufo geht (siehe Darstellung im Feature Nr.-ident. Spiele vergleichen auf der Hauptseite)?
[/quote]

Zitat
Dann solltest Du die verwndete Abfrage verstehen.
Hat ein Spiel mehr als 1 Bild, werden alle Datensätze in der Abfrage um die Anzahl der Bilder vervielfältigt.
Du hast ja auch richtig bemerkt, dass Access bei mir im Gegensatz zu dir eher der Raketenwissenschaft gleicht :(.
Das ist zwar richtig, dass ein Spiel mehr als ein Bild hat, aber das ist ja nicht das Thema, was ich Abfrage! Ganz kurz zur Klärung: 1 Spiel --> 8 bzw. 9 Quartette --> 32 bzw. 36 Einzelkarten
Ich will in allen in der DB dokumentierten Einzelkarten (ca. 85000) welche über 2532 Spiele/Datensätze verteilt sind, z.B. alle Einzelkarten suchen, welche die Bezeichnung  Ferrari 250 GT haben.
Aber (du wirst mich schon korrigieren wenn nötig), in meiner Einfältigkeit sehe ich es doch richtig, dass wenn ein Datensatz eine ID (z.B. SpielID) hat und an diese ID eben 2 weitere hängen bzw.
abhängig sind wie z.B. QuartettID_F und QuKartenID, diese erst mal via select auslesen kann was es an gemeinsamen Datensätzen so gibt. Habe ich dann ein Suchergebnis, dann dachte ich in meiner
ländlichen Denkweise, dass ich wie bei dem Feature Nr.-ident. Spiele vergleichen im Ergebnis der Suchliste einen DS markiere und dieser dann im UFO mit seinen Daten angezeigt wird.
Dass dies so gar nicht funktioniert, beraubst mich gerade aller Illusionen, die ich so habe/hatte
Zitat
Gibt es für Quartettkarten mehr als ein Kartenmerkmal, so werden die Datensätze um die Anzahl der Kartenmerkmale vervielfältigt.
Man muss nicht Alles in eine Abfrage stopfen. Die Kartenmerkmale, sowie die Bilder sollten IMO in einem separaten Unterformular verweilen - dann solltest Du zumindest der Dubletten Herr werden.
Jo, ich glaube wir reden nicht unbedingt vom selben, da es immer Karten aus einem anderen Spiel sind, eben nicht aus dem selben! Deswegen habe ich versucht es oben noch einmal "aufzudröseln".

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Noch einmal zum Mitdenken. Bilder liegen zu Spielen und nicht zu QuKarten vor. Wird ein Spiel angewählt, so werden je Spiel x Quartette angezeigt multipliziert mit der Anzahl der eingetragenen QuKarten multipliziert mit der Anzahl der Karten. Gibt es jetzt für ein Spiel 1 Bild, bleibt es so, bei zwei Bildern verdoppelt sich die Datensatzanzahl, bei dreien verdreifacht sie sich, usw..

Deswegen mein Tipp: erstelle ein UFo für die Bildanzeigen, die sich auch dann noch wiederholen kann. Aber das ist halt so, wenn man Daten aus mehreren Ebenen unbedingt vereinen will.

Die Merkmal werden ja bereits im Listenfeld dargestellt und müssen nicht in der Abfrage aufgeführt werden.

Hier mal eine bereinigte Form der Abfrage (allerdings noch mit den Bildern) mit 1052 Datensätzen!.
 
SELECT Dlookup( "bilderpfad", "tblbildpfad" ) AS BilderPfad,
       TBLVERLAG.bilderordner,
       TBLBILDERZUSPIEL.bilddateiname,
       TBLQUKARTEN.qukartenid,
       TBLQUKARTEN.kartenbezeichnung,
       [quartettkz] & [kartennr]              AS Karte,
       TBLSPIELE.spielid,
       TBLSPIELE.spielnr,
       TBLSPIELE.ausgabejahr,
       TBLSPIELE.verzeichnisname,
       TBLSPIELE.serieid_f
FROM   TBLVERLAG
       INNER JOIN ((TBLSPIELE
                    INNER JOIN TBLBILDERZUSPIEL
                            ON TBLSPIELE.spielid = TBLBILDERZUSPIEL.spielid_f)
                   INNER JOIN (TBLQUARTETTE
                               INNER JOIN TBLQUKARTEN
                                       ON TBLQUARTETTE.quartettid = TBLQUKARTEN.quartettid_f)
                           ON TBLSPIELE.spielid = TBLQUARTETTE.spielid_f)
               ON TBLVERLAG.verlagid = TBLSPIELE.verlagid_f;

... und die passende Abfrage  für das Listenfeld:
SELECT TBLMERKMALE.merkmalid,
       TBLMERKMALE.merkmal,
       TBLKARTENMERKMALE.eintrag,
       TBLMERKMALE.einheit
FROM   TBLMERKMALE
       INNER JOIN TBLKARTENMERKMALE
               ON TBLMERKMALE.[merkmalid] = TBLKARTENMERKMALE.[merkmalid_f]
WHERE  (( ( TBLKARTENMERKMALE.qukartenid_f ) = [form]![qukartenid] ));
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 506
    • Quartettportal
Hi,
danke erst mal für deine Geduld mit meiner langen Leitung. Ich gebe zu, es fällt mir schwer dir immer zu folgen, wenn z.B. sagst, Bilder liegen zu Spielen und nicht zu QuKarten vor. Da das Bild auf der Karte abgebildet ist, denke ich eben so Spiel=QuKarten QuKarte=Bild. Da denke ich wohl wieder mal falsch.
Okay. Fazit:
  • Du würdest das Ufo entrümpeln, also nur die Bildanzeige in das Ufo "auslagern".
  • Die Liste, die würdest du dann in den Detailbereich "befördern".
  • Die anderen Werte im Ufo kann ich bei weiterem drüber nachdenken wahrscheinlich auch weglassen, da ich die Infos schon oben in der Suchergebnisliste habe, zumindest die SpielID und SpielNr. was mir auch schon reicht.
Würde es etwas bringen, dass er nur Karten auswählt, die auch wirklich mit Merkmalen "bestückt" wurden? Damit meine ich z.B. aus der DemoDB wie aus SpielID 79 ersichtlich als Beispiel das Quartett A. Da sind ja lediglich diese 4 Karten mit Werten hinterlegt, was im Feld "Werte" zu erkennen ist. Das wären dann z.B. in der Demo-DB erstmal nur noch 18 Karten und Bilder in den 8 Spielen. Mir geht es erst mal auch nur um das "eindämmen" der Datenmengen. Wenn das auch eine Massnahme ist, dann müsste man in dem Select der Suche im Formular frmKartenSuche das Feld Werte mit einbeziehen, oder? Wenn ja, wie kann man das, da das Feld Werte kein Feld einer Tabelle ist!

Gruß Andreas
Grüße und Dank im voraus
Andreas