🙏 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. 🤗

GELÖST: GridControl: frischer Eintrag aktualisieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
ms-fu!
Beiträge: 22
Registriert: Mo 16. Jul 2012, 10:48

GELÖST: GridControl: frischer Eintrag aktualisieren

Beitrag von ms-fu! » Di 18. Jun 2013, 16:09

Hallo,

ich habe ein Tabellen-Steuerelement, wo ich eine neue Zeile erstelle und Werte eingebe. Eines der Felder ist ein AutoFeld. Habe ich alle restlichen Felder bearbeitet und führe dann einen Bericht aus, der eben diese eingegebene Zeile ausgeben soll, bekomme ich eine Fehlermeldung, da im AutoFeld noch <AutoFeld> anstelle des AutoWerts steht. Dieser Wert ist nämlich der Suchwert eines SQL Statements.
Wie kann man die Zeile per Makro aktualisieren so daß vor der Berichtserstellung der entsprechende AutoWert erstellt wird?

Ich habe schon diverse Tipps ausprobiert (oForm.unload()/.load(); .updateRow usw.) komme allerdings auf keinen grünen Zweig.
Screenshot GridControl
Screenshot GridControl
Screenshot-2013-06-18_16.23.40.png (5.44 KiB) 2545 mal betrachtet
Gruß
Michael
Zuletzt geändert von ms-fu! am Mi 19. Jun 2013, 08:13, insgesamt 1-mal geändert.

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

Re: GridControl: frischer Eintrag aktualisieren

Beitrag von RobertG » Di 18. Jun 2013, 20:06

Hallo Michael,

das hattest Du doch eigentlich schon gelöst:

Code: Alles auswählen

Sub NewRecord (oEv as object)
dim oForm as object
oForm = oEv.source.model.parent
Rem Akutelle Zeile speichern
If oForm.IsNew then
oForm.InsertRow
Else
oForm.UpdateRow
End if
	Filtern_und_Drucken
Rem Zur aktuellen Zeile springen
oForm.MoveToInsertRow
End sub

SUB Filtern_und_Drucken
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	DIM oFeld AS OBJECT
	DIM oDatenquelle AS OBJECT
	DIM oVerbindung AS OBJECT
	DIM oSQL_Anweisung AS OBJECT
	DIM stSQL AS STRING
	oDoc = thisComponent
	oDrawpage = oDoc.Drawpage
	oForm = oDrawpage.Forms.getByName("MainForm")
	oFeld = oForm.getByName("MainForm_Grid")
	oDatenquelle = ThisComponent.Parent.CurrentController
	If NOT (oDatenquelle.isConnected()) THEN
		oDatenquelle.connect()
	END IF
	oVerbindung = oDatenquelle.ActiveConnection()
	oSQL_Anweisung = oVerbindung.createStatement()
	stSql = "UPDATE ""Filter"" SET ""Integer"" = '"+oFeld.GetByIndex(4).GetCurrentValue()+"' WHERE ""ID"" = TRUE"
	oSQL_Anweisung.executeUpdate(stSql)
	ThisDatabaseDocument.ReportDocuments.getByName("Werkstoff_Bericht").open
END SUB
Filtern_und_Drucken wird gestartet, nachdem der Datensatz geschrieben wurde (in NewRecord). Bei mir klappt das mit einem Tabellenkontrollfeld und der obigen Makrofolge tadellos.

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

ms-fu!
Beiträge: 22
Registriert: Mo 16. Jul 2012, 10:48

Re: GridControl: frischer Eintrag aktualisieren

Beitrag von ms-fu! » Mi 19. Jun 2013, 08:13

Guten Morgen Robert,

meine Güte! Mal wieder ein typische "Layer 8" Problem. :roll:
Tatsächlich hatte ich irgendwann am Anfang die "New Record" Routine umgangen weil ich keinen Sinn darin sah und ich griff direkt auf "Filtern_und_Drucken" zu.

Entschuldigung für diesen unnötigen Thread!

Gruß
Michael


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