🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
CStr in Version 7.03
CStr in Version 7.03
Hallo zusammen,
DB = MariaDB v5.5.57
LO 7.03
WIN 10
Hole aus einem als Float (4,2) definierten DB Feld eine Zahl eg. 5.00 in eine als GLOBAL deklarierte Variable.
Dann wandel ich das per Makro in eine lokale Variable im Makro zum String mit CStr um - ergibt im String den Wert 50
Das ist erst ab 7.03 so. In der vorherigen Version 6.4.7.2 ist das nicht der Fall. #
Da wurde brav der Wert 5 angezeigt.
Gebe ich in das Datenbankfeld 0.50 ein steht in der Variablen 5
Gebe ich in das Datenbankfeld 5.20 ein steht in der Variablen 52
Bevor ich jetzt einen Fehlerbericht sende - Kann das bitte mal einer von Euch kontrollieren? Oder habe ich irgendwo
einen selbst gebastelten Knoten....
Danke schon mal
Gruß DIDI
DB = MariaDB v5.5.57
LO 7.03
WIN 10
Hole aus einem als Float (4,2) definierten DB Feld eine Zahl eg. 5.00 in eine als GLOBAL deklarierte Variable.
Dann wandel ich das per Makro in eine lokale Variable im Makro zum String mit CStr um - ergibt im String den Wert 50
Das ist erst ab 7.03 so. In der vorherigen Version 6.4.7.2 ist das nicht der Fall. #
Da wurde brav der Wert 5 angezeigt.
Gebe ich in das Datenbankfeld 0.50 ein steht in der Variablen 5
Gebe ich in das Datenbankfeld 5.20 ein steht in der Variablen 52
Bevor ich jetzt einen Fehlerbericht sende - Kann das bitte mal einer von Euch kontrollieren? Oder habe ich irgendwo
einen selbst gebastelten Knoten....
Danke schon mal
Gruß DIDI
Re: CStr in Version 7.03
Wie?
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: CStr in Version 7.03
Hallo,
ein Hinweis:
In Starbasic, sowohl unter AOO, als auch LibreOffice gibt es keinen Datentyp "Float"
Datentypen...
Ob dies die Lösung ist weiß ich nicht.
ein Hinweis:
In Starbasic, sowohl unter AOO, als auch LibreOffice gibt es keinen Datentyp "Float"
Datentypen...
- Single = Fließkomma → einfache Genauigkeit
- Double = Fließkomma → doppelte Genauigkeit
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
Dim fSingle as single
Dim fDbl as Double
fSingle =12.555
fDbl= 16.354
x=cStr(fSingle)
y=cStr(fDbl)
Msgbox "Single To String → " & x & CHR(10) & _
"Double To String → " & y
End Sub
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: CStr in Version 7.03
Kannst Du mal Deinen Macro-Code posten.
Wenn der Knoten da liegt sieht es ja evtl jemand.
Was hast Du denn kontrolliert?
- Taucht der Fehler schon in der globalen Variable auf, oder beim umsetzen in die lokale Variable.
- Wie liest Du die Variable ein.
- Welche Datenbankverbindung? Direkter Konnekt, jdbc, odbc,... und hat sich beim Umstieg auf die Version 7 da etwas geändert.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: CStr in Version 7.03
Moin Wanderer,
Bei der Vorbereitung der Antworten wurde ich von euch gezwungen alles nachzulesen und vorzubereiten.
Dabei habe ich dann den (meinen) Fehler
schon gefunden.
Ich war so blöd und habe den Double Wert mit getString aus der DB geholt. Das geht zwar - ist aber falsch.
Richtigerweise muss es heißen getDouble und dann klappt auch alles.
Unten noch in der falschen Darstellung
Und natürlich auch die Makros zur Info.
Danke Euch und schönes Wochenende.
DIDI
Deine Fragen:
Die MariaDB ist auf einem remote Server und Connect läuft über jdbc. JRE Version 1.8.0_261
1. Makro - auslesen aus der Tabelle.
2. Makro - erzeugen einer tmpTabelle und Aufruf Report.
Die Variable fMahngeb ist in LO bei Programmstart definiert als GLOBAL und natürlich Double.
Der Fehler taucht schon bei der globalen VAR auf.
Zwischen den einzelnen Versionen 6 und 7 gibt es keine Veränderungen bzgl. Connectivity oder DBMS.
Ausprobiert habe ich auf der DB Seite die Definition Double und Float.
Und im Makro auch die Version als VAL () an Stelle von CStr.
' Holen der Variablen aus dem Stammsatz
oSql = oCon.CreateStatement()
oSqlstring = "SELECT IstBank,AnzQuartAbschl,KurzName,Mahngebuehr from Grunddaten WHERE left(now(),4) = Jahr "
SQL_Result = oSql.executequery(oSqlstring)
While SQL_Result.next()
sBANKDEF = (SQL_Result.getString(1)) 'Hinterlegte Bank
iQUARTALEDEF = (SQL_Result.getString(2)) 'Anzahl definierter Quartale
sKURZNAME = (SQL_Result.getString(3)) 'Verbandsbezeichnung oder auch Kurzname
fMAHNGEB = (SQL_Result.getString(4)) 'Mahngebühr holen - Hier muss es getDouble heissen
Wend
Zur Verwendung in diesem Makro :
Sub Mahnung On Error GoTo Fehlermahnung
'********* Schreiben einer tmp für den Bericht auf **************
'* In der alten Version bis 5.xxx lief das über einen View *******
'* Ab der Version 6.xxx über eine Tabelle weil das aus irgendeinem Grund nicht mehr ging.
'*******************************************************************
Dim oForm As Object
Dim oCon As Object
Dim SQL_Result As Object
Dim oSqlstring As String ' Abfragestring mit SQL Statement
Dim inputVal As String ' Antwort von Inputbox
Dim sMahngeb ' Umgerechnet von der globalen Variablen fMAHNGEB
Dim berichtName As String ' Name des Berichts
DIm fTest as Double ' Jetzt zum Testen drin
odoc = thiscomponent
odrawpage=odoc.drawpage
oform=odrawpage.forms.getbyName("frmMitgliedundRechnungsadresse")
oCon = oForm.ActiveConnection
oSqlstring = "DROP Table IF EXISTS tmpMahnung;"
oSql = oCon.CreateStatement()
oSql.ExecuteUpdate(oSqlstring)
sMahngeb = CStr(fMAHNGEB)
sMahngeb = Replace(sMahngeb,",",".") ' Hier wir aus dem String das Komma gegen einen Punkt getauscht sonst klappt das SQL Statement natürlich nicht
msgbox sMahngeb ' zur Anzeige
oSqlstring = "Create table tmpMahnung as SELECT MitNeu,RechBriefanrede,RechVorname,RechNachname,RechStrasse,RechPLZ,RechOrt, "
oSqlstring = oSqlstring + " Q1 + " + sMahngeb + " as BetraginklMahn, Strasse, " + sMahngeb + " As Mahngeb from "
oSqlstring = oSqlstring + " `AAMitglieder` WHERE MitNeu= "
oSqlstring = oSqlstring + "'" & oform.fmtMit_Neu.Text & "'" + " ;"
msgBox oSqlString ' zur Kontrolle
oSql = oCon.CreateStatement()
oSql.ExecuteUpdate(oSqlstring)
Do Until inputVal = "X" Or inputVal = "x" Or inputVal = "E" Or inputVal = "e" Or inputVal = "M" Or inputVal = "m"
inputVal = Inputbox("Erinnerung oder Mahnung drucken? E oder M eingeben oder X für verlassen")
Loop
Select Case inputVal
Case "e" : berichtName = "BriefErinnerung"
Case "E" : berichtName = "BriefErinnerung"
Case "M" : berichtName = "BriefMahnung"
Case "m" : berichtName = "BriefMahnung"
End Select
If inputVal = x Then Exit Sub
Fehlermahnung:
'If Err = 1 Then
' MsgBox "Hier ist was schiefgelaufen - Kein Ausdruck für das Mitglied möglich"
' Exit Sub
' End If
If Err = 0 Then
ThisDatabaseDocument.ReportDocuments.getByName(berichtName).Open
End If
End Sub
Bei der Vorbereitung der Antworten wurde ich von euch gezwungen alles nachzulesen und vorzubereiten.
Dabei habe ich dann den (meinen) Fehler

Ich war so blöd und habe den Double Wert mit getString aus der DB geholt. Das geht zwar - ist aber falsch.
Richtigerweise muss es heißen getDouble und dann klappt auch alles.
Unten noch in der falschen Darstellung
Und natürlich auch die Makros zur Info.
Danke Euch und schönes Wochenende.
DIDI
Deine Fragen:
Die MariaDB ist auf einem remote Server und Connect läuft über jdbc. JRE Version 1.8.0_261
1. Makro - auslesen aus der Tabelle.
2. Makro - erzeugen einer tmpTabelle und Aufruf Report.
Die Variable fMahngeb ist in LO bei Programmstart definiert als GLOBAL und natürlich Double.
Der Fehler taucht schon bei der globalen VAR auf.
Zwischen den einzelnen Versionen 6 und 7 gibt es keine Veränderungen bzgl. Connectivity oder DBMS.
Ausprobiert habe ich auf der DB Seite die Definition Double und Float.
Und im Makro auch die Version als VAL () an Stelle von CStr.
' Holen der Variablen aus dem Stammsatz
oSql = oCon.CreateStatement()
oSqlstring = "SELECT IstBank,AnzQuartAbschl,KurzName,Mahngebuehr from Grunddaten WHERE left(now(),4) = Jahr "
SQL_Result = oSql.executequery(oSqlstring)
While SQL_Result.next()
sBANKDEF = (SQL_Result.getString(1)) 'Hinterlegte Bank
iQUARTALEDEF = (SQL_Result.getString(2)) 'Anzahl definierter Quartale
sKURZNAME = (SQL_Result.getString(3)) 'Verbandsbezeichnung oder auch Kurzname
fMAHNGEB = (SQL_Result.getString(4)) 'Mahngebühr holen - Hier muss es getDouble heissen
Wend
Zur Verwendung in diesem Makro :
Sub Mahnung On Error GoTo Fehlermahnung
'********* Schreiben einer tmp für den Bericht auf **************
'* In der alten Version bis 5.xxx lief das über einen View *******
'* Ab der Version 6.xxx über eine Tabelle weil das aus irgendeinem Grund nicht mehr ging.
'*******************************************************************
Dim oForm As Object
Dim oCon As Object
Dim SQL_Result As Object
Dim oSqlstring As String ' Abfragestring mit SQL Statement
Dim inputVal As String ' Antwort von Inputbox
Dim sMahngeb ' Umgerechnet von der globalen Variablen fMAHNGEB
Dim berichtName As String ' Name des Berichts
DIm fTest as Double ' Jetzt zum Testen drin
odoc = thiscomponent
odrawpage=odoc.drawpage
oform=odrawpage.forms.getbyName("frmMitgliedundRechnungsadresse")
oCon = oForm.ActiveConnection
oSqlstring = "DROP Table IF EXISTS tmpMahnung;"
oSql = oCon.CreateStatement()
oSql.ExecuteUpdate(oSqlstring)
sMahngeb = CStr(fMAHNGEB)
sMahngeb = Replace(sMahngeb,",",".") ' Hier wir aus dem String das Komma gegen einen Punkt getauscht sonst klappt das SQL Statement natürlich nicht
msgbox sMahngeb ' zur Anzeige
oSqlstring = "Create table tmpMahnung as SELECT MitNeu,RechBriefanrede,RechVorname,RechNachname,RechStrasse,RechPLZ,RechOrt, "
oSqlstring = oSqlstring + " Q1 + " + sMahngeb + " as BetraginklMahn, Strasse, " + sMahngeb + " As Mahngeb from "
oSqlstring = oSqlstring + " `AAMitglieder` WHERE MitNeu= "
oSqlstring = oSqlstring + "'" & oform.fmtMit_Neu.Text & "'" + " ;"
msgBox oSqlString ' zur Kontrolle
oSql = oCon.CreateStatement()
oSql.ExecuteUpdate(oSqlstring)
Do Until inputVal = "X" Or inputVal = "x" Or inputVal = "E" Or inputVal = "e" Or inputVal = "M" Or inputVal = "m"
inputVal = Inputbox("Erinnerung oder Mahnung drucken? E oder M eingeben oder X für verlassen")
Loop
Select Case inputVal
Case "e" : berichtName = "BriefErinnerung"
Case "E" : berichtName = "BriefErinnerung"
Case "M" : berichtName = "BriefMahnung"
Case "m" : berichtName = "BriefMahnung"
End Select
If inputVal = x Then Exit Sub
Fehlermahnung:
'If Err = 1 Then
' MsgBox "Hier ist was schiefgelaufen - Kein Ausdruck für das Mitglied möglich"
' Exit Sub
' End If
If Err = 0 Then
ThisDatabaseDocument.ReportDocuments.getByName(berichtName).Open
End If
End Sub
Re: CStr in Version 7.03
Moin Moin und Danke für die Rückmeldung.
Hauptsache ist, dass Dein Problem gelöst ist, aber so kann auch jemand anderes den Fehler vermeiden.
Jörn
Hauptsache ist, dass Dein Problem gelöst ist, aber so kann auch jemand anderes den Fehler vermeiden.
Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
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.