Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

genau - genauer -datentyp single!?!

Forumthread: genau - genauer -datentyp single!?!

genau - genauer -datentyp single!?!
16.07.2004 14:48:21
joel
hallo
habe ein problem mit der genauigkeit von zahlen beim import/export nach access
AUSGANG:
zellwert in excel = 0.3 (will heissen, genau 0.3 und nicht über zahlenformat nur eine stelle angezeigt)
EXPORT NACH ACCESS:
speicherung des wertes in variable mit datentyp "single"
fProz = Csng(wksSpez.Cells(i, COL_WERT).value)
mittels meiner datenbankklasse wird die zahl geschrieben (mRS ist vom datentyp ADODB.Recordset)

Sub dbWriteData(ByVal sField As String, ByVal vValue As Variant)
mRS.Fields(sField).Value = vValue
End Sub

also in der form
call tDB.dbWriteData(sField:="Proz", vValue:=fProz) (wobei tDB ein objekt meiner datenbankklasse ist)
WERT IN ACCESS:
jetzt steht in access im entsprechenden feld der wert 0.3 (also genau der zellenwert)
IMPORT:
in einem anderen file brauche ich die werte aus der datenbank und importiere sie wiederum mit meiner datenbankklasse
Property Get dbReadData(ByVal sField As String) As Variant
dbReadData = mRS.Fields(sField).Value
End Property
wksWahl.Cells(i, iSpalte).Value = CSng(tDB.dbReadData(sField:="Proz"))
WERT IN EXCEL:
0.300000011920929
kann mir das irgendwie nicht richtig erklären. ist evtl. der typ "single" in access nicht gleich genau wie in excel (also sinngemäss in access nur 7 stellen nach dem komma)?
oder ist die funktion "CSng" schuld?
wäre um eure hilfe sehr dankbar.
gruss joel
ps: wenn ich das ganze z.b. mit einem zellwert von 30 mache, funktionierts problemlos
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: genau - genauer -datentyp single!?!
GerdZ
Hallo joel,
die Single-Typen in Access und Excel sind identisch.
Excel speichert die Werte in den Zellen im Double-Format.
Beim Schreiben eines Single-Wertes in eine Zelle wird dieser in einen Double-Wert konvertiert. Bei dieser Konvertierung treten dann die Differenzen auf.
Vielleicht funktioniert folgende Variante:
Single -&gt String -&gt Double -&gt Zelle
wksWahl.Cells(i, iSpalte).Value = CDbl(CStr(CSng(tDB.dbReadData(sField:="Proz"))))
Gruß
Gerd
Anzeige
it's magic!
19.07.2004 06:59:07
joel
hallo gerd
danke für deine hilfe. das klappt tatsächlich!!!
hast du eine erklärung dafür? du bist ja wohl nicht einfach so darauf gekommen, oder? würde mich über eine antwort freuen!
danke, gruss joel
aha, so ist das!
19.07.2004 13:25:10
joel
hallo gerd
danke vielmals! vor allem der link über die binär kodierten dezimalzahlen hat mir geholfen!
gruss joel
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige