Dezember 07, 2021, 12:11:36

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


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

September 25, 2021, 17:22:59 #1 Letzte Bearbeitung: September 25, 2021, 17:30:43 von PhilS
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. ;-)
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

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.