PDA

Vollständige Version anzeigen : Autowert auf 0 -->Hab schon GESUCHT! :-)))


WeinGeist
03.08.2001, 21:42
Hallöchen zusammen...

Hab gesehn dass es 7 Beiträge zu diesem Thema hat, nur leider war keiner zufriedenstellend... :(

Wie kann ich es bewerkstelligen, dass der AutoWert auf Null gestellt wird, wenn schon Daten vorhanden sind? Es sind mehrere Beziehungen vorhanden. Eigentlich dürfte ja gar keine gelöscht werden, aber durch Fehleingabe in einem Frm sind die DS leider nicht gespeichert worden die Nr. jedoch gelöscht.
Eine entsprechende Prüfung habe ich zwar jetzt, aber das nützt mir für die alten nix.

---Schnipp---
Es sollte möglichst per VBA gehen. Denn der Kunde sollte, wenn im dies einmal passiert, nur durch einen Klick alles in Ordnung bringen.

Ausserdem sollten jene Zwischenzahlen die Fehlen, mit einem Standardspruch gefüllt werden. Muster Kunde oder so ähnlich, damit die Kundennummern absolut identisch bleiben und er die anderen wieder auffüllen kann.
---Schnapp---

Vielen Dank für Eure Hilfe

Gruss URs

Mad
04.08.2001, 09:31
Hallo Weingeist,
warum willst du dir die Arbeit antun, Nummern die es nicht gibt mit einem Text zu versehen der nichts sagt.
Wenn du es läßt wie es ist hast du doch bessere Daten als nach Änderung, denn die "leeren" Datensätze mit "Musterkunde" müsstest du doch bei allen möglichen Auswertungen und Abfragen wieder herausfiltern.

In diesem Fall glaube ich, dass weniger mehr ist.

Gruß, Dietmar

A.S.
04.08.2001, 09:34
Hallo Urs,

was den Umgang mit Autowerten angeht schau auch einmal in meine Antworten hier:
AUTOWERT WIEDER AUF NULL STELLEN (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=46950)

Da findest Du auch eine Möglichkeit einen eigenen Autowert (mit einem Long-Integer-Zahl-Feld) aufzubauen, dabei sollten dann aber keine direkten Tabelleneingaben mehr möglich sein.

Gruß

Arno

WeinGeist
05.08.2001, 23:02
Hallöchen Arno

Merci erstmals für deine Hilfe...

Auf diesen Beitrag bin ich auch gestossen, wurde am Anfang jedoch nicht ganz schlau daraus... :)
Was mache ich nun wenn mehrere Benutzer daran arbeiten.
sind dir Beispiele von solchen Lösungen bekannt? Eigene Autowertfelder wäre schon ne gute Sache, ich glaube da gäbe es noch mehrere Interessenten.

Vielen Dank Gruss
Urs

A.S.
05.08.2001, 23:31
Hallo Urs,

das Problem bei Mehrbenutzerumgebungen und eigenen Autowerten ist, das man diese entweder miteinander synchronisieren muss - wozu am besten ein Access-DDE-Server herhalten dürfte oder eine Schleife, welche einen Autowert ermittelt, einträgt ( solange bis diese Speicherung akzeptiert wird ) und an die Applikation zurückliefert. Die App muss dann diese ID nutzen um die Daten zu speichern. Die Schleife soll dazu dienen sicherzustellen, das der Autowert nicht zwischenzeitlich von einem anderen Benutzer belegt wurde.

Gruß

Arno

WeinGeist
07.08.2001, 08:46
Ulalala...

Dies tönt reichlich kompliziert, um es zu verwirklichen! :)

Vielen Dank Arno werde mich mal schlau machen... Ansonsten muss ich halt wohl oder übel etwas mit temporären TBL's würgen damit ich den AutoWert gebrauchen kann und meine Nr. aufgefüllt werden.

Werde mal ne Bsp-DB suchen

An alle, wer ne DB mit so was hat, bitte mail oder in Downloadbereich

Danke bis Bald

URs

A.S.
07.08.2001, 08:47
Bitte in den Downloadbereich, damit alle etwas davon haben ;)

Nockenwelle
07.08.2001, 11:43
Hallo Weingeist,

schau mal im Downloadbereich von APP http://www.accessprofipool.de/app/download/ddetail.asp#CreativBars
Freie Nummern

Bei access-paradise gibt es auch ein Beispiel


Cu

WeinGeist
07.08.2001, 14:29
Hallöchen

@Nockenwelle: Erstmals auch dir Danke

Also das Beispiel (http://www.access-paradies.de/Code/Sammlung/Sammlung2/KleinsteFreieZahl.htm) der Access-Paradies Page sieht vielversprechend aus... Arno hat, glaube ich zumindest, so was ähnliches (oder sogar genau das gemeint, am Anfang vor dem DDE Zeugs :D)

Auf jeden Fall: Besten Dank an euch!

Gruss Urs :eek:

Nockenwelle
07.08.2001, 14:39
Das mit 'kleinster' freier Zahl kann bei der Funktion von K. Blum schon mal etwas seltsam aussehen. z. B. wenn du große Lücken hast
z. B.

1
2
3
4
5
45

Die nächste freie Zahl ist dann die 44. Die Funktion füllt diese Lücke dann komplett auf und erstellt erst dann einen neuen Wert.

Nur mal so zur Info

A.S.
07.08.2001, 14:47
Hallo,

die von mir in oben verlinktem Beitrag hinterlegte Funktion faßt die Sache lediglich von der anderen Seite aus an ;)
Sie sucht also die nächste freie Zahl vom Tabellenanfang aus gesehen.

Nochmals allerdings der Hinweis: wird dies im Mehrbenutzerbetrieb genutzt und nicht sauber Programmiert, zum Beispiel über einen DDE-Server oder eine Schleife die den entsprechenden Fehler abfängt und solange einen neuen Wert für den Autowert ermittelt bis erfolgreich geschrieben wurde (was IMHO sogar noch einfacher zu programmieren ist, als das was ich vorher geschrieben hatte), hast Du Probleme mit der Speicherung der Daten.

------------------
HTH

Arno

Günni
07.08.2001, 19:41
Quetsch ... drück ... jetzt muß ich auch noch meinen Senf dazugeben:

Es gibt in der IT-Welt nur wenige Themen, die so hitzig diskutiert werden wie Sinn und Unsinn von Autowert-Felder (wird wohl nur noch von der Diskusion über den Goto-Befehl getopt ;)). Ich komme mehr aus der Welt der Praxis, deshalb kann ich nur sagen: Autowerte sollten NIE sinnvolle Informationen beinhalten, die dem Benutzer angezeigt werden. Autowerte sollten einzig und alleine als Primärschlüsselfelder für die Tabellenverknüpfung verwendet werden. Wenn Du tatsächlich einen fortlaufenden, lückenlosen Zähler benötigst, würde ich Dir dringend raten, diesen Zähler in einem seperaten Feld anzulegen und per VBA zu füllen. In Deinem konkreten Beispiel kann ich aber beim besten Willen nicht erkennen, wozu Du eine lückenlose Zählerfolge benötigst. Zumal sich immer das Problem ergeben wird, dass mal ein Kunde gelöscht werden muss - im schlimmsten Fall weil er stirbt oder pleite geht. Dann wirst Du wieder ne Lücke haben.

Besser also, Du baust ein seperates Feld ein. Im Falle des Löschen eines Kunden kannst Du dann für alle bestehenden Kunden eine Resequenzierung durchführen und die Zählerreihenfolge wieder akutalisieren. In den abhängigen Tabelle muss in dem Fall ja noch nicht mal eine Änderung vorgenommen werden, da diese sich ja nach wie vor an die Autowert-Spalte anbinden - auch wenn die jetzt lückenhaft ist ... was solls???

<hr>

<font color="#808080" size="2" face="Arial"><strong>Mühldorfer Günter
Computer- und Software-Service
</strong></font>
mg@mgcss.de
<a href="http://www.mgcss.de">www.mgcss.de</a>

Nockenwelle
07.08.2001, 20:39
Tja Günni,

da geb' ich dir gerne recht :)

Das Thema kommt bei Lichtpunkt ungefähr 3 bis 7 mal am Tag vor. (und ebenfalls der Hinweis, dass der Autowert halt nur ein Index ist)

Eine oder zwei sinnvolle Anwendung Kenne ich aber(daher kenne ich auch die Funktionen)

Ich hab' ne externe Anwendung mit einer gesonderten Primary-key-Verwaltung. Hier wird aufgrund der vorhandenen verschiedenen DB'n(Access, Ingres, Informix, Oracle, DB2) mit dieser Krücke das Lock-Verhalten der DB'n vereinheitlicht, was im mehrbenutzerbetrieb wichtig ist.
Ich kann dann hingehen und die Lücken dazu nutzen, von aussen neue Stammdaten einzuspielen, ohne, das die Primary-Verwaltung etwas merkt(d. h. ich kann es auch im laufendem Betrieb machen).
Was ich noch kenne sind Schlüsselgenerierungen mit Zeitlich begrenzter Gültigkeit und Historisierungen(und damit eine Begrenzte Anzahl an Kunden). Eigentlich eine Sache von Behörden.
Sprechende Schlüssel sind da auch noch sehr beliebt.
Ist ein bißchen sehr Speziell, net?


Also Weingeist: was Günni dir hier sagt ist vollkommen richtig.
Ein Index ist nix für Ästeten. Er kann Lückenhaft sein, Hauptsache er ist eindeutig.
Bei Replikationen wird IMHO Zufallszahl als Autowert verwendet und nicht Inkrement.
Eine Lückenlose Schlüsselgenerierung macht eigentlich nur Sinn, wenn du aus dem Schlüssel noch andere Erkenntnisse ziehen möchtest.
Wenn das nicht der Fall ist, bleib beim Autowert.

Cu