Neuigkeiten:

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

Mobiles Hauptmenü

GROUP BY und vorzeichenbehaftete Nullen

Begonnen von schubbiaschwilli, September 02, 2023, 11:53:58

⏪ vorheriges - nächstes ⏩

schubbiaschwilli

Gude!

Mal was zum Ausprobieren zum Wochenende:

---snip---
SELECT Round(Values_,0) AS Value_round, Count(Round([Values_],0)) AS NumberOf
FROM (SELECT TOP 1 0.01 AS Values_ FROM MSysObjects
UNION ALL
SELECT TOP 1 -0.01 FROM MSysObjects
UNION ALL
SELECT TOP 1 1.01 FROM MSysObjects
UNION ALL
SELECT TOP 1 0.99 FROM MSysObjects) AS [%$##@_Alias]
GROUP BY Round(Values_, 0);
---snap---




Ich nutze Access 2013, und da liefert dieses SQL ein 'falsches' Ergebnis, das habe ich in meinem Blog schon erklärt:
https://thepathisthegoalblog.wordpress.com/2023/08/31/ms-access-2013-and-signed-zeros/

Mich würde aber interessieren, bei welchen Access-Versionen das noch auftritt - Wenn also der ein oder andere mal Lust verspürt, das mit einer anderen Access-Version auszuprobieren, wäre das nett.

Dank&Gruß
hs

markusxy

Also so wie es aussieht, ist die Anzeige nicht so wie du es dir wünschen würdest - auch bei office 365 ist es so.
Hast du MS deswegen eigentlich mal geschrieben - und welche Bedeutung hat das Thema für dich - ich meine für mich ist das bis jetzt in der Praxis eher belanglos.
Interessant wäre für mich auch wie andere Umgebungen wie Java, .Net, Delphi, Python usw. damit umgehen - hast du das auch geprüft?

LG Markus

schubbiaschwilli

Gude!

"Also so wie es aussieht, ist die Anzeige nicht so wie du es dir wünschen würdest"

Naja, nicht ganz - Ich wünsche mir das nicht, sondern es ist definitiv ein Fehler. Ich habe das mal mit SQLite probiert (und auch mit Gnu R), und die machen das so, wie ich es erwarten würde - Also die fassen beim Gruppieren eine '0' und eine '-0' zu einer '0' zusammen.

"ich meine für mich ist das bis jetzt in der Praxis eher belanglos."
Ich wollte Daten für eine Statistik (Histogramm) zusammenfassen, da ist das doch problematisch - Von weiterer Statistik mal abgesehen. Wie du dir aber denken kannst, mache ich sowas eigentlich mit Gnu R - Und das ist wohl die bessere Wahl.

"auch bei office 365 ist es so."
Danke für deine Mühe! Dann liegt es nicht an 'meiner Installation'.

"Hast du MS deswegen eigentlich mal geschrieben"
Ich habe einen vergleichbaren Post im MS-Forum aufgemacht, bis jetzt aber ohne Ergebnis.

Dank&Gruß hs

markusxy

Zitat von: schubbiaschwilli am September 02, 2023, 22:40:56Also die fassen beim Gruppieren eine '0' und eine '-0' zu einer '0' zusammen.

Eine einfache Möglichkeit das zu erreichen wäre eine Konvertierung zu einem Integer z.B. mittels CInt.


schubbiaschwilli

Gude!

Es gibt da sicher workarounds - Das Problem ist ja auch nicht bei diesem Minimalbeispiel aufgetreten, sondern ich habe auf 2 oder 3 Dezimale gerundet (weiß es nicht mehr genau) - Mir geht es darum, dass das jemand mal mit einem anderen Access als 2013 ausprobiert, um zu sehen, ob es wirklich ein Fehler ist (und nicht an meiner Installation liegt bzw. gefixt wurde) - Der Entwickler hat halt (zumindest vermute ich das) das GROUP BY (und bei einem DISTINCT - da passiert der gleiche Fehler) bitweise verglichen, und laut IEEE 754 ist beim Runden eine vorzeichenbehaftete Null zulässig, und dann haben '0' und '-0' die Hamming-Distanz von 1 - Ich werd's mal an MS senden, aber die wird es nicht interessieren.

Dank&Gruß hs

MzKlMu

Hallo,
mal rein interressehalber, meine Mathematikkenntnisse beschränken sich auf die Grundrechenarten und die Rechenregel Punkt vor Strich.  ;D
Gibt es -0 bzw. was ist der Unterschied zwischen 0 und -0
Möglicherweise gruppiert Access SQL als Zeichenkette weil das Vorzeichen bei der 0 als Text erkannt wird und dann wäre es ja richtig.

Vieleicht ist das ja ein zu laienhafte Betrachtungsweise.

Gruß Klaus

schubbiaschwilli

Gude!

So, nach einem Chat mit dem MS-Support: Ich solle mich an Team für 'Commercial products' wenden:
ZitatI would like to inform you that we have a dedicated department for Commercial products. Would that be okay if I share the chat support link because i am from the Consumer Office Product and your concern SQL is comes under Commercial product ?

Da komme ich aber nicht weiter, weil ich keinen Support kaufen möchte - Für den lächerlichen Preis von 299 Eumel für einen Einzelfall, um MS einen Fehler der eigenen Software zu melden.

Ach hätte ich damals nur Oracle XE oder SQLite genutzt, für die paar Daten hätte das gereicht.

Dank&Gruß hs

schubbiaschwilli

Gude!

"Gibt es -0 bzw. was ist der Unterschied zwischen 0 und -0"

Ich vermute, es liegt an der Umsetzung der IEEE 754 und darauf basierend einem bitweisen Vergleich.
Laut IEEE 754
https://en.wikipedia.org/wiki/IEEE_754
wird beim Runden das Vorzeichen beibehalten, wenn auf '0' gerundet wird, d.h. es wird eine 'signed zero', also '-0' gespeichert - Das sieht man auch, wenn man das Ergebnis (wie man in meinem verlinkten Blogeintrag aus dem ersten Beitrag sieht) nach xl kopiert.

"Möglicherweise gruppiert Access SQL als Zeichenkette" - Nein, es findet keine Typumwandung statt.

Dank&Gruß hs

PhilS

Zitat von: schubbiaschwilli am September 03, 2023, 12:42:34So, nach einem Chat mit dem MS-Support: Ich solle mich an Team für 'Commercial products' wenden:
Hast du bei deiner Interaktion mit dem Support klar und deutlich kommuniziert, dass du einen Bug melden willst?
Nach meinem Verständnis und Erfahrungen in den letzten Jahren, sollte dir dein Support-Ansprechpartner dann einen Link zusenden, mit dem du kostenlos einen Support-Case bei dem zuständigen Team bekommst.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

schubbiaschwilli

Gude!

Der Donkarl hat das mit ein paar Access- und xl-Versionen ausprobiert, und konnte den Fehler in jeder Version reproduzieren, also ist das geklärt:
https://answers.microsoft.com/de-de/msoffice/forum/all/access-und-signed-zeros/432ccd7e-457a-4b4e-a005-386c2634d241

"(...) sollte dir dein Support-Ansprechpartner dann einen Link zusenden (...)"
Ich hatte den Chatverlauf gesichert, und hatte nur folgendes Angebot bekommen:

"Okay now i got the clear image , Please share me your contact number and country code so that on the First hour tomorrow you will get the call from the team."

Da hatte ich aber schon die Geduld verloren (auch wegen dem 299-Eumel-Angebot) und hatte auch schon alles beschrieben, und mich verabschiedet - Also in der Form: Hier ist der Link auf meinen Blog, wo ich das Problem beschrieben habe, hier ist meine Email - Gib das an die Entwickler und sendet mir 'ne Email, wenn's gefixt ist.

Ich habe auch noch mal eine kurze Email an die allgemeine 'kunden@'-Adresse gesendet, und wollte eigentlich die obligatorische 'Wir haben die Email erhalten und kümmern uns...'-Antwort hier einstellen, aber, nun ja, 1 Tag scheint da nicht zu reichen... Naja, ich wollte nur helfen. Macht aber nix, Win10 wird noch 2 Jahre unterstützt, und ich fange jetzt schon an, meine Kisten auf Ubuntu umzuziehen (und dann auch Access abzuschaffen), und für das bisschen, was ich mit xl und Access mache, reicht auch 'ne VM mit dem alten Office bzw. mein Arbeitgeber stellt mir sowieso 'ne Kiste Windows mit Office hin - Zudem Access für einen Privatkunden fast unmöglich zu kaufen bzw. schweineteuer ist.

MzKlMu

Hallo,
ZitatZudem Access für einen Privatkunden fast unmöglich zu kaufen bzw. schweineteuer ist.
Ich nutze Office ausschließlich privat und habe mir einen Lizenzschlüssel Microsoft Windows Office 2016 Professional Plus gekauft. Für knapp 30-€. Läuft seit ca. 3 bis 4 Jahren problemlos.
Z.Zt. gibt es Microsoft Windows Office 2021 Professional Plus für um 20.-€ (für 3 PC's. (!!!), inkl. Access).
Privat hätte ich da keine Hemmungen das zu kaufen. Bin am überlegen, ob ich nicht auf 2021 umsteige.
Gruß Klaus

schubbiaschwilli

Gude!

Du kaufst bei Resellern?
Ich hatte (ok liegt noch hier rum) mal ein Office 2007 Student mit Access, das waren damals so 80€ - Bekam man auch nur mit Nachweis, und ich war noch (Zweitstudium) eingeschrieben. Aktuell werden für ein 2021 Home&Student so 80€ aufgerufen (m.E. ein fairer Preis), und um ein Access zu bekommen brauche ich ein Pro, da werden 579€ - Also 500€ mehr! - aufgerufen. Für das bisschen Datengeschubse ist mir das zu teuer.
https://www.microsoft.com/de-de/microsoft-365/p/office-professional-2021/cfq7ttc0hhj9?activetab=pivot:%C3%BCbersichttab
Zudem es Oracle XE bis 11 GB(?) oder SQLite für Umme gibt - VBA und auch xl nutze ich schon noch, aber entwickle da nicht mehr viel weiter - dafür Gnu R für die Statistik, und julia wenn's beim Rechnen schnell gehen muss - Da müsste ich bei C zu viel selbst machen. Python nur zum Ausprobieren und schlechtmachen.

Ich nutze ein gebrauchtes Pro 2013 - Hat vor ein paar Jahren von einem privaten Verkäufer 70 oder 80€ oder so gekostet - Ist eine Nordamerika-Lizenz, da hatte ich auch schon Diskussionen mit dem Support - Ich hatte ebenfalls vorher so eine Pro Plus für kleines Geld (also Download) gekauft, und es war unmöglich, das Ding komplett zu deinstallieren.

Dank&Gruß hs

MzKlMu

#12
Hallo,
ZitatDu kaufst bei Resellern?
Ja, für mich privat, ich gehe schon deutlich auf die 80 zu (bin schon 18 Jahre in Rente  ;D ), warum soll ich das nicht tun ? Zumal das trotz aller Zweifel legal sein soll.
Man kriegt da Office Pro 2021 (mit Access) schon für 4,85 € (!!). Zu finden im normalen Internet.
Ich kann mir nicht vorstellen, dass das nicht legal ist, sonst wäre MS schon längst dagegen vorgegangen. Diese Angebote sind ja problemlos zu finden. Wobei ich mir gleichzeitig auch nicht vorstellen kann, wie man zu solchen Preisen kommt, die verdienen ja auch noch dran.

Ich hatte damals für zusammen weniger als 80 Euro 2 Windows 2010 und 2 Office Pro gekauft.
Ich hatte mir einen neuen PC und ein Laptop gekauft und habe die neuen Rechner komplett platt gemacht und dann das installiert was ich wollte. Die Rechner die man kauft sind zu gepflastert mit vorinstallierten Programmen, die alle nach Hause melden. Die Aktivierung der Billigkeys war ohne Probleme möglich. Und das ist jetzt schon einige Jaher her.

Für ein Geschäft würde ich da nicht kaufen.
Gruß Klaus

schubbiaschwilli

Gude!

Es wurde schon vor Jahren festgestellt, dass die Aufteilung von Volumenlizenzen legal ist - Und wie bereits erwähnt, hatte ich auch mal eine - Die dann ein paar Wochen funktioniert hat, bis MS den Schlüssel als ungültig erklärte, weil er wohl ein paar mal zu oft genutzt wurde. Und dann hatte ich ein Office auf dem Rechner, dass ich nicht mehr richtig deinstallieren konnte. Der Verkäufer war auch 'legal', es gab' eine Rechnung mit SteuerID usw. - Ich hatte wahrscheinlich einfach nur Pech, aber... - Das ist mir zu viel Action.
Ich hatte mir dann aber ein Office mit Product Key Card gekauft, wie bereits erwähnt 70 oder 80  Eumel, weil ich mir den Stress sparen wollte.

Dank&Gruß hs

MzKlMu

Hallo,
lies meinen letzten Beitrag noch mal, habe noch einiges ergänzt.
Gruß Klaus