Seite 1 von 1

Dialog - Format eines Datefields?

Verfasst: Di 1. Mär 2016, 11:37
von MartinS
hiho,

ich versuche grade über einen Dialog ein Datum einzugeben. und dieses dann in eine Tabelle zu schreiben.
Der folgende code wird beim klicken auf ok ausgeführt.

Code: Alles auswählen

Sub Dlg_Buchungsbeleg_ok

	DIM oDatenquelle AS OBJECT
	DIM oVerbindung AS OBJECT
	DIM oSQL_Anweisung AS OBJECT
	DIM stSQL AS STRING
	DIM oDate1 AS Date
	DIM oDate2 AS Date
	
	oDate1 = DateValue(oDlg_Buchungsbeleg.getControl("DateField1").Text )
	oDate2 = CDateFromUnoDate(oDlg_Buchungsbeleg.getControl("DateField2").Date )
	
	oDatenquelle = ThisComponent.Parent.CurrentController
	If NOT (oDatenquelle.isConnected()) THEN
		oDatenquelle.connect()
	END IF
	oVerbindung = oDatenquelle.ActiveConnection()
	oSQL_Anweisung = oVerbindung.createStatement()
	stSql = "UPDATE `Filter_Bericht` SET `BB_Datum_01` = '"+oDate1+"' WHERE `ID` = TRUE"
	oSQL_Anweisung.executeUpdate(stSql)
    stSql = "UPDATE `Filter_Bericht` SET `BB_Datum_02` = '"+oDate2+"' WHERE `ID` = TRUE"
	oSQL_Anweisung.executeUpdate(stSql)
	
	'ThisDatabaseDocument.ReportDocuments.getByName("05_Buchungsliste").open
    oDlg_Buchungsbeleg.endExecute()
End Sub
in dem code werden 2 datumsfelder ausgelesen mit unterschiedlichen Möglichkeiten.

Beide liefern Werte, nur leider in einem falschen Format.
(aus z.B. 28.02.16 wird 20.02.28 , woher dabei die 20 kommt: kA)

Die zugrundeliegend DAtenbank ist mySQL.

Woran muss ich drehen das ich ein korrektes Datum in die Tabelle bekomme?

TIA

MartinS

Re: Dialog - Format eines Datefields?

Verfasst: Di 1. Mär 2016, 20:11
von RobertG
Hallo MartinS,

bevor Du ein Datum an einen SQL-Befehl weitergibst muss das Datum in das Format YYYY-MM-DD umgewandelt werden.

Mit Dialogen habe ich nicht so die große Erfahrung, aber hier ein Beispiel aus einem Formular:
Mit

Code: Alles auswählen

stMonat = Right(Str(0) & Str(oFeld.CurrentValue.Month),2)
stTag = Right(Str(0) & Str(oFeld.CurrentValue.Day),2)
stJahr = oFeld.CurrentValue.Year
werden die einzelnen Bestandteile eines Datumfeldes (seit LO 4.1) ausgelesen.
Anschließend musst Du die Datumsbestandteile neu kombinieren:

Code: Alles auswählen

stSQLDatum = stJahr & "-" & stMonat & "-" & stTag
Dieses Datum kann anschließend weiter in dem SQL-Befehl verwandt werden.

Gruß

Robert

Re: Dialog - Format eines Datefields?

Verfasst: Di 1. Mär 2016, 21:15
von MartinS
Danke für die Hinweise.

Ich hab das ganze aber jetzt ohne Dialog direkt im Formular gelöst.

War jetzt die einfacherer und letztlich auch übersichtlichere Lösung.

Formulare sind da um Längen besser handelbar....Datefield gemacht, Tabellenfeld zugeordnet, fertig.

MartinS