❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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. 🤗

zwei unterschiedliche Werte in zwei Spalten schreiben

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Moerser01
Beiträge: 28
Registriert: Mo 3. Okt 2016, 18:01

zwei unterschiedliche Werte in zwei Spalten schreiben

Beitrag von Moerser01 » Mi 2. Nov 2016, 14:15

Kann ich im Eingabe Formular zwei Unterschiedliche Werte in die Tabelle in zwei verschiedene Zeilen schreiben lassen? Ich habe eine Tabelle "Gesamtdaten"und eine Tabelle "tbl_zeittyp" . In die Gesamtdaten-Tabelle schreibt mir tbl_zeittyp z. B Ein "U" .
Und ich schreibe in "Anspruch" z. B 28. Ich habe mir per Abfrage die Anzahl der "U" Anzeigen lassen und wollte diese von Sum "Anspruch" abziehen lassen. Bekomme aber Probleme mit der Beziehung zum Wert auf tbl_zeittyp. Deshalb habe ich mir gedacht das ich in einer anderen Spalte für jedes "U" eine "1" eintragen, und dann von einander abziehen. Funktioniert auch gut. Ist aber umständlich. Deshalb habe ich mir überlegt das wenn es geht das mir das Eingabefeld zwei Werte schreib. Ein "U" in "zeittyp_ID" und eine "1" in "genommen", beide in Tabelle "Gesamtdaten". Ist das überhaupt möglich? Oder muss ich doch auf den ersten Lösungsansatz zurückgehen?
Gruß Moerser01

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: zwei unterschiedliche Werte in zwei Spalten schreiben

Beitrag von Acco » Mi 2. Nov 2016, 16:44

Guten Tag Moerser01,

ich habe Schwierigkeiten Deine Beschreibung zu verstehen. Falls Du in ein Eingabefeld eines Formulars zwei Werte eingeben willst und diese Werte in zwei Spalten einer Tabelle eingetragen werden sollen, funktioniert dieses Makro:

Code: Alles auswählen

SUB SplitEingabe

	DIM oSplitFeld AS OBJECT
	DIM oForm AS OBJECT
	DIM SplitWert(1) ' ein Array mit max. 2 Werten
	DIM oDatenquelle AS OBJECT
	DIM oVerbindung AS OBJECT
	DIM oSQL_Anweisung AS OBJECT
	DIM stEintrag1 AS STRING

	oForm = ThisComponent.DrawPage.Forms.GetByName("Formular")  ' der Formularname muß angepasst werden
	oSplitFeld = oForm.getByName("SplitFeld")                   ' Name des Eingabefeldes in meinem Formular

	SplitWert()=Split(oSplitFeld.TEXT, ",")                     ' die durch Komma getrennten Werte werden aufgesplittet
	
	print SplitWert(0)       'gibt Wert 1 aus  -  nur zur Info, kann gelöscht werden
	print SplitWert(1)	    'gibt Wert 2 aus  -  nur zur Info kann gelöscht werden
	
	' Verbindung herstellen
	oDatenquelle = ThisComponent.Parent.DataSource	
	oVerbindung = oDatenquelle.GetConnection("","")
	oSQL_Anweisung = oVerbindung.createStatement()
	
	' Werte z.B. in Tabelle "Name" eintragen 
	stEintrag1 = "INSERT INTO ""Namen""(""Vorname"",""Name"") VALUES ('"+ SplitWert(0)+"','"+ SplitWert(1) +"')"
	oSQL_Anweisung.executeUpdate(stEintrag1)		
END SUB

Die Werte müssen durch ein Komma getrennt in das Eingabefeld geschrieben werden. Du kannst auch einen anderen Trenner im Makro festlegen.
Weiterführendes zu "Insert into" findest Du im Base-Handbuch.

Gruß acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1

Moerser01
Beiträge: 28
Registriert: Mo 3. Okt 2016, 18:01

Re: zwei unterschiedliche Werte in zwei Spalten schreiben

Beitrag von Moerser01 » Mi 2. Nov 2016, 19:12

Hallo acco

Danke für die schnelle antwort.
Ich weiß nicht ob das so geht da die eine Spalte eine ID für eine Beziehungstabelle ist und außer dem wenn ich zwei werte eingeben muß dann kann ich auch zwei Eingabefelder ins Eingabeformular einbauen (das ich ja so schon habe ) .

