Zeilen durchnummerieren

Ich würde gerne in einem Formular (Tabellenform) jede Zeile nummerieren. In einem Bericht ist es kein Problem. Aber für einer Formulartabelle habe ich noch keine Funktion gefunden. Ich denke da an ein Textfeld, dass sich jeweils um den Wert 1 erhöht. Vielleicht hat jemand so etwas mal gemacht.

Gruß Wolfgang

Hallo Wolfgang

Wenn du in der zugrundeliegenden Tabelle ein zusätzliche Spalte anlegst und diese nicht als Textfeld, sondern als AutoWert einstellst, dann hast du dein automatisches Zählwerk. Nun mußt du das Feld nur noch in dein Formular zusätzlich einfügen.
Die eingetragenen Datensätze ohne den AutoWert können dabei z. B. über eine Tabellenerstellungsabfrage nachträglich geändert werden.

Gruss
Dieter

Hallo, Wolfgang!

Ich würde gerne in einem Formular (Tabellenform) jede Zeile
nummerieren. In einem Bericht ist es kein Problem. Aber für
einer Formulartabelle habe ich noch keine Funktion gefunden.
Ich denke da an ein Textfeld, dass sich jeweils um den Wert 1
erhöht. Vielleicht hat jemand so etwas mal gemacht.

Die vorher genannte AutoWert-Tabelle funktioniert leider nur einmalig. Beim nächsten Anzeigen wird nicht wieder von vorne angefangen zu zählen, außer, Du reparierst und komprimierst die Datenbank zwischendrin. Und das ist aus dem laufenden Programm heraus nicht ganz trivial.
(Oder Du kopierst Dir eine leere Tabelle mit Autowert-Feld jedes Mal; dann hast Du aber eine leere „Anzeigetabelle“, eine Kopie, diese musst Du löschen, und das bläht Deine Datenbank mit der Zeit ganz ordentlich auf.)

Für ein Formular funktioniert das nicht, da musst Du mit einer Krücke leben. Du brauchst eine Funktion, die Dir diesen Schlüsselwert hochzählt. Dazu definierst Du Dir eine globale Variable; ich nenne sie einfach mal glngLfdNr.

Dann die Funktion zum Hochzählen (Schrittweiten und Startwerte gerne variierbar):

Function GetLfdNr() As Long
 glngLfdNr = glngLfdNr + 1
 GetLfdNr = glngLfdNr
End Function

Im Form_Load Deines Formulares setzt Du glngLfdNr=0:

Private Sub Form\_Load()
 glngLfdNr = 0
End Sub

Und Dein ungebundenes Textfeld mit der lfd. Nummer bekommt dann als Steuerelementinhalt „=GetLfdNr()“
Wenn Du diese Daten auch in der Datenbank halten willst, muss das natürlich in ein einzelnes Feld geschrieben werden.

Gruß, Manfred

Vielen Dank, es klappt. Ich sehe das nicht als eine Krücke, sondern eigendlich als genau das, was ich suchte: ein Funktion die hochzählt.

Es wäre für andere Leser noch zu erwähnen, das die globale Variable mit „Public glngLfdNr As Long“ definiert wird.

Gruß Wolfgang

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Es wäre für andere Leser noch zu erwähnen, das die globale
Variable mit „Public glngLfdNr As Long“ definiert wird.

Oder in einem globalen Modul als „Global glngLfdNr As Long“; macht, glaube ich, aber nicht unbedingt einen Unterschied.

Ich für meinen Teil halte es eh so, dass ich globale Variablen alle in ein einzelnes Modul, meist ohne Funktionen, reinpacke. Wenn ich was ändern muss, weiß ich wenigstens, wo’s steht. Und das Modul kann 1:1 ausgedruckt und als Teil der Systemdokumentation verwendet werden.

Gruß, Manfred