BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Wertübernahme von Formular zu Formular

Alles zur Programmierung im LibreOffice.
Antworten
PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

(gelöst) Wertübernahme von Formular zu Formular

Beitrag von PeterF » Mi 14. Nov 2018, 13:13

Hallo Leute,
ich steck schon wieder fest.
Mit dem folgenden Makro möchte ich, dass die Kundennummer, die ich im Formular 'Kunden-Management' ausgewählt habe, beim Öffnen des Formulars 'Bestellungen-Test' in dessen Steuerungselement 'KundenTest' (Listbox) eingetragen wird.
Das ist erst einmal nicht kompliziert, doch möchte ich dabei, dass die ListSource der ListBox auf diese eine Kundennummer reduziert wird und der entsprechende Kunde mit seiner Adresse in einem Grid-Control angezeigt wird:

Code: Alles auswählen

Sub	Kundenmanagment_Bestellung
	Dim iKundenID As Long	
	Dim stSQL(0) As String
	Dim oFeld, oForm As Object
	oForm = ThisComponent.drawpage.forms.getByName("MainForm")
	iKundenID = oForm.getByName("fmtINDEX").BoundField.getString
		'msgbox "Kundennummer:  " & iKundenID
	stSQL(0) = "SELECT ""KundenID"" FROM ""Kunden"" WHERE ""KundenID"" = " &iKundenID
		'thisDatabaseDocument.FormDocuments.getByName("Kunden-Managment").close
	oFormDocBestell = thisDatabaseDocument.FormDocuments.getByName("Bestellungen-Test").Open
	wait(1000)
	oFormBestell = oFormDocBestell.drawpage.forms.getByName("FormBestell")
	oFeldKunde = oFormBestell.getByName("KundenTest")
	oSubKundenForm = oFormBestell.getByName("KundenForm")
	oFeldKunde.ListSource = stSQL
	oFeldKunde.refresh()
	oDocCtl = ThisComponent.getCurrentController()
	oElementKT = oFormBestell.getByName("KundenTest")
	'oElementKTView = oDocCtl.getControl(oElementKT)
	oFormBestell.reload()
	StarDesktop.CurrentComponent.CurrentController.getControl(oElementKT).SelectItem(iKundenID,True)
		'StarDesktop.CurrentComponent.CurrentController.getControl(oElementKT).SelectItem(iKundenID,False)
	oSubKundenForm.reload()
	oFormBestell.reload()
End Sub
Das Öffnen des Formulars und das Reduzieren des Inhaltes des ListBox funktioniert wie gewünscht.
Nur gelingt mir nicht, den einen Eintrag in der ListBox (Kundennummer) automatisch auszuwählen, damit ich das Grid-Control auf die Adreßinformationen des Kunden updaten kann.
Die Zeile
StarDesktop.CurrentComponent.CurrentController.getControl(oElementKT).SelectItem(iKundenID,True)
sollte eigentlich das erwünschte Ergebnis erzielen - dachte ich wenigstens.

Hat jemand eine zündende Idee :?: :arrow: :idea:

Danke im Voraus
Peter
Zuletzt geändert von PeterF am Fr 16. Nov 2018, 22:44, insgesamt 1-mal geändert.

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Wertübernahme von Formular zu Formular

Beitrag von F3K Total » Mi 14. Nov 2018, 17:42

Hallo,
versuche mal dieses:

Code: Alles auswählen

Sub	Kundenmanagment_Bestellung
	Dim iKundenID As Long	
	Dim stSQL(0) As String
	Dim oFeld, oForm As Object
	oForm = ThisComponent.drawpage.forms.getByName("MainForm")
	iKundenID = oForm.getByName("fmtINDEX").BoundField.getString
		'msgbox "Kundennummer:  " & iKundenID
	stSQL(0) = "SELECT ""KundenID"" FROM ""Kunden"" WHERE ""KundenID"" = " &iKundenID
		'thisDatabaseDocument.FormDocuments.getByName("Kunden-Managment").close
	oFormDocBestell = thisDatabaseDocument.FormDocuments.getByName("Bestellungen-Test").Open
	wait(1000)
	oFormBestell = oFormDocBestell.drawpage.forms.getByName("FormBestell")
	oFeldKunde = oFormBestell.getByName("KundenTest")
	oSubKundenForm = oFormBestell.getByName("KundenForm")
	oFeldKunde.ListSource = stSQL
	oFeldKunde.refresh()
	oDocCtl = oFormDocBestell.getCurrentController()
	oDocCtl.getControl(oFeldKunde).SelectItem(iKundenID,True)
End Sub
Ich denke, da du die iKundenID nicht speicherst, ist sie zwar kurz da, wird aber mit dem .reload des Formulares wieder gelöscht.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Wertübernahme von Formular zu Formular

Beitrag von PeterF » Mi 14. Nov 2018, 19:18

