🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Dialog - Format eines Datefields?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Dialog - Format eines Datefields?

Beitrag von MartinS » Di 1. Mär 2016, 11:37

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

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Dialog - Format eines Datefields?

Beitrag von RobertG » Di 1. Mär 2016, 20:11

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Dialog - Format eines Datefields?

Beitrag von MartinS » Di 1. Mär 2016, 21:15

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten