Neuigkeiten:

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

Mobiles Hauptmenü

Access SQL: Konvertierung Dezimalzahl zu Binärzahl

Begonnen von hajott, April 02, 2026, 17:50:40

⏪ vorheriges - nächstes ⏩

hajott

Hallo Wissende,

für die schnelle Antwort: Mit welchem SQL-Statement kann ich Dezimal in Binär umwandeln? Gegeben sei eine Tabelle mit hunderten Einträgen, in der im Feld [dec] eine Dezimalzahl steht (maximal 2^13) und im Feld [bin] soll mittels UPDATE ein linksbündiger Binärstring mit Länge 14 eingesetzt werden, also beispielsweise soll [dec]= 37 [bin] ="10100100000000" ergeben. Ich habe das Internet komplett durchgelesen und nur eine VBA-Funktion gefunden, die mir aber nicht hilft. Ich habe herausgefunden, dass ma mit einer Tabellendefinition über VBA auch einen Felddatentyp Binär erzeugen kann. Das klappt auch, aber wenn ich das Feld [bin] als Biär definiere sage "UPDATE tabelle SET [bin]= [dec]", führt das nicht ins Ziel. Wenn ich 37 übergebe, ist im Stringfeld ein % (weil 37 der ASCII-Code ist). Eine Konvertierungsfunktion, die hier hier ansetzen könnte, habe ich nicht gefunden.

FALLS DAS NICHT MÖGLICH IST, hier das zugrundeliegende Problem, vielleicht gibts ne andere Lösung.
Für eine Einsatzplanung gibt es Schichtmuster und dazugehörige Einsatztage (Zeitraum heute + 13 Tage.). Etwa so:

Schichtmuster    Arbeitstage
Osternfrei       02.04.26
Osternfrei       07.04.26
Osternfrei       08.04.26
Osternfrei       09.04 26
Osternfrei       10.04.26
Osterhase        05.04.26
WoEnd            04.04.26
WoEnd            05.04.26
WoEnd            11.04.26
WoEnd            12.04.26
Ziel ist, mittels SQL für ein Schichtmuster einen String zu bekommen, dessen erster Wert heute, 2.4.26, ist (X=Arbeit, -=frei), also
Osternfrei X----XXXX--
Osterhase  ---X-------
WoEnd      --XX-----XX
und so weiter.

Ich hatte schon die Idee, bei den Schichtmustern zu berechnen, wieviel Tage der Arbeitstag von heute entfernt ist (o bis 13), dann 2 hoch diese Zahl zu nehmen, so konnte ich die Schichtmuster gruppieren und die Exponentialzahlen addieren. Ich kriege aber keine Lösung, aus dieser summierten Dezimalzahl den dazugehörigen Binärstring zu machen

Vielen Dank fürs Lesen und Antworten und schonmal frohe Ostern

Hans-Jürgen

hajott

Hehe, manchmal muss man vielleicht das Problem auch nur aufschreiben, um selbst auf ne Idee zu kommen... ihr seid da sozusagen meine Therapiegruppe...

Also den Workaround könnte man (vereinfacht und nicht mathematisch ausgedrückt) so machen:

BIN = IIF(DEC geprüft auf Teilerbedingung 2^0,'X','-') &
      IIF(DEC geprüft auf Teilerbedingung 2^1,'X','-') &
      IIF(DEC geprüft auf Teilerbedingung 2^2,'X','-') usw

Also man kriegts "hässlich" irgendwie hin. Bleibt die Frage: Gibt es auch eine elegante Lösung der Konvertierung?