bumbum
Goto Top

Access Autowert formatieren mit 0 am Anfang

Hallo,
Ich möchte in Access einen Autowert so formatieren, dass der erste Wert 001 los geht, doch wenn ich das über eine SQL-Abfrage mache fängt er trotzdem mit 1 und nicht 001 an.
Kann mit da jemand helfen??

MfG bumbum

Content-ID: 125411

Url: https://administrator.de/contentid/125411

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

Biber
Biber 21.09.2009 um 14:03:43 Uhr
Goto Top
Moin bumbum,

mit Datenbanken kenn ich mich ja nicht so aus, aber..ein "AutoWert"/"Autoincrement"
  • ist immer in ADO/ADOX vom Typ adInteger ->COUNTER ist adinteger mit dem Zusatzattribut "AutoIncrement" auf TRUE
  • auch DAO/DDL-Datentyp COUNTER ist LONG (also == adInteger) mit dem Zusatzattribut "dbAutoIncrField" auf TRUE)
  • was aber beides auch wurscht ist, denn die Formatierung machst Du doch eh nur im Display, also in der Query.

Wie sieht die denn aus?

Grüße
Biber
bumbum
bumbum 21.09.2009 um 14:25:25 Uhr
Goto Top
moin biber,
ich kann mit dem was du mir da geschrieben hast garnichts anfangen....
also ich versuche es nochmal zu erklären! Ich habe ein Textfeld, in das ich eine Nummer eingeben, die von der Formatierung so aussieht 12345-012.
Sie setzt sich aus Zwei Autowerten zusammen, 12345 als Autowert und 012 also Autowert und diese werden dann in einer Abfrage zusammen geführt. Nach dem klicken auf den Speicher-Button wird dann kontrolliert, ob der Wert schon vergeben ist.
Wenn Ja kommt eine Fehlermeldung (Die Nummer "12345-012" ist schon vergeben, bitte verwenden sie die Nummer "12345-13")
also wird die 0 weg gelassen bei der zweiten Zahl weggelassen.
Die erste Zahl wird direkt aus dem Textfeld abgefragt und die zweite ergibt sich aus der kontrolle der der Tabelle/Abfrage +1
bitte helft mir, bin am verzweifeln :'-(

MfG bumbum
AndreasHoster
AndreasHoster 21.09.2009 um 15:47:40 Uhr
Goto Top
Ich kann mit Deiner Frage auch nicht wirklich viel anfangen. Ich vermute Du vergewaltigst gerade ein paar Datenbankmittel anders als vorgesehen.

Prinzipiell mal zum Format eines Autowertes: Die Tabelle im Entwurfsmodus öffnen, auf das Feld mit dem Autowert gehen und dann bei den Eigenschaften im Feld Format 000 eingeben. Formatiert Zahlen so, daß 1 und 2 stellige Zahlen 2 oder 1 Null davor haben.

Aber:
Ein Autowert wird AUTOMATISCH beim Speichern vergeben, Du kannst einer Autowert-Spalte nicht manuell Werte zuweisen. Deswegen verstehe ich das mit dem Prüfen auf schonmal vergeben nicht. Beim Speichern bekommt die Autowert Spalte AUTOMATISCH einen neuen eindeutigen Wert.

Deswegen vermute ich, daß Du was anderes machst / machen willst / beschreibst als das, was ich aus Deinem Text rausgelesen habe.
Ansonsten kann man natürlich auch beim Auslesen mit einer SQL Abfrage führende Nullen hinzufügen:
SELECT Format(Tabelle1.test,'000') FROM Tabelle1  
Biber
Biber 21.09.2009 um 18:59:04 Uhr
Goto Top
Moin bumbum,

ich versuch nochmal meine Verständnisprobleme zu beschreiben.

Verschiedene RDBMSe wie Oracle, DB2, MSSQL etc bieten leicht variiert diese AutoIncrement-Felder an.
Das funktioniert bei allen Datenbanken ähnlich mit vier Grundsätzen
  • der "AutoWert", wie er bei Access heißt, ist Long/Integer. Nicht Datum, nicht Währung, nicht Textfeld
  • der Autowert ist nicht nur "eindeutig" je Tabellle, sondern eben auch der Primary Key.
  • indirekte Schlussfolgerung aus dem 2. Grundsatz: Es kann nur maximal EIN Autowertfeld je Tabelle geben
  • es heißt "Autoirgendwas", weil es automatisch von der DB-Engine generiert/hochgezählt wird. Bestenfalls kannst Du den Startwert einmalig festlegen, dann bist Du raus und nur noch Zuschauer.

---> Deshalb: einen "AutoWert" kannst Du nicht verbiegen zu einem wie-auch-immer-gerechtfertigten zusammengesetzen "automatisch generierten Kunstschlüssel" aus zwei Nummernkreisen (Präfix +"-"+ lfdNr-als-Text).

Das musst Du per VBA lösen.
Mimik: Wenn für Präfix "12345" ein neuer Satz hinzukommt, dann musst Du prüfen 'was ist jetzt die höchste vergebene lfdNr für Gruppe/Kategorie "12345"?'

Und wenn bei dieser Max()-Query rauskommt "12345-011", dann muss du eben 2001 draufaddieren auf die "11" , dann hast du 2012 --> davon die rechten 3 Stellen verwenden --"012" und aus dem bekannten Prefix und "-" und "012" Deinen neuen Kunstschlüssel zusammenbraten.

Der ist dann sicherlich auch eindeutig und als PK geeignet.... aber ein AutoWert-Feld hast und brauchst und kannst Du nicht.

Grüße
Biber
76109
76109 21.09.2009 um 19:29:39 Uhr
Goto Top
Hallo zusammen!

AutoWert1 = 12345
AutoWert2 = 12

Könnte man so zusammenbraten:
Text = AutoWert1 & "-" & Right("00" & AutoWert2 + 1, 3) = "12345-013"

Gruß Dieter
bumbum
bumbum 22.09.2009 um 07:18:40 Uhr
Goto Top
Vielen Dank für eure Antworten sie waren sehr hilfreich.
ich habe es hin bekommen. juhu face-big-smile

LG bumbum