PDA

Vollständige Version anzeigen : Probleme mit Abfrage... fortlaufende Nr


Matl982
22.03.2004, 09:51
Hallo allerseits!

Ich hab da wieder mal ein kleines Abfrageproblem:

2 Tabellen: Teilnehmer, Klassen, Startnummern

Die Abfrage teilt jedem Teilnehmer seine passende Klasse zu und macht pro Klasse eine zufällige Reihung (ZZG-Funktion). Nun soll die Abfrage aber auch noch den ganzen Teilnehmern eine laufende Nummer vergeben!!(genau in der Reihenfolge, in der die sie nach ihrer Startreihenfolge und ZZG-Wert sortiert wurden)

Bis jetzt hatte ich es so gemacht, dass die Abfrage die Werte in eine Tabelle schreibt - und die Tabelle den Autowert als Startnummer liefert.
Das kann ich aber leider nicht so lassen, da ich später dann noch Startnummern manuell in die tblStartnummern eingeben möchte - und das geht ja beim AutoWert nicht...

Das Ergebnis sollte also so aussehen wie in der tblStartnummern - nur dass die Startnummer kein Tabellen-AutoWert sein darf! MusterDB ist angehängt... vielleicht kann sich das mal jemand ansehen!

Achja, FAQ3.11 und KB-Artikel haben leider nicht den gewünschten Erfolg gebracht!

Freundliche Grüße
Matl982

reinir
22.03.2004, 15:08
ok - hab mir Deine DB mal angeschaut und unendlich viel geändert

Du solltest Dir mal den Link über relationale Datenbanken durchlesen
deine tblStartnummern speichert im Prinzip zu 99% Werte die Du sowieso schon hast, das führt zu Doppelspeicherungen - da kannst Du das Ganze gleich mit Excel aufbereiten

OK - was hab ich gemacht:

1.
2 neue Tabellen
tblWettkampf (Du willst ja sicherlich mehrere Wettkämpfe verwalten oder ??)
tblKlassenStarterWettk (mehrere Starter, mehrerer Klassen in mehreren Wettkämpfen - in dieser Tabelle speichern wir auch die Startnummern !!)

Abfragen:
qryStartnrjeTeilnermitteln - wird für die U-Frm Anzeige benötigt - wo wir dann auch die Start-Nr ermitteln

FORMULARE:
frmWettkampfVerwaltung
frmKlassenVerwaltung
frmTeilnehmer (wo Du auch gleich die Klassen eingeben kannst)
frmWettkHfrm & frmWettkUfrm

rufst Du das frmWettkHfrm auf, kannst Du aus einer Combo-Box die jeweiligen gespeicherten Wettkämpfe auswählen
nachdem zeigt er Dir für den jeweiligen Wettkampf die Teilnehmer an (Unterformular)
dann hast Du einen Button "Startnummern ermitteln"
der macht folgendes

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> cmdStartNr_Click()
&nbsp;
<span class="TOKEN">Dim</span> LastStartNr <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="REM"> ' h&ouml;chste vergebene StartNr f&uuml;r diesen Wettkampf ermitteln</span>
LastStartNr = DMax(&quot;[Startnummer]&quot;, &quot;tblKlassenStarterWettk&quot;, &quot;WID= &quot; &amp; Me!cboWettK) + 1
&nbsp;
<span class="TOKEN">Set</span> db = CurrentDb()
<span class="REM"> ' Recordset-Objekt erstellen</span>
<span class="TOKEN">Set</span> qd = db.QueryDefs(&quot;qryStartnrjeTeilnermitteln&quot;)
qd![Forms!frmWettkHfrm!cboWettK] = Me!cboWettK
&nbsp;
<span class="REM"> ' neue Startnummern schreiben</span>
<span class="TOKEN">Set</span> oRs = qd.OpenRecordset
oRs.MoveFirst
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> <span class="TOKEN">Not</span> oRs.EOF
oRs.Edit
oRs!Startnummer = LastStartNr
LastStartNr = LastStartNr + 1
oRs.Update
oRs.MoveNext
<span class="TOKEN">Loop</span>
oRs.Close
<span class="TOKEN">Set</span> oRs = <span class="TOKEN">Nothing</span>
db.Close
<span class="TOKEN">Set</span> db = <span class="TOKEN">Nothing</span>
&nbsp;
Me!frmWettkUFrm.Form.Requery
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

dann hast Du im U-Form die ermittelnden Startnummern (Kriterium für die Vergabe ist die Abfrage 'qryStartnrjeTeilnermitteln', die nach Startreihenfolge und Deiner Zufallszahl sortiert ist ...

was fehlt noch:
die Zuorndung der Teilnehmer zum jeweiligen Wettkampf, aber das bekommst Du sicher hin ...