PDA

Vollständige Version anzeigen : Feld AutoWert begrenzen


Konrad Lepping
27.04.2001, 13:15
Hallo Freunde,
ein Feld in einer Tabelle mit Autowert soll begrenzt werden. z.B. Anfang bei 100 und zuende bei 1000. Wer hat dazu tips ?

SoftNet
27.04.2001, 14:43
Hallo Konrad,

zum Ändern des Startwerts gibt es 2 Möglichkeiten.

1. mit einem Trick und der steht in der Hilfe von Access2000 unter dem Thema "Ändern des Anfangswertes eines AutoWert-Feldes"

2. Über VBA. Dazu gibt es einen Artikel von MS den du hier http://www.microsoft.com/IntlKB/Germany/Support/kb/D41/D41906.HTM?LN=DE&SD=SO&FR=0 findest

Das Begrenzen des Endwerts kannst Du auch nur per VBA lösen. Mit einer "DCount()" kannst Du die Menge der Datensätze in der Tabelle herausfinden und dann z.B. im Formular das Anlegen eines neuen DS sperren. Näheres zur Funktion "DCount()" findest Du auch in der Hilfe von Access, sogar incl. Beispiele.

Gruss, Tommy. http://www.access-home.de

Nockenwelle
27.04.2001, 20:55
Hi Tommy,

ich find es dauerhaft keine gute Idee, jemanden Tips zu geben, wie man ein Feld Autowert vergewaltigt. Das Feld ist ein internes Feld, welches nur Access angeht, und sollte es auch bleiben (jedenfalls solange es den Primary darstellt).
Es ist mir klar, dass selbst in der OH Tricks und Kniffe dazu stehen, das ist aber meiner Ansicht nach

S C H W A C H S I N N.

Hast du nicht selbst auf deiner Seite(oder war es in der knowhow?) eine Funktion die heißt: nächste freie Zahl??? Das ist doch viel flexibler als der Autowert(wenn ich das ein wenig nach meinen Vorgaben modifiziere). Das Ergebnis ist das gleiche.

Autwert verwendende Grüße

cu

Sascha Trowitzsch
28.04.2001, 11:27
@Nockenwelle:

Den Autowert muss man nur deshalb 'vergewaltigen', weil MS auch in den neuen Versionen nicht imstande ist, entsprechende Funktionen für Startwerte zu implementieren... hab gerade gesehen, dass sich auch in AccXP nichts daran ändert.

Was meinst du mit 'internes Feld von Access'?? Es gibt unzählige Beispiele von Access-Profis, wo selbst mit den Systemtabellen gearbeitet und 'vergewaltigt' wird, weil es keine bessere Lösung gibt.

Ich halte im Gegenteil nichts davon, eigene ID-Felder per Code zu produzieren, denn *die* sind fehleranfällig. Es braucht nur einen einzigen Absturz während der Berechnung einer eindeutigen ID und die Integrität ist flöten.
Ich spreche aus Erfahrung, denn ich habe das früher auch gemacht. Nachdem dann aber infolge Abstürzen (gar nicht mal von Access) beim Kunden die IDs nicht mehr eindeutig waren konnten keine Daten mehr eingegeben werden, weil das alles nur noch mehr durcheinander gebracht hätte. Ich durfte also die Datentabellen manuell 'reparieren' und das hat Zeit gekostet!

Der Autowert ist die sicherste Möglichkeit für eindeutige IDs. Und wenn schon mit eigenen Autowert-Funktionen gearbeitet wird, so würde ich dringend eine Fehlerbehandlung mit BeginTrans und Rollback implementieren.

Das Begrenzen der Autowerts, wie von Konrad oben gefordert, würde ich allerdings lassen. Das gibt auch irgendwie keinen Sinn.

Ciao, Sascha

Nockenwelle
28.04.2001, 18:03
Hallo Sascha,

>>Ich halte im Gegenteil nichts davon, eigene ID-Felder per Code zu produzieren, denn *die* sind fehleranfällig. Es braucht nur einen einzigen Absturz während der Berechnung einer eindeutigen ID und die Integrität ist flöten.<<

Ich halte da auch nichts von.

Aber genau das wird hier doch verlangt, davon rede ich doch gerade. Der Autowert darf erst ab 100 beginnen- er darf nicht größer als 1000 sein. Andere Beispiele:er muß wieder mit 1 beginnen, der Autowert soll so aussehen: NKZ000-FGH-0000123 etc. etc. Die Anfragen dieser Art sind nach "wie umgehe ich die Shift-Taste" einer der am meisten gestellten Fragen.
Ich möchte auch nicht ID's Programmieren. Nur eine ID ist halt eine ID also ein Programminterner Schlüssel. Der Inhalt sollte mir Egal sein. Wenn ich einen Schlüssel brauche, den ich andersweitig weiter verwenden muss, programmiere ich den. Die ID lasse ich in Ruhe. Die refenzielle integrität ist mir wichtiger, als eine Zahl, die sich in Ihren Werten ändert, auch wenn ich nichts einfüge.
Das einzige was mir sinnvoll erscheint, um einen Autowert so zu benuzen, wie in der Anfrage geschrieben sind einmal-Aktionen; Altdatenübernahmen beispielsweise. Ansonsten ist mir der Inhalt wurscht und der Anwender soll davon auch nichts sehen.(Punkt)
Es ist mir klar, das M$ da nichts alternatives anbietet. Ich versteh so Fragen daher auch-ist ja auch oft eine einfache Möglichkeit etwas fertigzubringen.
Ich unterscheide aber nun mal zwischen einem Fortlaufendem Schlüssel und einer ID- es sind nicht immer identische Angelegenheiten(auch, wenn es manchmal so aussieht).
Daher lege ich Schlüsselfelder und ID's immer getrennt an-dann kommen so fragen auch erst gar nicht auf.

Cu