Ich versuche es noch mal zu erklären. ich habe eine Tabelle die sieht so aus.

und der zeittyp_Id ist mit eine Tabelle verbunden die "tbl_zeittyp "heißt in der steht "U" für Urlaub, oder "A"für Ausgang.

Im Eingabeformular gebe ich Urlaub ein und er schreibt mir ein "U" in die Tabelle Gesamtdaten.Zeittyp_ID.
Jetzt hätte ich gern das ich mir eine Eingabe spare das er mir eine "1" in die Tabelle Gesamtdaten.Urlaubverb. eine 1 mitreinschreib ohne das ich das selbst tun muß.

Gruß Moerser
Dateianhänge
Beziehungen.JPG
Beziehungen.JPG (34.26 KiB) 3446 mal betrachtet
Tabelle.JPG
Tabelle.JPG (44.3 KiB) 3446 mal betrachtet

Moerser01
Beiträge: 28
Registriert: Mo 3. Okt 2016, 18:01

Re: zwei unterschiedliche Werte in zwei Spalten schreiben

Beitrag von Moerser01 » Mi 2. Nov 2016, 19:47

Ps: Aber er soll nur eine "1" rein schreiben bei "Urlaub"

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: zwei unterschiedliche Werte in zwei Spalten schreiben

Beitrag von Acco » Fr 4. Nov 2016, 01:58

Hallo Moerser01,

ich verstehe nicht weshalb Du Urlaub "U" und Urlaubstage "1" in der Tabelle erfassen willst. "U" reicht völlig, wenn "U" immer gleich "1" ist. Spalte Urlaubsverbrauch wäre dann überflüssig.

Die Anzahl der Urlaubstage pro Mitarbeiter geht dann über eine Abfrage

Code: Alles auswählen

SELECT "ma_ID", COUNT( "zeittyp_ID" ) FROM "Gesamtdaten" WHERE "zeittyp_ID" = 'U' GROUP BY "ma_ID"
Die kannst Du ja um weitere Felder ergänzen, wie Name, Zeitraum, usw.

Falls Du unbedingt eine "1" bei Urlaubsverbrauch haben willst, beschäftige Dich mit dem Update-Befehl (z.B. im Handbuch oder hier im Forum zu finden). Der ist ähnlich wie der Insert-Befehl im Makro meines letzten Posts.

Gruß acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: zwei unterschiedliche Werte in zwei Spalten schreiben

Beitrag von Acco » Sa 5. Nov 2016, 11:49

Hallo Moerser01,

ein weiteres Problem bekommst Du hiermit:
Und ich schreibe in "Anspruch" z. B 28. Ich habe mir per Abfrage die Anzahl der "U" Anzeigen lassen und wollte diese von Sum "Anspruch" abziehen lassen.
Sum"Anspruch" addiert alle Einträge, steht zweimal 28 in der Spalte wird daraus 56, usw.. Außerdem müsstest Du jeden Tag für jeden Mitarbeiter den Urlaubsanspruch eingeben, oder über ein Makro errechnen lassen. Eleganter wäre, den Urlaubsanspruch der Tabelle Mitarbeiter zuzuordnen und im Formular "Mitarbeiter anlegen, bearbeiten" über ein Unterformular die verbrauchten Urlaubstage anzeigen zu lassen. In einem weiteren UnterUnterFormular kannst Du dann die Gesamtzahl des verbrauchten Urlaubs errechnen lassen.

Im angehängten Beispiel habe ich das mal gemacht. Die Unterformulare sind über die Mitarbeiter_IDs mit dem jeweils übergeordneten Formular verknüpft. Dazu habe ich für das Unterformular eine Abfrage "Ab_Urlaub" erstellt und für das UnterUnterFormular die bereits gepostete Abfrage mit dem "group by" Befehl eingebaut. Schau Dir mal an, ob dieser Vorschlag für Deine Zwecke geeignet ist.

Gruß acco
Dateianhänge
Arbeitszeiten_1.zip
(33.79 KiB) 235-mal heruntergeladen
openSUSE Tumbleweed - LibreOffice 24.8.2.1


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