PDA

Vollständige Version anzeigen : Kann Accsess automatisch Kundennummern vergeben?


b@nessa
07.07.2006, 19:36
Hi! Ich möchte in einer Datenbank Kundennummern vergeben, möchte aber nicht bei 1 anfangen. Kann Access das alleine? Das er zum Beispiel für meine Kunden Kundennummern ab 10000 vergibt?

Vielen dank

NEssi

ploeve
07.07.2006, 19:52
Hallo, ja das kann es, schau mal die Beitrag der letzten paar Tage durch, da wurde das bereits besprochen!

TItel war irgendwas mit Autowert oder so.

Lg

letts
07.07.2006, 20:25
Hallo,

ich möchte mich nicht über ploeves Aussage hinwegsetzen, jedoch wurde hier schon oft erläutert, weshalb ein Autowert nicht als Kundennummer hergenommen werden sollte.( Zitat: "Der Autowert sollte keinerlei benutzerspezifische Bedeutung haben. Er ist nur als eindeutiger Schlüssel und Verknüpfungswert gedacht.").
Was sagt dein Chef / Betriebsprüfer / Finanzamt, wenn zwischen KdNr. 200 und 205 kein Kundenname steht, weil bei der Eingabe vielleicht Fehler gemacht wurden, der Datensatz gelöscht werden musste und der Autowert fleissig weitergezählt hat?

Sicherer ist es die Kundennummer per Dmax + 1, o.ä. zu vergeben. Nur so hast Du die Kontrolle über die Vergabe von "richtigen" fortlaufenden Kundennummern.

Ergänzend möchte ich Dir folgenden post aus einem anderen Access Forum zeigen, wie du es anstellen könntest.

Ich hatte ja auch gesagt, mit VBA ist das kein großes Problem. Das Beispiel ist ohnehin sehr schön beschrieben. Es setzt das Existieren einer Tabelle voraus, der der Wert entnommen wird und um 1 erhöht zurückgeschrieben wird.
Allerdings ist es notwendig, beim Abbruch einer Anlage auch den Wert wieder zurückzusetzen.
Alternativ (auch mit VBA):

Im Ereignis BeimAnzeigen des Formulares:
Code:

If Me.NewRecord Then
If DCount("*", "Kundentabelle") = 0 Then 'noch kein Datensatz vorhanden
Me!Kundennummer = 100000
Else
Me!Kundennummer = DMax("Kundennummer", "Kundentabelle") + 1
End If
End If

In beiden Fällen ist der Feldtyp nicht Autowert, sondern Zahl.

Anne Berg
07.07.2006, 20:32
Ich sehe die Notwendigkeit einer lückenlos aufsteigenden (Kunden-) Nummer überhaupt nicht ein. (Ist das eine Forderung der Finanzbehörden? :eek: )

Viele setzen auch noch Prüfziffern ein - das geht dann schon gar nicht ohne Lücken...

PS: Man kann den Autowert "künstlich" hochsetzen durch Einfügen eines Datensatzes inklusive ID, das geht aber nur mit einer Abfrage.

letts
07.07.2006, 20:53
Hallo,

Ist das eine Forderung der Finanzbehörden?

Mit Sicherheit nicht. Nur sollte man schon allein der "Ästhetik" wegen auf eine lückenlose Nummerierung der frei vergebenen Nummern achten. Also ich finde dass so eleganter und "nachvollziehbarer" als ein Autowertfeld.

Den Trick mit der Anfügeabfrage zum "künstlichen" hochzählen kannt ich noch nicht. *thumbup*

tramp
07.07.2006, 21:32
Hallo letts,

nichts für ungut, aber was hat eine Kundennummer mit Ästhetik zu tun ??

Wir benutzen immer einen Autowert u. kein Chef/Finanzprüfer/Finanzamt hat sich je um so etwas gekümmert. Zudem werden Lücken kaum erkannt, wie z.B in Rechnungen (höchstens in einer Kundenliste mit aufsteigenden Nummern) bzw in den meisten Formularen braucht man die Nummer oft garnicht darstellen

@ Nessi: Wenn du mit den Nummerierung erst beginnst, dann lege doch einfach 10000 DS per Hand an (mit kopieren u. einfügen) lösche dann alle wieder u. fange mit Echtdaten an

Gruß Peter

R2_Rene
07.07.2006, 21:52
Hallo,

mal abgesehen von den Regeln und Vorschriften, wenn du eine neue Datenbank anlegst (wahrscheinlich), gehe davon aus, dass du die Tabelle irgendwann einmal manipulieren willst. Also wie oben bereits zitiert, ….(niemals Autowerte).

René

Worf1001
07.07.2006, 22:19
Also, eine lückenlose Nummerierung ist sowieso nicht möglich. Wird ein Kunde nicht mehr gebraucht oder gesperrt, so wird er inaktiv gesetzt und somit haben wir bereits eine Lücke. Wer interessiert sich in einem Betrieb schon für die Kundennummer. Sie ist doch nur zur einfach Identifikation eines Kunden gedacht.

Worf1001
07.07.2006, 22:20
Mit folgenden SQL-Befehl kann zum Beispiel der Startwert für ein Autowert festgelegt werden:


Insert Into tabelle (id) values(10000);

rapunzel
08.07.2006, 06:54
von tramp ..@ Nessi: Wenn du mit den Nummerierung erst beginnst, dann lege doch einfach 10000 DS per Hand an (mit kopieren u. einfügen) lösche dann alle wieder u. fange mit Echtdaten an


das ist aber jetzt nicht Dein Ernst? :boah: :entsetzt:

b@nessa
08.07.2006, 10:43
Also ich will nichts manipulieren! Ich arbeite auch noch nicht, werde jetzt erst studieren und sitze grade bei der VHS und mache nen EDV-OFFICE kurs, leider ist meine Lehrerin vom letzten WE krank und die neue hat keine Ahnung deshalb frage ich hier immer mal bei fragen die nicht beantwortet werden könne.

Ich möchte nur wissen wir das mit den 10000+ besser beim Kunden aussehen würde! WEnn ich z.B. einen Onlineshop aufmachen würde und es meldet sich jemand bei mir an der die KUNDENNUMMER 1 hat denkste der bestellt was? Ich denke nicht! - Außerdem hat das nix mit Manipulation zu tun!

Danke für die Antworten habe es leider immer noch nicht geschaft! WEiss auch nicht was VBA ist! Die Lehrerin hats zwar grade im zusammenhang damit benutzt hat aber nicht gesagt was das ist!

b@nessa
08.07.2006, 10:56
Sorry für den Doppelpost aber ich möchte den das der Autowert ab 10000 anfängt! geht das? möchte dass die kundennummern FIX sind und nicht verändert werden können!

Arne Dieckmann
08.07.2006, 11:02
In Beitrag #9 wurde dir doch schon eine Möglichkeit aufgezeigt. Es gibt auch noch andere Wege, aber versuch's doch mal damit (evtl. den Value 9999 verwenden, dann ist der nächste, reale Wert =10000).

R J
08.07.2006, 11:06
Hi Nesse,

Du kannst den Autowert benutzen. Schreibe in der Entwurfsansicht der Tabelle in das Feld Format hinein: \10000

Dadurch erhält der 1. DS den Autowert 10001.

Ciao, Ralf

kama
08.07.2006, 11:06
Hallo
Online Hilfe >>Anwortassistent>>Autowert eingeben
Dritter Entrag im Ergebnissfeld
"Ändern des Anfangswert eines Autowerts"
Hab ich schon mal für dich gemacht und:
Ändern des Anfangswertes eines AutoWert-Feldes
Bei einer neuen Tabelle, die keine Datensätze enthält, können Sie den Anfangswert eines Feldes vom Typ AutoWert ändern, sofern seine Eigenschaft NeueWerte auf Inkrement eingestellt ist. Bei einer Tabelle, die Datensätze enthält, können Sie mit Hilfe dieses Verfahrens auch den nächsten, einem Feld vom Typ AutoWert zugewiesenen Wert in einen anderen Wert ändern.

Erstellen Sie eine temporäre Tabelle mit einem einzigen Feld des Datentyps Zahl. Stellen Sie dessen Eigenschaft Feldgröße auf Long Integer ein, und geben Sie ihm denselben Namen wie dem Feld vom Typ AutoWert in der Tabelle, dessen Wert Sie ändern möchten.
Wie wird's gemacht?

Geben Sie in der Datenblattansicht einen Wert in das Zahlenfeld der temporären Tabelle ein, der um 1 niedriger ist als der Anfangswert, den Sie dem Feld vom Typ AutoWert zuweisen möchten. Möchten Sie z.B., dass das Feld vom Typ AutoWert mit 100 beginnt, geben Sie in das Zahlenfeld 99 ein.


Erstellen Sie eine Anfügeabfrage, und führen Sie sie aus, um die temporäre Tabelle an die Tabelle anzufügen, deren AutoWert-Wert Sie ändern möchten.
Wie wird's gemacht?

Anmerkung Verfügt Ihre Originaltabelle über einen Primärschlüssel, müssen Sie diesen vorübergehend löschen, bevor Sie die Anfügeabfrage ausführen. Enthält Ihre Originaltabelle ferner Felder, deren Eigenschaft EingabeErforderlich auf Ja eingestellt ist, deren Eigenschaft Indiziert auf Ja (Ohne Duplikate) eingestellt ist und deren Eigenschaft Gültigkeitsregel (gilt auch für Datensätze) so eingestellt ist, dass Nullwerte in Feldern verhindert werden, müssen Sie diese Einstellungen vorübergehend deaktivieren.

Löschen Sie die temporäre Tabelle.


Löschen Sie den durch die Anfügeabfrage angefügten Datensatz.


Mussten Sie in Schritt 3 Eigenschafteneinstellungen deaktivieren, kehren Sie wieder zu den ursprünglichen Einstellungen zurück.
Wenn Sie einen Datensatz in die verbleibende Tabelle eingeben, verwendet Microsoft Access ein Feld vom Typ AutoWert, dessen Wert um 1 größer ist als der Wert, den Sie in die temporäre Tabelle eingegeben haben.

Anmerkung Möchten Sie die Datenbank komprimieren, nachdem Sie den Anfangswert für AutoWert geändert haben, fügen Sie der Tabelle zunächst unbedingt mindestens einen Datensatz hinzu. Unterlassen Sie dies, wird beim Komprimieren der Datenbank der AutoWert für den nächsten hinzugefügten Datensatz auf 1 höher als der höchste vorhergehende Wert gesetzt. Enthielt die Tabelle keine Datensätze, als Sie den Anfangswert neu eingestellt haben, wird durch das Komprimieren der AutoWert für den nächsten hinzugefügten Datensatz auf 1 gesetzt; enthielt die Tabelle Datensätze, als Sie den Anfangswert neu eingestellt haben, und war der höchste vorangehende Wert 50, wird das Komprimieren den AutoWert für den nächsten hinzugefügten Datensatz auf 51 setzen.

b@nessa
08.07.2006, 11:32
So danke an alle habs so gemacht wie RJ es vorgeschlagen hat! mega einfach und es funkst! Vielen dank!

Arne Dieckmann
08.07.2006, 11:37
Naja, da wird nur die Darstellung geändert. Wenn der Autowert tatsächlich 10000 ist, "siehst" du dann 110000. Ich empfinde diese Art der Lösung als eher suboptimal.