Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Mal eine ganz banale Frage.

Begonnen von Accessiv, November 03, 2012, 16:25:06

⏪ vorheriges - nächstes ⏩

Accessiv

Hallo Zusammen,

ich habe gehört, dass Access in Textfeldern nur die tatsächlich eingetragene Anzahl von Zeichen speichert und nicht bis zur definierten Maximallänge mit Leerzeichen auffüllt. Wenn in einem Textfeld mit einer definierten Länge von z. B. 20 Zeichen ein Text mit einer Länge von z. b. 3 Zeichen eingetragen wird, werden also nur 3 Byte und nicht 20 Byte an Speicherplatz für diesen Eintrag benötigt.

Wenn das tatsächlich so ist, warum soll man dann überhaubt noch die Länge von Textfeldern einschlränken und es nicht grundlätzlich bei der Default-Länge von 255 Zeichen belassen?

Kann mir einer von Euch einen plausiblen Grund nennen?

Gruß Helmut

DF6GL

Hallo,

das ist tatsächlich so (ähnlich) und ein Grund könnte sein, das bei der Eingabe nur eine bestimmte Anzahl von  Zeichen nicht eingegeben werden MUSS, sondern eingegeben werden DARF... also ein implizite Plausibilitätsprüfung in dieser Beziehung stattfindet, oder anders ausgedrückt, der "Wertebereich" des Textes beschränkt/definiert wird.


Accessiv

Hallo Franz,

vielen Dank für Deine schnelle Antwort. Das mit der Plausibilitätsprüfung könnte schon hinhauen, aber warum schreibst Du dass es sich nur so ähnlich verhält wie ich es beschrieben habe. Zugegeben, den kleinen Access-internen Verwaltungsaufwand für das Textfeld habe ich bei der Angabe des Speicherbedarfs geschlabbert. Habe ich sonst noch einen Denkfehler gemacht?

Gruß Helmut

DF6GL

Hallo,

im Prinzip hast Du keinen Denkfehler gemacht, ich habe mit "ähnlich" auch nur ausdrücken wollen, dass es dabei nicht nur um das reine Zählen der nach außen sichtbaren Zeichen geht.....

AccessRuntime

Hallo,

ich kann einen Grund nennen. Bei Access habe ich keinen Plan ob das auch zutrifft aber der SQL Server von Microsoft hat eine Grenze das eine Tabelle max. 8192 Byte "breit" sein kann. Abzüglich Overhead darf also eine Tabelle 8060 Byte "breit" sein. Wenn du also eine Tabelle mit vielen Spalten anlegst und immer die maximal Länge einträgst kann es sein das du an diese Grenze stoßt wenn du die Tabelle irgendwann einmal auf einen SQL Server auslagern willst.

Du kannst das mit einem SQL Server probieren mit dem folgenden Anweisung:
CREATE TABLE dbo.Table_1
(
test1 nchar(4000) NULL,
test2 nchar(4000) NULL,
test3 nchar(4000) NULL
)
GO


Diese wird einen Fehler Produzieren da man über die 8060 Bytes kommt.

mfg



Accessiv

Hallo AccessRuntime,

vielen Dank für die zusätzliche Info.

Gruß Helmut

DF6GL

Hallo,


lt. http://www.donkarl.com/?FAQ1.4


liegt diese Grenze bei Access (Jet-Engine) bei 2000 , bzw. 4000 Zeichen...

MzKlMu

Hallo,
aber diese Grenze gilt auch nur für die tatsächlich verwendeten Zeichen, nicht für die angelegte Feldgröße.
Das Anlegen einer Tabelle mit 25 Feldern zu je 200 Zeichen (=5000) geht problemlos, nur das Ausfüllen nicht.
Die zulässigs Zeichenzahl im Entwurf spielt also keine Rolle. Jediglich die angesprochen Plausibilität sollte wichtig sein.
Eine PLZ mit 200 Zeichen zu definieren macht keinen Sinn, da reichen 5 für eine deutsche PLZ.
Gruß Klaus