🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

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

Daten aus Eingabemaske in Tabelle ersetzen und berechnen [gelöst]

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Sugomojawe74
Beiträge: 14
Registriert: Do 26. Sep 2024, 17:44

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von Sugomojawe74 » Di 1. Okt 2024, 17:10

mikele hat geschrieben:
Di 1. Okt 2024, 16:34
das kommt von der Schnelle ...
Danke das ist perfekt.

hast du vielleicht etwas wo ich genauere Infos zur ComboBox finde, so wie du sie gebaut hast? Ich würde das gerne besser verstehen und versuchen nachzubauen.
Gruß Michael

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von mikele » Mi 2. Okt 2024, 10:57

Hallo,
eien Combobox ist ein Standardsteuerelement. Insofern habe ich es nicht extra gebaut, sondern nur eingefügt. Ich finde es praktisch, da dadruch neben Auswahl aus einer verdefinierten Liste an Werten auch freie Eingaben möglich sind.
Die Methoden und Eigenschaften sind in der API dokumentiert (auch wenn ich mich schwer tue diese zu lesen):
https://api.libreoffice.org/docs/idl/re ... boBox.html
Hier findest du aber auch Infos:
https://www.dannenhoefer.de/faqstarbasi ... boxen.html
und natürlich im Standardwerk "OpenOffice.org Macros explained" von Andrew Pitonyak (siehe auch http://www.pitonyak.org/oo.php) in der Übersetzung "BASIC-Makros für OpenOffice und LibreOffice" hier:
https://makromador.wordpress.com/oome-o ... explained/
Gruß,
mikele

Sugomojawe74
Beiträge: 14
Registriert: Do 26. Sep 2024, 17:44

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von Sugomojawe74 » Fr 18. Okt 2024, 19:58

@mikele

Ich habe jetzt einen Fehler gefunden. Wenn ich eine neue Menge eintragen möchte dann addiert er mit dem Bestand (E) das rechts neben dem Datum steht. Es müsste aber den Tagesaktuellen Bestand (I) zum addieren nehmen und neben das Datum (D) eintragen. Hoffe man versteht was ich meine.
Gruß Michael

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von mikele » So 20. Okt 2024, 21:19

Hallo,
dann muss die Zeile

Code: Alles auswählen

oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(4,zeile).value+menge
entsprechend angepasst werden. Da die Zählung mit 0 losgeht, kennzeichnet 4 die Spalte E. Die Spalte I ist dann die 8, also

Code: Alles auswählen

oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
Gruß,
mikele

Sugomojawe74
Beiträge: 14
Registriert: Do 26. Sep 2024, 17:44

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von Sugomojawe74 » So 20. Okt 2024, 21:28

mikele hat geschrieben:
So 20. Okt 2024, 21:19

Code: Alles auswählen

oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
Hallo Mikele,

so hatte ich das schon versucht. Ich bräuchte das so, es wird die Zahl aus Spalte I zu der neuen Anzahl des Medikaments addiert und das Ergebnis soll in Spalte E eingetragen werden.
Gruß Michael

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von mikele » So 20. Okt 2024, 22:14

Hallo,
Genau das sollte die Formel machen. Der Wert aus Spalte I wird mit der neuen Menge addiert und die Summe in Spalte E eingetragen.
Was passiert bei dir?
Gruß,
mikele

Sugomojawe74
Beiträge: 14
Registriert: Do 26. Sep 2024, 17:44

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von Sugomojawe74 » Mo 21. Okt 2024, 12:51

mikele hat geschrieben:
So 20. Okt 2024, 22:14
Was passiert bei dir?
Hallo Mikele,

bei mir wird der Wert aus Spalte E zu der neuen Menge addiert und in Spalte E eingetragen.
Gruß Michael

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von mikele » Mo 21. Okt 2024, 17:07

Hallo,
Mit der geänderten Codezeile ist das nicht möglich

Code: Alles auswählen

oTab.getCellByPosition(8,zeile).value+menge
Addiert den Wert in Spalte I mit der Variablen menge.
Gruß,
mikele

Sugomojawe74
Beiträge: 14
Registriert: Do 26. Sep 2024, 17:44

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von Sugomojawe74 » Mo 21. Okt 2024, 17:18

Einmal vor dem eintragen
Screenshot 2024-10-21 171337.png
Screenshot 2024-10-21 171337.png (49.06 KiB) 2425 mal betrachtet
und dann nach dem eintragen
Screenshot 2024-10-21 171353.png
Screenshot 2024-10-21 171353.png (49.94 KiB) 2425 mal betrachtet
Und der Code dazu

Code: Alles auswählen

Dim oDialog as object

Sub Main
	'Zugriff auf Dokument
	oDoc=ThisComponent	
	'aktuelle Tabelle
	oTab=oDoc.Sheets.getByName("Listen")
	'Bestimme letzte beutzte Zelle
	oCur=oTab.createCursor
	oCur.gotoEndOfUsedArea(False)
	n=oCur.rangeaddress.startrow+1
	'Zugriff auf Dialog
	DialogLibraries.loadLibrary( "Standard")
	oLib = DialogLibraries.getByName("Standard")
	oDialog = CreateUnoDialog(oLib.getByName("Dialog1"))
	'Setze aktuelles Datum - Wert und Textanzeige
	octrdate=odialog.getcontrol("DateField1")
	octrdate.date=cdatetounodate(now())
	octrdate.text=format(now(),"dd.mm.yy")
	'Fülle des Listenfeldes

	octrl=odialog.getcontrol("ListBox1")
	'alle Einträge löschen
	octrl.removeItems(0, octrl.getItemCount)
	'Daten  erfassen
	zeile=2
	med=oTab.getCellByPosition(1,zeile).string
	do while med<>""
		octrl.addItem(med,zeile-1)
		zeile=zeile+1
		med=oTab.getCellByPosition(1,zeile).string
	loop
	octrl=odialog.getcontrol("ComboBox1")
	'alle Einträge löschen
	octrl.removeItems(0, octrl.getItemCount)
	zeile=2
	menge=oTab.getCellByPosition(4,zeile).string
	do while menge<>""
		octrl.addItem(menge,zeile-1)
		zeile=zeile+1
		menge=oTab.getCellByPosition(4,zeile).string
	loop

	'Starte Dialog
	x=oDialog.execute
End Sub

sub uebernehmen
	datum=CDateFromUnoDate(odialog.getcontrol("DateField1").Date)
	med=odialog.getcontrol("ListBox1").SelectedItem
	menge=val(odialog.getcontrol("ComboBox1").text)
	oTab=ThisComponent.Sheets.getByName("Übersicht Bestand")
    zeile=2
	tab_med=oTab.getCellByPosition(1,zeile).string
	gefunden=false
	do while tab_med<>"" and not gefunden
		if med=tab_med then
			gefunden=true
			oTab.getCellByPosition(3,zeile).value=datum
			oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
		end if	
		zeile=zeile+1
		tab_med=oTab.getCellByPosition(1,zeile).string
	loop
	
end sub

Gruß Michael

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Daten aus Eingabemaske in Tabelle ersetzen und berechnen

Beitrag von mikele » Mo 21. Okt 2024, 19:57

Hallo,
da die Spalte I eine Formel enthält, die den aktuellen Bestand aus dem Datum berechnet, geht es so schief.
Vertausche die Codezeile mit der vorhergehenden. Dadurch wird erst der neue Bestand korrekt bestimmt und dann erst das Datum gesetzt.

Code: Alles auswählen

oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
oTab.getCellByPosition(3,zeile).value=datum
Gruß,
mikele


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