GELÖST Datumsfeld aus Formular konvertieren

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: GELÖST Datumsfeld aus Formular konvertieren

Re: Datumsfeld aus Formular konvertieren

von WSO » Sa, 17.05.2014 11:23

Hey danke: der Wald und die Bäume ...
habe wohl zu oft da drauf geschaut.
Jetzt geht's natürlich
Dank und Gruss,
WSO

Re: Datumsfeld aus Formular konvertieren

von F3K Total » Sa, 17.05.2014 11:18

Hi,
das Struct heißt
.Date
Gruß R

Fehler: DIM dDate as new com.sun.star.util.date ?

von WSO » Sa, 17.05.2014 11:09

Aus mir nicht nachvollziebaren Gruenden läuft:
DIM dDate AS new com.sun.star.util.date unter LO 4.2 auf einen Fehler:

Kein Zugriff auf Objekt.
Ungültige Objektreferenz.

Code: Alles auswählen

SUB TestDate
		DIM oDoc AS OBJECT	
		DIM oDrawpage AS OBJECT   	
		DIM oForm AS OBJECT
		DIM oFeld AS OBJECT			
		DIM stdDate AS STRING
	
    	        DIM dDate as new com.sun.star.util.date

		oDoc=thisComponent
		oDrawpage=oDoc.Drawpage			
		oForm=oDrawpage.Forms.getByName("Formular1")
		oFeld = oForm.getByName("Datum")
		dDate = oFeld.getCurrentValue
		stdDate = getyyyymmmttFromFormDate(dDate)		
END SUB
Bin auch nacch einer Nacht drüber schlafen völlig ratlos.
Was ist denn daran falsch?
Gruss,
WSO

Re: Datumsfeld aus Formular konvertieren

von Karolus » Fr, 16.05.2014 18:31

Hallo

Nein, ich hab falsch kopiert, richtig wäre

cDateToIso( cDateFromUnoDate( d ))

!!! Anscheinend gibts cDateFromUnoDate nur in Libreoffice, ok in AOO müsstst du arbeiten mit:

Code: Alles auswählen

cDateToIso( DateSerial( d.Year, d.Month, d.Day))
Karolus

Re: Datumsfeld aus Formular konvertieren

von WSO » Fr, 16.05.2014 17:55

und Basic meint zu :

Code: Alles auswählen

stDate=cDateToIso( cDateFromUno( dDate ))
die sub oder functionsprozedur sei nicht definiert.
Fehlt mir da vielleicht eine library?

Datumsfeld aus Formular geht nicht mehr

von WSO » Fr, 16.05.2014 17:49

Hallo Karolus,
wollte jetzt das "cDatweToISO" einbauen, aber
jetzt bekomme ich beim DIM dDate den Fehler "Kein Zugriff auf Objekt ungueltige Objektreferenz" !"
Was habe ich mir denn da zerschossen?????

Code: Alles auswählen

SUB TestDate

		DIM oDoc AS OBJECT	
		DIM oDrawpage AS OBJECT   	
		DIM oForm AS OBJECT
		DIM oFeld AS OBJECT		
	
		[color=#0000FF]DIM dDate AS new com.sun.star.util.date[/color]
		DIM stdDate AS STRING
Gruss,
WSO

Re: Datumsfeld aus Formular konvertieren

von WSO » Fr, 16.05.2014 11:32

Danke, nach dem Befehl habe ich vergeblich gesucht ...

Re: Datumsfeld aus Formular konvertieren

von Karolus » Fr, 16.05.2014 11:04

Hallo

Ich würde zumindest ins Iso-format 'yyyy-mm-dd' konfertieren, und die eingebauten runtime-funktionen verwenden:

Code: Alles auswählen

cDateToIso( cDateFromUno( d ))
Karolus

GELÖST Datumsfeld aus Formular konvertieren

von WSO » Fr, 16.05.2014 10:18

Hallo Forum,
arbeitet man mit makros, stellt sich bald die Frage, wie konvertiere ich Datumsfelder aus den Formulaten möglichst effizient für Eingabeprüfungen, Vergleiche etc.
Da ich keine Standardfunktion (oO 4.2, Win 7) dafür finden konnte, habe ich mir Folgendes gebastelt:
a) exemplarischer Aufruf der Konvertierungsroutine:

Code: Alles auswählen

SUB FormLesen

	DIM oDoc AS OBJECT	
	DIM oDrawpage AS OBJECT   	
	DIM oForm AS OBJECT
	DIM oFeld AS OBJECT
	
	DIM dDate AS NEW com.sun.star.util.DATE
	DIM stdDate AS STRING
	
	oDoc=thisComponent
	oDrawpage=oDoc.Drawpage			
	oForm=oDrawpage.Forms.getByName("Formular1")
	oFeld = oForm.getByName("Datum")
	dDate = oFeld.getCurrentValue	
	stdDate=  FormDate_2_yyyymmmtt(dDate)
END SUB
b) die Routine zur Konvertierung

Code: Alles auswählen

FUNCTION FormDate_2_yyyymmmtt (d AS  NEW com.sun.star.util.DATE)
REM      Konvertiert ein Datumsfeld im Formular in ein STRING YYYYMMTT           

	DIM stNull AS STRING
    stNull = "00000000"
    
    IF NOT IsEmpty(d) THEN			
			itt =  d.day
			imm =  d.month
			iyyyy =d.year
	
			IF itt < 10 THEN
					stt = "0" + itt
				else
					stt = itt
			END IF	
			IF imm < 10 THEN
					smm = "0" + imm
				else
					smm = imm
			END IF	
			syyyy = iyyyy
			FormDate_2_yyyymmmtt = syyyy + smm + stt
		ELSE
			FormDate_2_yyyymmmtt = stNull
	END IF
END FUNCTION   
Bevor ich das (funktiomiert gut) jetzt massenhaft in die Anwendung einbaue. Frage an euch:
Gibt es elegantere Möglichkeiten?
Guss,
WSO

Nach oben