Neuigkeiten:

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

Mobiles Hauptmenü

Fehler 3047 (Datensatz zu gross)

Begonnen von Bopi, September 25, 2021, 15:28:05

⏪ vorheriges - nächstes ⏩

Bopi

Hallo Zusammen
Ich arbeite mit Access 2019 32bit.
Mein Problem: ich habe eine Tabelle mit einem MEMO Feld in dem sich ein SQL-Text befindet. Wenn ich dies über VBA auslese und einen Execute Befehl aufrufe bekomme ich den Fehler 3047, Datensatz zu gross.
Dies kann ich nicht nachvollziehen.
Beispiel des SQL Textes: CREATE TABLE tblqrBankenstamm ([ID] COUNTER PRIMARY KEY, [Gruppe] CHAR, [BCNr] CHAR, [Filial-ID] CHAR, [BCNrNeu] CHAR, [SIC-Nr] CHAR, [Hauptsitz] CHAR, [BC-Art] CHAR, [gültig_ab] DATETIME, [SIC] CHAR, [euroSIC] CHAR);

Hat jemand eine Ahnung was mir dieser Fehler sagen will?

PhilS

#1
Zitat von: Bopi am September 25, 2021, 15:28:05[...]Fehler 3047, Datensatz zu gross.
Dies kann ich nicht nachvollziehen.
  • CHAR erzeugt eine Spalte mit fester Breite. D.h. es wird immer auf maximale Länge mit Leerzeichen aufgefüllt. (Du solltest für die meisten deiner Spalten wahrscheinlich eher den VARCHAR Datentyp verwendet.)
  • Ohne Größenangabe bedeutet CHAR = CHAR(255).
  • Über DDL mit DAO werden CHAR und VARCHAR Spalten ohne Unicode Compression erstellt. D.h. die 255 Zeichen werden als 510 Byte gespeichert (UTF16).
  • Ein Datensatz darf maximal 4000 Bytes groß sein. (MEMO + OLE Spalten werden außerhalb des eigentlichen Datensatzes gespeichert.)

Jetzt rechne mal nach. Dann kannst du es nachvollziehen. ;-)
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Bopi

Danke für die Aufklärung.
Du hast Recht, das sprengt den Rahmen. Ich habe jetzt für jedes Textfeld definiert wie gross es sein soll, also z.B. CHAR(16) oder CHAR(255). Zusätzlich gibt es ja noch die Option WITH COMPRESSION, dadurch ist alles kein Problem mehr.

Nochmals danke.