Neue Datentypen „BigInt“: Microsoft Access und endlich große Zahlen – was BigInt für Access bedeutet

Warum BigInt jetzt wichtig ist

Access war lange begrenzt auf Long = 32 Bit = ±2.147.483.647
Für IDs, Hashes, Unix-Timestamps oder externe Systeme oft zu klein.

Seit Access 2016 (mit Update) gibt’s BigInt = 64 Bit = ±9.223.372.036.854.775.807
Das ist ein echter Fortschritt.
Wenn Du mit SQL Server, MySQL, REST oder ERP-Daten arbeitest: unverzichtbar.

Wie Du BigInt aktivierst

Standardmäßig ist BigInt in Access nicht aktiviert.
Du musst es manuell anschalten.

Schritt 1: Registry-Schalter setzen

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE]
"EnableBigInt"=dword:00000001

Danach Access neu starten.

Alternativ per VBA (nur einmal nötig):

Sub AktiviereBigInt()
    CreateObject("WScript.Shell").RegWrite _
        "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE\EnableBigInt", 1, "REG_DWORD"
End Sub

JetSQL und BigInt

In Tabellen wird BigInt als Zahl (Groß) angezeigt.
Im SQL-Editor kannst Du normal darauf zugreifen.

Beispiel:

SELECT id64bit, beschreibung FROM t_grosse_ids WHERE id64bit > 5000000000;

Abfragen, Sortierungen, Joins – alles wie gewohnt. Nur eben größer.

Datenimport mit BigInt

Wenn Du aus externen Systemen importierst (ODBC), erkennt Access BigInt korrekt – aber nur, wenn der Registry-Schalter gesetzt ist.

Sub VerbindeMitMySQL()
    Dim db As DAO.Database
    Set db = CurrentDb
    db.Execute "DROP TABLE IF EXISTS t_ext_produkt"
    db.Execute "SELECT * INTO t_ext_produkt FROM [ODBC;DSN=MySQL;UID=readonly;PWD=geheim;].produkt"
End Sub

Spalte produkt_id bigint in MySQL wird als BigInt in Access erkannt.

BigInt in VBA

VBA hat keinen nativen BigInt-Datentyp.

Aber:

  • Du kannst Currency nutzen (64 Bit, Integer-Speicherung, ±922 B)
  • Oder Du nutzt Decimal via Variant (mit Risiko)

Beispiel mit Currency

Dim id64 As Currency
id64 = 123456789012#

Debug.Print Format$(id64, "0")

Beispiel mit Variant-Decimal

Dim v As Variant
v = CDec(9223372036854775807#)
Debug.Print v

Aber: Keine Typensicherheit, kein Vergleich mit Longs ohne Casting.

Wenn Du BigInt in Formeln brauchst

Dim erg As Currency
erg = CLng(Me.txtWert1) * 100000#

If erg > 100000000000# Then
    MsgBox "Wert zu groß!"
End If

Tipp: Benutze Currency auch für Zählungen oder Unix-Timestamps.

Tabelle: Vergleich Datentypen in Access

TypGrößeBereichBemerkung
Byte1 Byte0 – 255Nur ganzzahlige Werte
Integer2 Byte-32.768 – 32.767Selten sinnvoll
Long4 Byte-2.147.483.648 – 2.147.483.647Standard für AutoWert
Currency8 Byte±922.337.203.685.477,5808Intern 64-Bit-Integer
BigInt8 Byte±9.223.372.036.854.775.807Nur mit Registry aktivierbar

Wann BigInt Pflicht wird

  • Schnittstellen zu SQL Server oder MySQL mit Identity(1,1) BIGINT
  • Verarbeitung von Timestamps (z. B. Unix Epoch in Millisekunden)
  • Technische IDs (GUID-Hashes als int64)
  • REST-APIs mit großen Mengenkennzahlen

Wenn Du in Access mit echten Systemdaten arbeitest, führt kein Weg an BigInt vorbei.

Nicht für jeden Datensatz – aber für jeden ernsthaften Datenentwickler.
Und mit ein bisschen Registry, Currency-Trick und klaren Typen bekommst Du das gut in den Griff.
Wenn Du willst, schicke ich Dir meine Feldkonvertierungsroutine als Modul.

Kategorien:

Schlagwörter:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert