Eingabefeld in Kommazahlen umwandeln

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Miki W
Beiträge: 6
Registriert: So, 17.07.2011 10:49

Eingabefeld in Kommazahlen umwandeln

Beitrag von Miki W »

Hallo Ihr Lieben,
ich klicke die Artikelzeile an und über eine Schaltfläche aktiviere ich das basic script
ich möchte über ein Eingabefeld den Wert mit einer Kommazahl eingeben und danach auch damit rechnen.
in der Übergabezelle steht jetzt die Ganzzahl ohne die Nachkommastellen.
Hat Jemand da einen Rat?

LG Micha

Code: Alles auswählen

sub ARTIKEL
dim document   as object  
oDoc=thisComponent
Sheet = odoc.sheets(2)
oCellCursor = Sheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
oCelle=oDoc.getCurrentSelection().getCellAddress()
' aktuelle Zeile, Index
oRow=oCelle.Row
Cell = Sheet.getCellByPosition(0, oRow)
Wert = Cell.string 
Cell = Sheet.getCellByPosition(1, oRow)
Wert1 = Cell.string
Cell = Sheet.getCellByPosition(3, oRow)
Wert2 = Cell.Value 

 anzahl=inputbox ("wieviel Stück?") ' hier ist mein Problem



Cell = Sheet.getCellByPosition(2, oRow) 
Cell.value = anzahl
Cell = Sheet.getCellByPosition(4, oRow) 
Cell.string = "ausgewählt"
Sheet = odoc.sheets(1) '[erstes Arbeitsblatt]
Cell = Sheet.getCellByPosition(3, 7) 
i=cell.value 

cell.value = i+1
i= i+14
Cell = Sheet.getCellByPosition(0, i)   
Cell.String = Wert 
Cell = Sheet.getCellByPosition(1, i)
Cell.String = Wert1
Cell = Sheet.getCellByPosition(2, i)
Cell.Value = anzahl
Cell = Sheet.getCellByPosition(3, i)
Cell.Value = Wert2
 
end Sub
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von clag »

Hallo Miki W,

das liegt an dem internen amerikanischen Zahlenformat und der Tatsache das die Inputbox einen String übergibt
wandle nach der Inputbox den String in einen Wert durch Austausch Komma gegen Punkt
oder gib gleich im amerikanischen Format in die Inputbox ein also Punkt statt Komma

Code: Alles auswählen

anzahl=inputbox ("wieviel Stück?")
anzahl = join(split(anzahl,","),".")

und gut ist
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Miki W
Beiträge: 6
Registriert: So, 17.07.2011 10:49

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von Miki W »

hallo clag,

hab ich eingefügt, aber leider bekomme ich immer noch eine Ganzzahl ohne Komma oder Punkt als wert raus.
Der String ändert sich von der Kommazahl in eine PunktZahl(string) aber in der Zelle steht die ganze Zahl.
LG Micha
mikeleb
*******
Beiträge: 1427
Registriert: Fr, 09.12.2011 16:50

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von mikeleb »

Hallo,

korrigiere den Code zu

Code: Alles auswählen

Cell.value = val(anzahl)
Gruß,
mikeleb
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von clag »

moin zusammen,

vielleicht liegt es an der OO Version

@ mikeleb
mein AOO4.1.1 will sich nicht dem val() nicht beugen ;) (das war auch mein erster Gedanke aber ..)

Code: Alles auswählen

Sub InputTest
	odoc=thisComponent
	oSheet = oDoc.sheets(0)
	oZelle = oDoc.getCurrentSelection()
	iStartCol = oZelle.RangeAddress.StartColumn
	iStartRow = oZelle.RangeAddress.StartRow

	anzahl=inputbox ("wieviel Stück?")

	msgbox	"blank     " & anzahl & chr(10)& _
			"VAL()     " & val(anzahl)  & chr(10)& _
			"replace  " &join(split(anzahl,","),".")
	
	osheet.getCellByPosition(iStartCol,iStartRow+0).value = anzahl 
	osheet.getCellByPosition(iStartCol,iStartRow+1).value = VAL(anzahl)
	osheet.getCellByPosition(iStartCol,iStartRow+2).value = join(split(anzahl,","),".") 

end sub
check_input_01.png
check_input_01.png (2.53 KiB) 3791 mal betrachtet
check_input_02.png
check_input_02.png (2.96 KiB) 3791 mal betrachtet
check_input_03.png
check_input_03.png (1.69 KiB) 3791 mal betrachtet
???
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von F3K Total »

... einer geht noch ...

Code: Alles auswählen

Cell.value = cDbl(anzahl)
Gruß R
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von Karolus »

Hallo
Nur so am Rand:
Wenn "unser" Eingabewert tatsächlich eine Stückzahl oder allgemeiner eine Anzahl representiert, ist es semantisch eine ganze Zahl und keine Kommazahl.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von clag »

Hallo

@ R
"cDbl" tut eindeutig besser oder gleich gut wie "replace"
wobei mir noch nicht einleuchtet wieso das bei Miki W nicht funktioniert

@ Karolus
das lag mir auch schon mal kurz auf den Fingerspitzen ...
deine Tastatur scheint da sensitiver zu reagieren ;)
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
mikeleb
*******
Beiträge: 1427
Registriert: Fr, 09.12.2011 16:50

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von mikeleb »

Hallo,

@clag: mein LO beugt sich dem val() auch nur, wenn die Eingabe englisch (Dezimaltrenner .) erfolgt. Also erst Komma durch Punkt ersetzen (soweit war das Makro ja schon) und dann val().
Bei cdbl() ist es mit Punkt und Komma gerade umgekehrt bzw. die Reaktion auf den aktuelle Spracheinstellung.
Gruß,
mikeleb
Miki W
Beiträge: 6
Registriert: So, 17.07.2011 10:49

Re: Eingabefeld in Kommazahlen umwandeln

Beitrag von Miki W »

Erstmal danke Ihr Lieben,

Ich habe das ausprobiert und dabei festgestellt, dass wenn ich eine Punktzahl eingebe, dann bekomme ich bei

Code: Alles auswählen

.....value = VAL(anzahl)
eine Kommazahl heraus.
Dann habe ich die Reihenfolge geändert und siehe da: freu geht :D
Bildschirmfoto-2.png
Bildschirmfoto-2.png (188.67 KiB) 3679 mal betrachtet
PS. Da die Anzahl teilweise Stunden sind will ich diese in der Form 7,5 oder 7,75 eingeben.

LG Miki
Antworten