Hallo R,
das ist bisher das beste Ergebnis - ohne Fehlermeldung wird die Kundennummer in die Bestellungsformular eingetragen.
Super. Danke.
Als nächster Schritt sollte nun das Grid-Control die Adreßinfo der Kundennummer aktualisieren.

D.h. 'händisch' gehe ich im Formular "Bestellungen-Test"
  1. auf die ListBox "KundenTest" und wähle noch einmal die eingetragene Kundennummer aus
  2. Wähle in der Formular-Navigation 'Aktualisieren'
  3. Quittiere die Warnung 'Der Inhalt des aktuellen Formulars wurde geändert. Sollen die Änderungen gespeichert werden?' mit Ok
Wie bekomme ich die 3 Punkte automatisch hin?

Gruß
Peter

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Wertübernahme von Formular zu Formular

Beitrag von F3K Total » Do 15. Nov 2018, 17:04

Sorry,
aber aus meiner Sicht bist du da falsch unterwegs, ein Listenfeld kann schon die Kundendaten anzeigen und die ID schreiben.
Lade ein Beispieldokument hoch, dann kann dir eher geholfen werden.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Wertübernahme von Formular zu Formular

Beitrag von PeterF » Do 15. Nov 2018, 19:30

Hallo R,
da ist meine bisherige Programmierung.
Ist noch nicht aufgeräumt - doch vieles funktioniert schon...

Unter Formulare "Kunden-Management" öffnen, einen Kunden aussuchen (falsche Namen und Tel.-nummern, aber existierende Adressen), der Button "weiter zur Bestellung" öffnet das Formular "Bestellungen-Test".
Hier wird im Feld "Kunden-Test" die KundenID (über die Variable iKundenID) eingetragen und ausgewählt.
Was mir jetzt fehlt, ist dass das Tabellen-Kontrollfeld "tab_Kunden" nun für die ausgesuchte KundenID die entsprechenden Kundeninfos so aktualisiert, dass die oben erwähnten 3 Schritte entfallen.
Am Tabellen-Kontrollfeld rechts unten (tab_Bestellung) kann ich dann erkennen, ob es erfolgreich war, da es mit der Tabelle "Bestellungen" verbunden ist. Hier muss die neue KundenID auftauchen.
Das Zahlen-Pad in der Mitte funktioniert auch schon - ist für eine Touch-Pad-Eingabe gedacht.
Das "<-X" löscht die letzte Zahl der SpeisenID, "Zero" setzt sie auf Null. Buchstaben sind nötig, da mancher Artikel mit einem solchem anfängt.
Vielleicht ist es leichter, als es aussieht.

Vielen Dank im Voraus
Peter
Dateianhänge
LaBella_Beispiel.zip
(130.85 KiB) 166-mal heruntergeladen

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Wertübernahme von Formular zu Formular

Beitrag von F3K Total » Do 15. Nov 2018, 21:49

Es ist zu spät für lange Erklärungen, versuche es selbst zu verstehen.

Code: Alles auswählen

Sub	Kundenmanagment_Bestellung
	Dim iKundenID As Long	
	Dim oFeld, oForm As Object
	oForm = ThisComponent.drawpage.forms.getByName("MainForm")
	iKundenID = oForm.columns.KundenID.getint 'Kunden_ID auslesen
	oFormDocBestell = thisDatabaseDocument.FormDocuments.getByName("Bestellungen-Test").Open
        oFormBestell = oFormDocBestell.drawpage.forms.getByName("FormBestell")
	do
	    wait 100
	loop until oFormBestell.isloaded
	oFormBestell.movetoinsertrow'neuer Datensatz
	oFormBestell.columns.Kunden_ID.updateint(iKundenID)'Kunden_ID eintragen
	if oFormBestell.isnew then oFormBestell.insertRow else oFormBestell.updaterow'Datensatz speichern
End Sub
Nur eines: Ich habe der Datenbank per Extras/SQL...

Code: Alles auswählen

ALTER TABLE "Bestellungen" ALTER "Bestelldatum" SET DEFAULT CURRENT_TIMESTAMP
mitgeteilt, dass sie den aktuellen Zeitstempel als Bestelldatum automatisch einträgt.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Wertübernahme von Formular zu Formular

Beitrag von PeterF » Do 15. Nov 2018, 23:25

Hey R,

Direkt in die "Bestellungen" einzufügen, ist garantiert die beste Lösung.
Hatte ich auch mal kurz angepeilt - bin in meinem Ansatz halt stecken geblieben. ;)

Probiere ich morgen sofort aus.

Danke Dir für Deine Mühe.

Gruß
Peter

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Wertübernahme von Formular zu Formular

Beitrag von F3K Total » Fr 16. Nov 2018, 14:23

hatte ganz vergessen die geänderte Datei hochzuladen ...
Dateianhänge
LaBella_Beispiel.zip
(131.66 KiB) 180-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Wertübernahme von Formular zu Formular

Beitrag von PeterF » Fr 16. Nov 2018, 22:42

Hey, danke.

Die geänderte Datei funktioniert einwandfrei.

Super!!!

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten