Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Bitte um Hilfe bei einer Abfrage

Begonnen von AndySVW, März 08, 2024, 00:22:24

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
ZitatIch hab die aufgerufen und dann als .mdb gespeichert weil sonst hätte ich sie hier so nicht hochladen können.

Eine DB sollte als Zipfile gespeichert werden. dann klappt das auch mit einer ACCDB.

ZitatErlaubte Dateitypen: mdb, mde, xls, xlt, ppt, doc, gif, jpg, mpg, pdf, png, txt, zip, sql

Vor dem Zippen noch Reparieren/Komprimieren (Access Diestprogramm) ausführen.
Gruß Klaus

AndySVW

Oh super,

vielen Dank für den Hinweis Klaus.
Dann hier nochmal .accdb als .zip :)
Reparieren/Komprimmieren hab ich auch ausgeführt vor dem zippen.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Beaker s.a.

Hallo Andy,
So, ich habe dir schon mal die Tabellen so eingerichtet wie ich mir
es vorstelle. Habe dazu deine Tabellen kopiert und um die FK-Felder
ergänzt (Namensfelder gelöscht). Ich überlege noch, ob man die beiden
"Turniertabellen" zusammenfasst; - "Trennung" über ein Kennzeichen.

Leider gibt es da Inkonsistenzen, die ich aber nicht finde (muss jetzt
auch aufhören).
Ich kann keinen eindeutigen Index auf die beiden SpielerIDs erstellen.
Es müsste also Spiele geben bei denen beide gleich sind, finde ich
aber nicht
SELECT SpielID, Spieler1ID_F, Spieler2ID_F
FROM Arena_CS_T
WHERE Spieler1ID_F = Spieler2ID_F
zeigt keine DS.
Mit der Abfrage "qryArena_CS_T" habe ich einen ersten Formularentwurf
erstellt, in dem sich aber keine DS anlegen lassen; - auch mit Index-
Fehler. In der Abfrage selber lassen sich problemlos neue DS erfassen.

Vielleicht mag Klaus mal drüber schauen und mir auf die Sprünge helfen.

Schau es mir morgen noch mal an.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

AndySVW

Hallo Ekkehard,

ich bin schon unendlich dankbar das du es dir überhaupt anschaust und es versuchst.

Falls Klaus sich die sache auch mal anschaut oder andere, bin ich natürlich auch unendlich dankbar.

Das traurige ist, ich würde so gerne mithelfen.
Aber ich bin leider kein coder bzw. das wissen reicht bei mir einfach nicht aus :(

Was ich aber machen kann.

ZitatIch kann keinen eindeutigen Index auf die beiden SpielerIDs erstellen.
Es müsste also Spiele geben bei denen beide gleich sind, finde ich
aber nicht

Was genau meinst du damit ? Also Spiele bei denen beide gleich sind ?
Ich kann ja mit suchen, wenn du mir sagst wonach ich genau suchen soll.

Und falls das nicht zum Erfolg führt.
Notfalls trage ich alle vergangenen Begegnungen nochmal von neu ein.
Glaub es sind etwas über 500. Also die Zeit würde ich mir schon nehmen.
Besser ich fange bei 500 von vorne an als bei 10.000.
Und 500 Begegnungen hat man ja in paar tagen schnell eingegeben.
Falls das jetzt das Problem wäre.


Beaker s.a.

Hallo Andy,

Hier mein zweiter Entwurf.
Ich habe jetzt die beiden Wettbewerbe (hab's Turniere genannt) zusammen in
eine Tabelle gepackt. Leider sind dabei einige Spiele verloren gegangen.
Mit der einen Tabelle braucht man auch nur ein Formular, das beim Öffnen
auf den Wettbewerb gefiltert wird. Kannst du mit deinem "Hauptform" schon
ausprobieren.
Das "frmSpiele" hat noch Macken. Das Kombi Sieger sollte eigentlich nur
noch die beiden Spieler anzeigen. Macht es bei den meisten auch, allerdings
wird bei manchen Spielen nur ein Spieler angezeigt. Ich werde morgen noch
mal schauen, ob das an deinen DS liegt oder ob da noch ein Fehler im DM
steckt. Werde also ein paar Textdaten eingeben und sehen ob es da auch
passiert. Evtl. musst du deine Daten halt doch noch mal neu eingeben.
Wenn ich das geklärt habe, baue ich dir auch noch den Rest; - Spiele des
Spielers, Spieler gegen Spieler.
Das Form sollte auch erst mal nur dem Test der Eingabegeschwindigkeit dienen.
So wird z.B. die Punktzahl des Siegers automatisch eingetragen.
Erwarte also noch nicht zu viel, aber ich hab' Bock auf diese Fingerübung, -
geht also weiter.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Hallo,
Das mit dem Kombi konnte ich klären, - Abfrage falsch formuliert.
Jetzt habe ich ein Problem mit einer Abfrage, und würde gerne die
Regulars um Hilfe bitten
Diese Abfrage
SELECT S.Spielername, T.BR_Spieler1, S1.Spielername, T.BR_Spieler2, S2.Spielername, T.BR_Sieger, T.Spieldatum, T.TurnierArtID_F, T.SpielID
FROM Spieler AS S2
    INNER JOIN (Spieler AS S1
        INNER JOIN (Spieler AS S
            INNER JOIN Turniere AS T
            ON S.SpielerID = T.Spieler1ID_F)
        ON S1.SpielerID = T.Spieler2ID_F)
    ON S2.SpielerID = T.SiegerID_F
funktioniert als Abfrage geöffnet tadellos.
Als DS-Herkunft eines Forms nicht. Da wird beim Wechsel der Ansicht
aus aus der ControlSource "S1.Spielername" plötzlich "S.Spielername", -
beim Sieger (S2.Spielername) das Gleiche.

Kann mir einer erklären was ich da übersehe/falsch mache?
Aliase für die Felder helfen auch nicht.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

AndySVW

Hallo Ekkehard,

sorry für die später Antwort aber ich war gestern leider den ganzen tag unterwegs.
Ich kann mich nur nochmal bedanken.
Und wie gesagt wenn ich die daten nochmal alle eingeben muss, ist kein Problem :)
Ich hab auch schonmal in deine DB rein geschaut.
Also so eine Combobox ist ja wirklich krass :)
Ich würde sagen, ich stelle meine ganzen Fragen am ende, wenn die DB richtig läuft. 
Sonst wenn ich die Fragen jetzt stelle, geht das eigentliche Problem dann unter hier im Thread.

Beaker s.a.

Hallo Andy,
Kein Problem, - bin dran.
ZitatUnd wie gesagt wenn ich die daten nochmal alle eingeben muss, ist kein Problem
Nein brauchst du nicht. Bis Auf einen DS konnte ich jetzt alle importieren.
Leider muss ich jetzt spontan für 2-3 Stunden weg. Geht dann aber weiter.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Hallo,

@Regulars
Meine Frage aus vorigem Post hat sich erledigt. Habe die Abfrage jetzt als
gespeicherte Abfrage im UFo als DS-Herkunft hinterlegt, - das funzt.
War 'ne schwierige Geburt. Lag natürlich an mir selber, - zu viel
Ablenkung.

@andy
Soweit läuft die DB. Layout musst du halt nach deinen Vorstellungen anpassen.
Ausserdem, - ich habe nur die benötigten Controls "ordentlich" benannt, da
musst du alle Felder kontrollieren und entsprechend anpassen.

Was ich noch nicht implementiert habe ist die Eingabe neuer Spieler in die
Kombis. Aber vielleicht versuchst du das mit dieser Anleitung ja selber mal.

Ich hätte dann noch ein paar Kleinigkeiten, die man einbauen könnte
- autom. Aufklappen der Kombis (Methode .Dropdown)
- autom. Speichern nach Auswahl des Siegers und Sprung zu neuem DS
- farbliche Kennzeichnung des höheren BR
- statistische Angaben (Anzahl Spiele, Anzahl gewonnene, Verhältnis zum Gegner, yni)

Wegen der Fairness gegenüber den Regulars möchte ich dich noch darüber aufklären,
dass es hier normal nicht üblich ist "fertige" Anwendungen zu bekommen. Deshalb
wird jetzt auch erwartet, dass du dich auf dieser Grundlage bemühst weiter zu lernen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

AndySVW

#24
Hallo Ekkehard,

erstmal vielen lieben Dank für alles :)
Das du hier keine fertige Anwendung bekommst, das dachte ich mir schon vorher.
Deshalb war es mir wichtig, das ich wiederholt gesagt habe, das ich es lernen möchte.
Aber bei mir ist halt die Schwierigkeit wegen meiner Erkrankung dinge zu merken.
Ich muss sie aufschreiben. Aber was soll ich mir aufschreiben was ich nicht verstehe.

