Hallo
Ich stehe gerade gedanklich voll auf dem schlauch und benötige wieder mal eure Hilfe.
Es wir in ein Formular Datensätze geschrieben der Index (Zähler) als Zahl soll beim anfügen eines Datensatz um immer einen wert 1 hochgezählt werden, ist der max Wert von z.b 30 erreicht darf es keine Möglichkeit mehr geben einen Datensatz an zu fügen. Nun kann es vor kommen das der Anwender einen Datensatz mit dem Index z.b 15 löscht, wie kann ich nun diese Lücke schließen so das die nachfolgenden Datensätze wieder im fortlaufender Index angezeigt werden.
Hallo,
welchen Sinn soll so ein Zähler ergeben?
Was ist der eigentliche Hintergrund bei dieser Geschichte?
Hallo Franz
Diese Datenbank soll genutz werden um diese Parameter später in eine Maschine zu schreiben, dabei ist es wichtig das die Reihenfolge des Zähler genau so dem der Maschine enspricht. Zu erwähnen ist noch der Aufbau der Tabelle: Autowert: Fach_id , Fremdschlüssel: FK_Fach , Zähler: als Zahl Fach_Parameter: als Zahl. Solange der Fremdschlüssel gleich ist sollen allen angefügten Datensätze hochgezählt werden bis zur vorgegebenen max Grenze.
Hallo,
irgendwie blicke ich nicht die Funktionsweise..
Kommt der "Zähler" denn auch aus den Maschinendaten, bzw. braucht die Maschine beim "Hochladen" der Parameter diese Reihenfolge?
Hat der Zähler irgendeine andere Bedeutung als nur die "Anzahl" der DS anzuzeigen (d. h. als laufende Nr zu fungieren)?
Wenn das eigentliche Kriterium lediglich die Anzahl der DS (bezogen auf einen "FK_Fach" -Wert), dann könnte die akt. Anzahl der DS mit Hilfe der DCount-Funktion ermittelt (oder auch als RecordCount in einem passenden Unterform) und mit entspr. Reaktion überprüft werden.
Um den "Zähler" (der hier in Access gar nicht gebraucht wird) wieder beginnend bei 1 hochlaufend zu setzen (d. h. neu zu generieren), kann der Recordset des o. g. Unterforms ebenfalls herangezogen werden.
Hallo Franz
ZitatKommt der "Zähler" denn auch aus den Maschinendaten, bzw. braucht die Maschine beim "Hochladen" der Parameter diese Reihenfolge?
Ja das ist exakt so.
ZitatHat der Zähler irgendeine andere Bedeutung als nur die "Anzahl" der DS anzuzeigen (d. h. als laufende Nr zu fungieren)?
In der Maschine gibt es den Zähler 1, aus der Datenbank wird der Datensatz mit dem Zähler1 und dem Parameter, dem Datensatz der Maschine zugewiesen.
Würde nun in der Datenbank der Zähler z.b 35 verwendet könnte die Maschine ihn nicht verwenden da sie für diese Funktion eventuell nur bis Zähler 30 einlesen kann
Hallo,
naja, dann mach das halt so wie vorhin gesagt in einer Haupt-/Unterformular-Konstruktion:
Max. Anzahl DS (30) mit Dcount (oder Ähnlichem) abchecken.
Bei/nach einer Löschung eines DS die "Zählerspalte" wieder mittels Recordset regenerieren. Dass dabei die einzelnen DS zum vorherigen Zustand unterschiedliche Zähler-Werte verpasst bekommen, sollte aber klar sein....
Hallo Franz
ZitatMax. Anzahl DS (30) mit Dcount (oder Ähnlichem) abchecken.
Habe ich hier im Forum Beispiele gefunden die ich für mich ändern muss, das bekomme ich ich hin.
ZitatBei/nach einer Löschung eines DS die "Zählerspalte" wieder mittels Recordset regenerieren. Dass dabei die einzelnen DS zum vorherigen Zustand unterschiedliche Zähler-Werte verpasst bekommen, sollte aber klar sein....
Muss ich dir ehrlich im Moment sagen weiss nicht wie das im Ansatz Anfangen soll.
Hallo,
hier ein Beispiel, das Du an Deine Gegebenheiten anpassen mußt :
Dim rs As DAO.Recordset, i As Long
Set rs = Me.RecordsetClone
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
i = i + 1
rs.Edit
rs!Zähler= i
rs.Update
rs.MoveNext
Loop
Me!Zähler.DefaultValue = i + 1
End If
Set rs = Nothing
Hallo Franz
Danke für die Unterstützung, das hilft mir sehr.
Hallo Franz
Ich habe das wunderbar heute, dank deiner Hilfe Umsetzen können, vielen Dank dafür