Funiktionsspezifikation geändert in OOo3 (string)

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Funiktionsspezifikation geändert in OOo3 (string)

Re: Funiktionsspezifikation geändert in OOo3 (string)

von KDO » Di, 07.10.2008 12:54

Hallo

Hier ein Auszug aus der Hilfe von OO3:
Format-Funktion [Laufzeit]
Wandelt eine Zahl in eine Zeichenkette um und formatiert diese dann entsprechend dem von Ihnen angegebenen Format.
Syntax:
Format (Zahl [, Format As String])
Rückgabewert:
String
Parameter:
Zahl: Ein beliebiger numerischer Ausdruck, den Sie in eine formatierte Zeichenkette konvertieren möchten.
Format: Zeichenkette, die den Formatcode für die Zahl festlegt. Wird Format nicht angegeben, so verhält sich die Funktion Format so wie die Funktion Str.
Du hast in deiner fehlerhaften Zeile dies nun zweifach versucht.
"Format" wandelt eine Zahl in eine Zeichenkette (String), unter der Verwendung eines Formatcodes.
"STR" wandelt eine Zahl in eine Zeichenkette (String) ohne Verwendung eines Formatcodes. !!

So müßte deine Zeile funktionieren:

format(iJahr,sJFmt)&format(iMon,sMFmt)&format(iNr,sNFmt)

Hoffe das hilft dir weiter

Klaus Osigus

Funiktionsspezifikation geändert in OOo3 (string)

von hempelr » Sa, 04.10.2008 19:10

Benutze seit Jahren die EÜR von Uwe Schlenther (einfach Einnahmen-Überschussrechnung), hab mir selbst einiges dazu gebaut (allerdings ohne die Makros zu verändern, "nur" noch ein paar Auswertetabellen).
Nun will ich das Ding auch unter OOo 3 RC3 zum Laufen bringen. Die Fehler in der Funktion Adresse, die die Entwickler eingebaut hatten, hab ich rausgepopelt und meinte, nun gehe alles (der 10. des neuen Quartals steht bevor und da sitzt einem das FA im Nacken...)
Aber Pustekuchen.
Die Belegnummernfunktion hat ne Macke, ich hab nun in den letzten 5 Stunden mühsam einen Workaround gebaut.
Was ist da nun wieder anders geworden? Kann man tatsächlich Makros und Basic-Routinen bei jeder neuen Version nur durch hohen Aufwand und Sysiphusarbeit wieder zum Laufen bringen (dabei ist dann das ganze noch eher wie ein Stochern im Trüben, ist doch das StarBasic eher mies bis garnicht dokumentiert, zum Glück hatte ich mir mal paar Bücher dazu vor Jahren gekauft, so dass da wenigstens ne Funktionsreferenz vorlag...So richtig Foren und Austauschplattformen für Programmieranfänger gibts ja leider für OOo-Basic respektive StarBasic leider nicht - im Gegensatz zu kommerziellen Produkten...)

Also, folgendes funktioniert nicht mehr:

Code: Alles auswählen

function neuBeleg(nr as string,inc as integer,optional fmtstr as string) as string
	dim iJahr  As Integer
	dim iJLen as integer
	dim iMon  As Integer
	dim iMLen as integer
	dim iNr As Integer
	dim iNLen as integer
	dim sJFmt as string
	dim sMFmt as string
	dim sNFmt as string
	'Nummernteile als Strings einzeln generieren, für OOo3
	dim sJar as string
	dim sMon as string
	dim sNr as string
	dim sResult as string
	
	
	if isMissing(fmtstr) then
		' Formatdefinitionen holen
		iJLen=oCCTab.getCellRangeByName(cStatColumn+cJFmtRow).value
		iMLen=oCCTab.getCellRangeByName(cStatColumn+cMFmtRow).value
		iNLen=oCCTab.getCellRangeByName(cStatColumn+cNFmtRow).value
	else
		'Lib: Tools, Mod: strings,CountCharsinString(BigString, LocChar as String, ByVal StartPos as Integer) as Integer
		iJLen=CountCharsinString(fmtstr,"J",1)
		iMLen=CountCharsinString(fmtstr,"M",1)
		iNLen=CountCharsinString(fmtstr,"n",1)
	end if
	'Jahr max. 4stellig
	if iJLen > 4 then
		iJLen=4
	end if
	'Monat max. 4stellig
	if iMLen > 4 then
		iMLen=4
	end if
	'Formatstrings erstellen
	sJFmt = string(iJLen,"0")
	sMFmt = string(iMLen,"0")
	sNFmt = string(iNLen,"0")
	
	sFormatInfo=string(iJLen,"J") & string(iMLen,"M") & string(iNLen,"n")
	'Gibts schon eine Belegnummer?
	if nr =  "" then 'Nein, erstelle Neue aus aktuellem Datum
		iJahr=year(date())
		iJahr=val(mid(str(iJahr),len(str(iJahr))-iJLen+1,iJLen)) 
		iMon=month(date())
		iNr = inc
		if iNr <= 0 then
			iNr=1
		end if
               sResult=format(str(iJahr),sJFmt)&format(str(iMon),sMFmt)&format(str(iNr),sNFmt) 
Das in OOo3 auftretende Problem ist die Belegung der Teile für den Zusammengesetzten String sResult.
Wenn der Parameter des Formatstrings fehlt, wird auch ein String zurückgegeben und zwar so, als wäre nur die Funtkion string() über den Zahlwert gelaufen.
In OOo2 wird in dem Fall ein leerer String zurückgegeben.
Nun die Frage: Neue Funktionsdeklaration für die Funktion format() oder falsche Anwendung der Entwickler der Anwendung?
Was hat sich noch so alles geändert und welche Überraschungen könnten noch so kommen? Wo gibts ne gute deutschsprachige Dokumentation mit Beispielen auf für Anfänger von OOo/StarBasic in der neuesten Ausprägung in OOo3?

Danke für TIpps und vielleicht kommt es ja zu ner kleinen Community, die offen und frei ein paar kleine Anwendungen in OOo-Basic baut / erklärt / diskutiert. Ein paar Anregungen hätte ich schon (aus dem persönlichen Bedarf heraus...)

Nach oben