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)
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...)