Deshalb hab ich ja darum gefragt, ob Jemand die Geduld hat mir das Schritt für Schritt zu erklären.

Denn selbst mit der DB die du Modifiziert hast, wenn ich die Befehle lese.
Es ist sehr schwierig für mich zu verstehen, was bei welchem Schritt passiert.

Aber dein Handeln verstehe ich natürlich auch.
Es ist bei mir manchmal auch so, bevor ich 100 Fragen beantworten muss, ist man dazu geneigt hinzugehen und sagen :"Gib her ich mach das eben selbst" :)
Aber ich habe gefragt und gebeten, das man es mir beibringt und erklärt.
Nicht das man es mir auf dem Silbertablett serviert :).

Ich hab vollstes Verständiss dafür wenn Jemand hingeht und sagt :"Nö du, da hab ich weder bock noch zeit um es dir zu erklären". Deshalb hab ich ja gefragt. Fragen ist nicht gleich Erwarten :)

Das du mir jetzt geholfen hast, betrachte ich auf keinen Fall als Selbstverständlich.
Denn das ist es nicht. Du hast Zeit und Mühen geopfert, wofür ich dir sehr dankbar bin.

Ich werde versuchen die Eingabe der neuen Spieler mithilfe von deinem Link zu implementieren.
Ob ich es schaffe keine Ahnung, aber ich versuche es.
Und werde später berichten.

ZitatIch hätte dann noch ein paar Kleinigkeiten, die man einbauen könnte
- autom. Aufklappen der Kombis (Methode .Dropdown)
- autom. Speichern nach Auswahl des Siegers und Sprung zu neuem DS
- farbliche Kennzeichnung des höheren BR
- statistische Angaben (Anzahl Spiele, Anzahl gewonnene, Verhältnis zum Gegner, yni)

Das klingt nice. Aber wenn ich das jetzt machen soll.
Natürlich will ich mich dem annehmen.
Zum jetzigen Zeitpunkt, wüsste ich aber nicht wo ich die Befehle dazu finde.
Und wo ich sie einbaue.

Ist jetzt ein blödes Beispiel.
Ich kann dir erklären wie man bei einem Auto die Bremsscheiben und Beläge wechselt.
Weil ich mich damit auskenne.
Aber wenn jemand vor mir steht der nicht wirklich Ahnung hat und mich fragt, ob ich das erklären kann.
Wenn ich dem Werkzeug dahin schmeisse und sage, such dir den Rest im Internet.
Ich glaub nicht, das demjenigen damit geholfen ist.

Das ist jetzt darauf bezogen, das es für euch natürlich einfacher ist, weil ihr euch mit DBs auskennt.
Für mich ist das ne andere Sache.

Und was mir auch wichtig ist, wenn es einige gibt die denken.
Ich wäre nur zu faul um etwas zu versuchen.
Dem ist nicht so.
Wenn man Gesundheitliche Probleme und Einschränkungen hat, ist es leider nicht so schön.

Trotzdem bis hier hin, vielen lieben Dank für die Hilfe :)


 





AndySVW

#25
Kleines Update.

Wie vermutet ich hab es nicht geschafft.
Ich weiss leider nicht woran es liegt.

Zitat'************** CODE START **************
Response = acDataErrAdded
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabellenname", dbOpenDynaset)

rs.AddNew
rs!Feldname = NewData
rs.Update

rs.Close : Set rs = Nothing
Set db = Nothing
'************** CODE ENDE **************

Tabellenname ist klar.
Aber bei Feldname gibt es Probleme. Egal was ich da eingebe. Es kommt immer ein Fehler.
Die Sache ist auch welcher Feldname ist damit gemeint ?
Der Feldname der cbobox ist : Spieler1ID_F
Der nimmt das aber nicht.

Eingegeben hab ich den Befehl unter :

frmSpiele---->Designview---->Dann auf die cbobox---->Eigenschaften---->Ereignis---->Bei nicht in der Liste.

Bei Tabellenname hab ich "Spieler" eingegeben weil die Tabelle nunmal "Spieler" heißt.

Also so:

ZitatPrivate Sub cboSpieler1_NotInList(NewData As String, Response As Integer)

Response = acDataErrAdded
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Spieler", dbOpenDynaset)

rs.AddNew
rs!Spieler1ID_F = NewData
rs.Update

rs.Close: Set rs = Nothing
Set db = Nothing

End Sub

Aber wie gesagt, ich bekomme direkt einen Fehler.

Aber davon abgesehen, ich hab noch ein anderes Problem gesehen bei der Datenbank.
Wenn ich nur einen Spieler eingebe. Das Geht nicht. Der will unbedingt das ich einen 2. Spieler eingebe.
Das ist aber schwierig. Wenn einer neu ist und gegen einen spielt der schon in der Liste ist.
Dann gibt es zwischen den beiden ja noch keine Begegnung.
Und da muss ich dann sehen können ... wie hat der Spieler, der in der Liste ist, die letzten Begegnugen gekämpft.
Also ich muss auch einen einzelnen Spieler ohne Spieler2 abrufen können.
Das geht in dem Formular aber nicht weil ich ja gezwungen bin einen 2. Spieler einzugeben.

Dann hab ich mal getestet.
Viele Kämpfe oder Begegnungen findet der gar nicht.
Als Beispiel in meiner Ursprünglichen DB haben Spieler X und Spieler Y schon 3 mal gegeneinander gekämpft.
In diesem Fall andysvw gegen nightmares.
Wenn ich das in der neuen DB eingebe findet der gar nichts.

Und wenn ich da auf Fehler suchen soll ist das unmöglich für mich :(


Beaker s.a.

Hallo,
ZitatEs ist sehr schwierig für mich zu verstehen, was bei welchem Schritt passiert.
Ich habe mir doch extra die Mühe gemacht und den Code kommentiert.
Weitere Hilfe zu den Schlüsselwörtern erhältst du wenn du den Cursor darauf
setzt und F1 drückst.
rs.AddNew
rs!Spieler1ID_F = NewData
rs.Update
Fast. In der Tabelle "Spieler" gibt es nur das Feld "SpielerID". Dieses ist aber ein
AutoWert um den du dich nicht kümmern musst, wie der Name schon sagt.
NewData ist der neue Spielername, also
rs.AddNew
rs!Spielername = NewData
rs.Update

ZitatUnd da muss ich dann sehen können ... wie hat der Spieler, der in der Liste ist, die letzten Begegnugen gekämpft.

Das ist eine neue Anforderung, geht aber natürlich auch. Da muss man eben
nach Eingabe des ersten Spielers das UFo auf alle Spiele des Spielers filtern

.ucAlleSpiele_Spieler.Form.Filter = _
              "Spieler1ID_F = " & .cboSpieler1 & " OR Spieler2ID_F = " & .cboSpieler1

Man könnte auch für jeden Spieler zusätzlich ein eigenes UFo mit allen
seinen Spielen platzieren (wenn der Platz reicht). Oder das jetzige UFo
über ein Register legen und die Ansicht darüber umschalten.
Die erste Lösung halte ich für besser, denn du brauchst ja einen schnellen
Überblick.
Mal eben eine Frage zwischendurch; - es gibt keine Heim-/Gastspieler, will
sagen, die Reihenfolge ist egal?

ZitatViele Kämpfe oder Begegnungen findet der gar nicht.

Da muss ich überprüfen ob beim Import was schief gelaufen ist.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Hallo Andy,

DS sind vorhanden. Da hat sich nur ein Tippfehler in den Filterstring
eingeschlichen. Habe ich korrigiert.

Dabei ist mir eingefallen, dass dir vielleicht gar nicht bewusst ist, dass
die Kombis keine Felder zum Suchen/Finden sind; - die sind gebunden.
D.h. wenn du darin etwas änderst, wird wird der DS des Spiels verändert, da
steht dann z.B. ein anderer Spieler drin wenn du des DS speicherst.
Das habe ich jetzt abgeschaltet, - nur neue, nicht gespeicherte DS können
geändert werden.
Deshalb habe ich dir im Formkopf noch ein Kombi zur Suche nach einem Spieler
eingebaut. Nach Auswahl werden dir dann alle Spiele angezeigt, auch die aus
der anderen Liga (könnte man auch ausfiltern). Eine andere Sortierung müsste
man ergänzen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Sorry, im letzten Moment eingefallen, das es so nicht geht.
Melde mich morgen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)