🍀 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🍀
🙏 Ihre Unterstützung für das Jahr 2025 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst] Kommaproblem in Base
[gelöst] Kommaproblem in Base
Guten Tag,
in meiner Datenbank ist ein Zahlenproblem aufgetreten:
Rechnungsformular gebe ich einen Einzelpreis mit 2 Kommastellen ein um dann eine Rechnung ausdrucken zu lassen.
Wenn die Nachkommastellen 0 sind - Beispiel 84,00 - funktioniert das. Ist eine der Nachkommastellen anders - Beispiel 84,03 kommt folgende Fehlermeldung:
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Unexpected token: 0336134453782 in statement [UPDATE "RechPosten" SET "EPreis" = 84,0336134453782].
Es werden demnach die Nachkommastellen reklamiert im richtig angezeigten "EPreis"
Die Variable im Berechnungsmakro hab ich definiert als Currency, dann als Single, dann als Double und schließlich noch als String. Immer das selbe Ergebnis.
Bisher ist mir das nicht aufgefallen, da ich immer "glatte" EPreise hatte.
In der Tabelle ist die Preisspalte als Dezimal mit 2 Nachkommastellen definiert.
Im XRay Tool wird der Wert der Variable mit Punkt statt Komma angegeben, außer bei String - aber es funktioniert auch nicht.
In den Optionen ist als Gebietsschema "Deutsch" eingestellt und als Dezimalzeichen das Komma.
Vielleicht bin ich nur "blind" und sehe nicht das Offensichtliche, woran es liegt....
Meine Arbeitsumgebung steht in der Signatur.
Ich bin für jede Hilfe dankbar.
Acco
in meiner Datenbank ist ein Zahlenproblem aufgetreten:
Rechnungsformular gebe ich einen Einzelpreis mit 2 Kommastellen ein um dann eine Rechnung ausdrucken zu lassen.
Wenn die Nachkommastellen 0 sind - Beispiel 84,00 - funktioniert das. Ist eine der Nachkommastellen anders - Beispiel 84,03 kommt folgende Fehlermeldung:
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Unexpected token: 0336134453782 in statement [UPDATE "RechPosten" SET "EPreis" = 84,0336134453782].
Es werden demnach die Nachkommastellen reklamiert im richtig angezeigten "EPreis"
Die Variable im Berechnungsmakro hab ich definiert als Currency, dann als Single, dann als Double und schließlich noch als String. Immer das selbe Ergebnis.
Bisher ist mir das nicht aufgefallen, da ich immer "glatte" EPreise hatte.
In der Tabelle ist die Preisspalte als Dezimal mit 2 Nachkommastellen definiert.
Im XRay Tool wird der Wert der Variable mit Punkt statt Komma angegeben, außer bei String - aber es funktioniert auch nicht.
In den Optionen ist als Gebietsschema "Deutsch" eingestellt und als Dezimalzeichen das Komma.
Vielleicht bin ich nur "blind" und sehe nicht das Offensichtliche, woran es liegt....
Meine Arbeitsumgebung steht in der Signatur.
Ich bin für jede Hilfe dankbar.
Acco
Zuletzt geändert von Acco am Sa 30. Nov 2024, 21:32, insgesamt 1-mal geändert.
openSUSE Tumbleweed - LibreOffice 24.8.2.1
Re: Kommaproblem in Base
Moin,
vermutlich liegt es am Makro, an die DB muss als Dezimaltrenner ein Punkt übergeben werden.
Da du weder Datenbanktyp noch Makro teilst, ist das rein geraten.
Gruß R
vermutlich liegt es am Makro, an die DB muss als Dezimaltrenner ein Punkt übergeben werden.
Da du weder Datenbanktyp noch Makro teilst, ist das rein geraten.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Kommaproblem in Base
Danke F3K Total ,
hier die fehlenden Infos: es ist eine eingebettete HSQLDB, das zugehörige Makro:
Ich habe die DB versuchsweise unter Windows11 installiert, da funktioniert sie einwandfrei.
hier die fehlenden Infos: es ist eine eingebettete HSQLDB, das zugehörige Makro:
Code: Alles auswählen
SUB NettoEintragen
DIM oController AS OBJECT
DIM oFormNetto AS OBJECT ' Form "Netto_errechnen"
DIM sNetto AS CURRENCY
DIM oFormDok2 AS OBJECT
DIM oFormRech AS OBJECT
DIM stRechNr AS STRING
DIM oSubForm2 AS OBJECT
DIM oSubGrid2 as Object ' Unterformular, Tabellenkontrollfeld
DIM iID AS INTEGER
DIM oDatenquelle AS OBJECT
DIM oVerbindung AS OBJECT
DIM oSQL_Anweisung AS OBJECT
DIM stSql AS STRING
oController = ThisDatabaseDocument.CurrentController
If not oController.isconnected then oController.connect
oFormNetto = ThisComponent.drawpage.forms.getByName ("Netto_Form")
sNetto = oFormNetto.getbyname("Netto").Value
oFormDok2 = ThisDatabaseDocument.FormDocuments.getByName("Rechnung").open
oFormRech = oFormdok2.drawpage.forms.MainForm
stRechNr = oFormRech.getByName("strRechNr").TEXT
oSubForm2 = oFormRech.getByName("RechPosten")
oSubGrid2 = oSubForm2.getByName("RechPosten_Grid")
iID = oSubGrid2.getByName("ID").VALUE
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
'eingtragen wird in die Formularzeile, in der der Cursor steht
stSql = "UPDATE ""RechPosten"" SET ""EPreis"" = " + sNetto + " WHERE ""RechNr"" = '" + stRechNr + "' and ""ID"" = " + iID
oSQL_Anweisung.executeUpdate(stSql)
oSubForm2.reload
END SUB
openSUSE Tumbleweed - LibreOffice 24.8.2.1
Re: Kommaproblem in Base
Ich löse das inzwischen so, dass ich grundsätzlich in einen String umwandele:
Wenn ein Komma drin ist wird ein Punkt gesetzt. Dann wird das Ganze noch maskiert und kann in den SQL-code als String übernommen werden.
Ich hatte bei der XRechnung einige Variablen, die merkwürdigerweise beim Auslesen nicht mehr den Punkt, sondern das Komma hatten. Da war ich das Nachforschen irgendwann leid.
Code: Alles auswählen
FUNCTION DecimalPoint(doVar AS DOUBLE) AS STRING
DIM stVar AS STRING
stVar = Join(Split(doVar,","),".")
stVar = "'"+stVar+"'" 'String maskieren
DecimalPoint = stVar
END FUNCTION
Ich hatte bei der XRechnung einige Variablen, die merkwürdigerweise beim Auslesen nicht mehr den Punkt, sondern das Komma hatten. Da war ich das Nachforschen irgendwann leid.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Kommaproblem in Base
Danke Robert und F3K Total,
ihr habt mir gut geholfen, die grundsätzliche Umwandlung von Komma in Punkt bei Preis-Variablen hat mein Problem gelöst.
Gruß Acco
ihr habt mir gut geholfen, die grundsätzliche Umwandlung von Komma in Punkt bei Preis-Variablen hat mein Problem gelöst.
Gruß Acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.